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, which developed the CFMU (Central Flow Management Unit), 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. [2]

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. [3]

In addition, AdaControl provides suggestions of fixes for a number of violations. 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.

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[ citation needed ]. 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. [4]

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.

<span class="mw-page-title-main">Software</span> Non-tangible executable component of a computer

Software is defined narrowly as unambiguous instructions that can be transformed into a form executable on computer hardware, or more broadly including supporting concepts, tools and methods needed to make the computer system operational.

In computing, a compiler is a computer program that translates computer code written in one programming language into another language. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a low-level programming language to create an executable program.

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.

A software bug is a bug in computer software.

<span class="mw-page-title-main">Design by contract</span> Approach for designing software

Design by contract (DbC), also known as contract programming, programming by contract and design-by-contract programming, is an approach for designing software.

<span class="mw-page-title-main">Source Mage</span> Linux distribution

Source Mage is a source-based Linux distribution descended from Sorcerer. Components of this operating system are downloaded as source code and compiled locally on the user's computer.

In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, most commonly to design ASICs and program FPGAs.

Software development is the process used to create software. Programming and maintaining the source code is the central step of this process, but it also includes conceiving the project, evaluating its feasibility, analyzing the business requirements, software design, testing, to release. Software engineering, in addition to development, also includes project management, employee management, and other overhead functions. Software development may be sequential, in which each step is complete before the next begins, but iterative development methods where multiple steps can be executed at once and earlier steps can be revisited have also been devised to improve flexibility, efficiency, and scheduling.

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

A patch is a set of changes to a computer program or its supporting data designed to update or repair it. This includes bugfixes or bug fixes to remove security vulnerabilities and correct bugs (errors). Patches are often written to improve the functionality, usability, or performance of a program. The majority of patches are provided by software vendors for operating system and application updates.

Software prototyping is the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed. It is an activity that can occur in software development and is comparable to prototyping as known from other fields, such as mechanical engineering or manufacturing.

Web accessibility, or eAccessibility, is the inclusive practice of ensuring there are no barriers that prevent interaction with, or access to, websites on the World Wide Web by people with physical disabilities, situational disabilities, and socio-economic restrictions on bandwidth and speed. When sites are correctly designed, developed and edited, more users have equal access to information and functionality.

Application security includes all tasks that introduce a secure software development life cycle to development teams. Its final goal is to improve security practices and, through that, to find, fix and preferably prevent security issues within applications. It encompasses the whole application life cycle from requirements analysis, design, implementation, verification as well as maintenance.

<span class="mw-page-title-main">GNU General Public License</span> Series of free software licenses

The GNU General Public License is a series of widely used free software licenses, or copyleft, that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general use and was originally written by Richard Stallman, the founder of the Free Software Foundation (FSF), for the GNU Project. The license grants the recipients of a computer program the rights of the Free Software Definition. The licenses in the GPL series are all copyleft licenses, which means that any derivative work must be distributed under the same or equivalent license terms. It is more restrictive than the Lesser General Public License and even further distinct from the more widely-used permissive software licenses such as BSD, MIT, and Apache.

In engineering, debugging is the process of finding the root cause of and workarounds and possible fixes for bugs.

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">CIMACT</span>

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

In computer science, language-based security (LBS) is a set of techniques that may be used to strengthen the security of applications on a high level by using the properties of programming languages. LBS is considered to enforce computer security on an application-level, making it possible to prevent vulnerabilities which traditional operating system security is unable to handle.

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. On the benefits for Industrials of Sponsoring Free Software Development
  3. AdaControl User's Guide
  4. 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"