Long Live Ada!

Bill McCaffrey

April 26, 2016

If you’ve heard some of the myths over the years proclaiming that Ada is “dead” or “outdated,” you may have developed some misconceptions. However, the Ada programming language is in fact alive and well, as can be confirmed by many developers of safety- and mission-critical embedded software systems worldwide.

Ada was initially developed to provide a primary language for the United States Department of Defense. As such, Ada has and continues to be heavily used in critical systems for military and defense, avionics, and air traffic management. Ada is also now commonly used in many other industries that require high reliability or safety-critical applications such as financial systems, satellites, and railway control among others. A sampling of these high-profile applications includes:

  • Flight software for Lunar IceCube, a 6-Unit CubeSat mission sponsored by NASA through the NextSTEP initiative designed to search for water, ice and other resources from above the surface of the moon.
  • The Core Ground System (CGS) that forms the basis to operate Columbus laboratory, Europe’s largest contribution to the International Space Station.
  • The GIRAFFE project, a family of land and naval radar-based surveillance and air defense command and control systems.
  • Raytheon’s Ship Self-Defense System (SSDS) Mk 2 combat system that integrates and coordinates the sensors and weapons systems aboard a US Naval vessel to provide a coherent tactical picture for situational awareness, command and controls, and quick-reaction self-defense.
  • Digicomp air surveillance and control system used for weapons control, bombing range safety, and surveillance.
  • The C130 J Flight Management System developed cooperatively by GE Aviation and Lockheed Martin Aeronautics.
  • 787’s Common Core System, which is the backbone of the airplane’s computers, networks and interfacing electronics that comprises approximately 80 to 100 applications running simultaneously to control avionics and utilities functions.
  • The Air Data Inertial Reference Unit (ADIRU) for the Airbus A350 XWB that provides precise in-flight positioning information.
  • Siemens railway control and information systems.
  • SmartSide Smart Grid management solutions.

These examples aren’t simply upgrades of legacy projects based on Ada; many are new programs that specify the use of Ada. Ada has been continually updated to keep pace with the evolutions that have occurred in both software and hardware, and in many applications the language has advanced to the state of the art. It is known for being a strong object-oriented programming language with robust typing, modularity mechanisms, parallel processing, exception handling and other benefits particular to embedded software.

When developing safety-critical and high-reliability systems of this caliber, quality is a must and absolutely cannot be compromised. As a result, thorough testing is a necessity for properly validating safety-critical embedded systems. However in today’s extremely competitive market, organizations also require tools that help them improve time-to-market and reduce development and verification costs.  

Ada software testing is often done by targeting individual packages or subprograms to ensure they meet requirements and do not contain errors. Traditionally, Ada unit and integration testing is performed by developers as the code is built. As individual software components are created, test code is generated to take the place of the external interfaces of the code under test. This test code, typically called a test harness, is made up of drivers to stimulate the functions of the code being tested, and stubs to take the place of dependent functions that are called by the code being tested.

Developers can conduct this testing manually, although in many cases it is far more efficient to utilize automated software testing tools, which enable a large number of tests to be carried out on a piece of code with minimal effort. Although unit and integration testing of Ada software is an important component of overall testing, is not sufficient on its own. Optimizing these incredibly important and safety-critical applications with high-quality testing solutions like code coverage analysis and change-based testing will further improve the performance and safety of these solutions.

VectorCAST/Ada is a dynamic software test solution that automates Ada unit and integration testing, which is necessary for validating safety- and mission-critical embedded systems. The software automates the creation of stubs and drivers as part of the creation of the test harness, giving developers time to focus on building quality and thorough test cases.

Change-based testing functionality built into VectorCAST/Ada allows engineers to quickly and easily assess the impact of a source code change not only on their code but the entire software application, and code coverage analysis support for Ada 2012 allows engineers to gauge the effectiveness of tests by identifying which areas of an application were exercised during a test.

With VectorCAST/Ada, unit testing can be done natively or on the specific target or target simulator. Additionally, tests can be developed in a host environment and re-executed on an embedded target to validate target and cross-compiler performance. VectorCAST/Ada supports Ada 83, Ada 95, Ada 2005, and Ada 2012.

To learn more about how VectorCAST/Ada can enhance the quality of your safety-critical and high reliability applications, join our webinar on April 27, 2016.