AdaControl

Last updated
AdaControl
Developer(s) Adalog
Written in Ada with ASIS
Operating system Microsoft Windows, Linux, Mac OS X
Available inEnglish
Type Static code analysis
License GMGPL
Website www.adalog.fr/en/adacontrol.html

AdaControl is a free tool licensed under the GMGPL that detects the use of various kinds of constructs in Ada programs and violations of programming style or design patterns. Detectable constructs range from the presence of control characters, naming dependencies, and if statements that could be replaced by switch statements; depth of calls and declarations that could be moved into an inner scope; to calls to normally paired operations, elaboration calls, side effects in instantiations, and calls to potentially blocking operations. [1]

Contents

The software was created and is maintained by Adalog and only distributed as source. It was created for Eurocontrol to help develop a program to manage Europe's air traffic.

History

The development of AdaControl by Adalog started in 2004, under a contract of Eurocontrol, [2] which developed the CFMU ( Central Flow Management Unit  [ fr ]), a million+ lines of code program (in Ada) to manage Air Traffic over Europe. Only automated tools could verify compliance of a program of that size to programming standards.

Since Eurocontrol had no interest in commercializing software, it was decided to release AdaControl as free software. This had the benefit of helping the Ada community at large, and at the same time, allowed Eurocontrol to enjoy further improvements made by the community. Later, other companies sponsored further development, creating a virtual consortium effect. [3]

Features

AdaControl applies a set of controls to a set of Ada units. A control is defined by a rule (and possibly a subrule) with appropriate parameters. Controls (as well as various commands used to adjust the behaviour of the program) are provided directly from the command line, from a file, or interactively.

There is a wide range of controls available. As of current version(1.22r16c), there are 591 tests that can be performed by AdaControl. The number increases with each new release. [4]

In addition, AdaControl provides suggestions of fixes for a number of violations. [5] When AdaControl is launched from the GPS environment, the fixes can be performed by clicking on an icon, just like for compiler messages. A companion tool can also apply all suggested fixes automatically. [6]

Adacontrol is written in Ada, using ASIS for syntactic and semantic analysis. This gives the tool the same level of language accuracy as the underlying compiler. [7] An European Commission evaluation found that this "makes the application consume a lot of resources (processor, disk, and memory)." [1]

Great care has been taken to make the tool easily extensible by the user. [8]

Related Research Articles

<span class="mw-page-title-main">Ada (programming language)</span> High-level programming language first released in 1980

Ada is a structured, statically typed, imperative, and object-oriented high-level programming language, inspired by Pascal and other languages. It has built-in language support for design by contract (DbC), extremely strong typing, explicit concurrency, tasks, synchronous message passing, protected objects, and non-determinism. Ada improves code safety and maintainability by using the compiler to find errors in favor of runtime errors. Ada is an international technical standard, jointly defined by the International Organization for Standardization (ISO), and the International Electrotechnical Commission (IEC). As of May 2023, the standard, called Ada 2022 informally, is ISO/IEC 8652:2023.

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.

In computer science, static program analysis is the analysis of computer programs performed without executing them, in contrast with dynamic program analysis, which is performed on programs during their execution in the integrated environment.

A software bug is a bug in computer software.

In computer science, program analysis is the process of automatically analyzing the behavior of computer programs regarding a property such as correctness, robustness, safety and liveness. Program analysis focuses on two major areas: program optimization and program correctness. The first focuses on improving the program’s performance while reducing the resource usage while the latter focuses on ensuring that the program does what it is supposed to do.

System software is software designed to provide a platform for other software. Examples of system software include operating systems (OS).

The following outline is provided as an overview of and topical guide to software engineering:

A programming tool or software development tool is a computer program that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs, that can be combined to accomplish a task, much as one might use multiple hands to fix a physical object. The most basic tools are a source code editor and a compiler or interpreter, which are used ubiquitously and continuously. Other tools are used more or less depending on the language, development methodology, and individual engineer, often used for a discrete task, like a debugger or profiler. Tools may be discrete programs, executed separately – often from the command line – or may be parts of a single large program, called an integrated development environment (IDE). In many cases, particularly for simpler use, simple ad hoc techniques are used instead of a tool, such as print debugging instead of using a debugger, manual timing instead of a profiler, or tracking bugs in a text file or spreadsheet instead of a bug tracking system.

<span class="mw-page-title-main">Ada Semantic Interface Specification</span> Interface

The Ada Semantic Interface Specification (ASIS) is a layered, open architecture providing vendor-independent access to the Ada Library Environment. It allows for the static analysis of Ada programs and libraries. It is an open, published interface library that consists of the Ada environment and their tools and applications.

DDC-I, Inc. is a privately held company providing software development of real-time operating systems, software development tools, and software services for safety-critical embedded applications, headquartered in Phoenix, Arizona. It was first created in 1985 as the Danish firm DDC International A/S, a commercial outgrowth of Dansk Datamatik Center, a Danish software research and development organization of the 1980s. The American subsidiary was created in 1986. For many years, the firm specialized in language compilers for the programming language Ada.

<span class="mw-page-title-main">ARTAS</span>

ARTAS is a system designed by Eurocontrol to operationally support Aerial surveillance and Air traffic control by establishing an accurate Air Situation Picture of all traffic over a pre-defined geographical area and then distributing the relevant surveillance information to a community of user systems.

<span class="mw-page-title-main">RMCDE</span>

RMCDE is the name of a system designed to distribute the surveillance information to a community of user systems.

<span class="mw-page-title-main">CIMACT</span>

CIMACT is EUROCONTROL's Civil-Military Air Traffic Management Co-ordination Tool.

MALPAS is a software toolset that provides a means of investigating and proving the correctness of software by applying a rigorous form of static program analysis. The tool uses directed graphs and regular algebra to represent the program under analysis. Using the automated tools in MALPAS an analyst can describe the structure of a program, classify the use made of data and provide the information relationships between input and output data. It also supports a formal proof that the code meets its specification.

SQALE is a method to support the evaluation of a software application source code. It is a generic method, independent of the language and source code analysis tools, licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported license. Software editors can freely use and implement the SQALE method.

AbsInt is a software-development tools vendor based in Saarbrücken, Germany. The company was founded in 1998 as a technology spin-off from the Department of Programming Languages and Compiler Construction of Prof. Reinhard Wilhelm at Saarland University. AbsInt specializes in software-verification tools based on abstract interpretation. Its tools are used worldwide by Fortune 500 companies, educational institutions, government agencies and startups.

TeleSoft, Inc. was an American software development company founded in 1981 and based in San Diego, California, that specialized in development tools for the Ada programming language.

<span class="mw-page-title-main">TLD Systems</span>

TLD Systems, Ltd. was an American software company active in the 1980s and 1990s and based in Torrance, California, that specialized in language compilers for the JOVIAL and Ada programming languages that were targeted to embedded systems.

References

  1. 1 2 Deprez, Jean-Christophe; Ruiz, Jose; Herraiz, Israel; Garcia Campos, Carlos (2003-03-21), Iese, Fraunhofer (ed.), Evaluation Report on Existing Tools and Existing F/OSS repositories, The QUALOSS Consortium, p. 27, retrieved 2024-06-04
  2. "Use of Free Software in European Air Traffic Flow Management [slide presentation]" (PDF). Eurocontrol. 2005. p. 28.
  3. Rosen, Jean-Pierre (December 2005). "On the benefits for Industrials of Sponsoring Free Software Development" (PDF). Ada User Journal. 26 (4): 308-311.
  4. AdaControl User's Guide
  5. Andersen, Jacob Sparre (June 2010). An Efficient Implementation of Persistent Objects. Reliable Software Technologies - Ada Europe 2010. Valencia. p. 274. Although the technique does not require external tool support, the use of the technique will be safer with tool support. An obvious choice would be to add the required rule to AdaControl.
  6. Rosen, Jean-Pierre; Van-Den-Hende, Jean-Christophe (September 2016). "Using Ada's Visibility Rules and Static Analysis to Enforce Segregation of Safety Critical Components" (PDF). Ada User Journal. 37 (3): 149. This can be checked by manual inspection; however AdaControl is also able to check these automatically, which is always preferable to human (and therefore fallible) inspection.
  7. Coq, Thierry; Rosen, Jean-Pierre (2011). The SQALE Quality and Analysis Models for Assessing the Quality of Ada Source Code. Reliable Software Technologies – Ada-Europe 2011. Edinburgh. p. 67. doi:10.1007/978-3-642-21338-0. ISBN   978-3-642-21337-3. Since it is an ASIS tool, its analysis on the language is based on the same technology as the compiler, thus increasing the confidence that the tool processes the language correctly.
  8. AdaControl Programmer's Manual

As of 08 December 2021, this article is derived in whole or in part from Adalog. The copyright holder has licensed the content in a manner that permits reuse under CC BY-SA 3.0 and GFDL. All relevant terms must be followed.The original text was at "AdaControl"

  1. "Reliable Software Technologies – Ada-Europe 2017". Conference proceedings. Vienna: Springer. June 2017. p. V-VI. The conference program also included nine industrial contributions arranged in three industrial presentation sessions.... The industrial program featured the following presentations: ... "Introducing Static Analysis to a Mature Project," Jacob Sparre Andersen, JSA Research & Innovation, Denmark
  2. Andersen, Jacob Sparre (June 2017). "Introducing static analysis to a mature project" (PDF). Abstracts: Industrial Presentations. Reliable Software Technologies – Ada-Europe 2017. Vienna. p. 8.