Application software for a growing majority of aerospace and defense systems is complex, and is becoming more so all the time. Requirements for broad capability, precise reliability, security, networking, real-time performance, and interoperability make writing software for military systems more difficult and crucial than ever before.
These are the reasons for the growing sophistication and demand for software design and development tools that seek not only to automate and streamline the software-development process, but also to impose rigor in software engineering and help developers meet safety-critical software standards, such as DO-178B and DO-178C.
"There are two things that are interrelated," explains Chris Rommel, vice president for machine-to-machine and embedded technology at market research VDC Corp. in Natick, Mass. "Reliability is key, and the mission-critical requirements associated with it. Then compliance drives purchasing decisions."
By compliance, Rommel is referring to software development tools that help enforce compliance with reliability and safety-critical standards. "Artifacts can be produced and automated if possible, to ease process standard adherence, such as DO-178B and C, which are the big ones."
Software engineering tools often attempt to automate many of the steps involved in software product lifecycle management, or PLM, as the industry knows it. This means software engineering tools that automate tasks from initial requirements through writing the actual lines of code.
"It starts with requirements," explains Jim McElroy, vice president of marketing at software engineering specialist LDRA Technology Inc. in San Bruno, Calif. "Then the tool hands off those requirements to the software- and hardware-development teams. That requirement gets implemented in software, and the engineer needs to develop a behavior design and the actual code-whether automatically generated or hand-written code."
Software engineering tools must help the developer trace each line of code back to the specific requirement that spawned it, McElroy explains. Likewise, software tools must be able to trace requirements forward to help determine if resulting lines of code actually are logical outgrowths of the initial requirements.
"The drive for standards today is the full lifecycle requirements-from requirements all the way through verifications in a bi-directional workflow," McElroy says.
To ensure compliance to standards like DO-178B and C, software development tools offer a formal automated approach to make sure each requirement corresponds with specific lines of code, and each line of code corresponds with its initial requirement. "If I need to make a change in a line of code, what requirement is that line of code part of?" McElroy explains.
Ensuring rigor in software development, as well as compliance to standards, has taken many different approaches over the years. Back in the 1980s, for example, the U.S. Department of Defense (DOD) mandated use of the Ada programming language for writing real-time mission-critical software applications.
Ada is a disciplined language with built-in traceability and other features that enforce a structured software-development process. DOD eventually dropped its requirement for Ada because of industry pushback. Preferred programming languages, such as C and C++, however, do not enforce software rigor like Ada, so today's software development tools are attempting to add Ada-like software-development methodologies and standards compliance on languages like C and C++.
"Ada was put in place because it is a strong, structured language," McElroy says. "In reality, it wasn't attractive to the commercial base of developers. It was not as flexible as the more-marketable C++ and Java languages." Today, it is the role of software-development tools to "see that developers are implementing C in a safe manner, because it is a very flexible language," he says.
While many of the mature software-development companies have developed formal workflows with guidelines for using C and C++ in real-time, mission-critical embedded systems, LDRA and other companies offer tools to help other developers write software to a specific set of coding standards, address safety and security requirements, and help customers check code against those limitations, McElroy says.
AdaCore New York
Atego San Diego
CIMdata Ann Arbor, Mich.
Coverity Inc. San Francisco, Calif.
Dassault Systemes Auburn Hills, Mich.
DDC-I Inc. Phoenix
ENSCO Avionics Endicott, N.Y.
GrammaTech Inc. Ithaca, N.Y.
Green Hills Software Santa Barbara, Calif.
Integrated Systems Inc. (ISI) Tysons Corner, Va.
LDRA Technology Inc. San Bruno, Calif.
LynuxWorks Inc. San Jose, Calif.
The MathWorks Inc. Natick, Mass.
Mentor Graphics Wilsonville, Ore.
Omnify Software Andover, Mass.
Oracle Redwood Shores, Calif.
Parasoft Embedded, a division of Parasoft Corp. Monrovia, Calif.
Real-Time Innovations Sunnyvale, Calif.
SAP Labs U.S. Palo Alto, Calif.
SofTech Inc. Lowell, Mass.
Wind River Alameda, Calif.