NASA SBIR 2006 Solicitation

FORM B - PROPOSAL SUMMARY


PROPOSAL NUMBER: 06-2 X2.03-8550
PHASE 1 CONTRACT NUMBER: NNC07QA73P
SUBTOPIC TITLE: Software Engineering Technologies for Human-Rated Spacecraft
PROPOSAL TITLE: Static Detection of Bugs in Embedded Software Using Lightweight Verification

SMALL BUSINESS CONCERN (Firm Name, Mail Address, City/State/Zip, Phone)
GrammaTech, Inc.
315-317 N. Aurora Street
Ithaca, NY 14850 - 4201
(607) 273-7340

PRINCIPAL INVESTIGATOR/PROJECT MANAGER (Name, E-mail, Mail Address, City/State/Zip, Phone)
Michael McDougall
mcdougall@grammatech.com
317 N. Aurora Street
Ithaca, NY 14850 - 4201
(607) 273-7340

TECHNICAL ABSTRACT (Limit 2000 characters, approximately 200 words)
Validating software is a critical step in developing high confidence systems. Typical software development practices are not acceptable in systems where failure leads to loss of life or other high costs. Software best practices for high confidence systems are often codified as coding rules. Adhering to these practices can increase software readability and predictability, thereby enhancing quality. However, adherence is limited by the lack of high-quality tools to measure adherence automatically. Checking rule conformance requires a diverse set of software analysis technologies, ranging from syntactic analysis to sophisticated inference of runtime behavior. By combining lightweight verification techniques with other scalable analysis techniques that target syntactic and other static properties, we will create a tool that flags violations for almost all the rules typically applied to high-assurance code. Our Phase I work demonstrated the feasibility of this approach. In Phase I, we developed a tool for checking compliance with rules developed for JPL flight software. The tool leveraged GrammaTech's existing technology for static analysis, including facilities for analyzing a program's abstract syntax tree, control-flow graph, and inferred runtime behavior. The prototype successfully checks a set of rules designed for high-assurance software. Our experiments show that the tool adds only minimal overhead to our CodeSonar bug-finding tool, and generates few or no spurious results that could distract or annoy users.

POTENTIAL NASA COMMERCIAL APPLICATIONS (Limit 1500 characters, approximately 150 words)
The proposed tool will search source code and flag those parts that do not conform to coding standards and best practices. The tool will improve software development by: - Identifying non-conformant code that slips through other quality control efforts, and thereby increase software quality. - Reducing the effort required for manual code review. Code inspectors can spend more time on identifying subtle flaws in software and less on checking rule compliance. - Encouraging codification and application of best practices. The presence of a tool to define and check coding rules will make it easier for engineers and project managers to apply best practices to projects that would otherwise ignore them because manual inspections are too cumbersome. We expect the Phase II work will be applicable in any industry that develops high confidence software. Department of Defense projects often adopt their own coding standards for safety-critical software (for example, the Joint Strike Fighter project). Defense contractors can use the proposed tool to identify non-compliant code cheaply, increasing productivity and software quality. Other industries that develop high-assurance code, such as the automotive, medical device, and banking industries, can apply the tool to enhance their own development processes.

POTENTIAL NON-NASA COMMERCIAL APPLICATIONS (Limit 1500 characters, approximately 150 words)
The proposed tool will be applicable to all NASA centers and contractors that develop or validate flight software written in C/C++. Flight software must meet a higher standard of quality than typical general-purpose software, and a common technique for encouraging quality software is by applying coding rules. For example, Holzmann's Ten Rules are being adopted for mission-critical flight software across JPL. The proposed tool will search source code and flag those parts that do not conform to the rules. The tool will improve flight software development by: - Identifying non-conformant code that slips through other quality control efforts, and thereby increase software quality. - Reducing the effort required for manual code review. Code inspectors can spend more time on identifying subtle flaws in software and less on checking rule compliance. - Encouraging codification and application of best practices. The presence of a tool to define and check coding rules will make it easier for engineers and project managers to apply best practices to projects that would otherwise ignore them because manual inspections are too cumbersome. Additionally, the new rules generated in Phase II will help increase software quality at adopting centers by constraining source code to avoid patterns that could lead to faults.

NASA's technology taxonomy has been developed by the SBIR-STTR program to disseminate awareness of proposed and awarded R/R&D in the agency. It is a listing of over 100 technologies, sorted into broad categories, of interest to NASA.

TECHNOLOGY TAXONOMY MAPPING
Software Development Environments
Testing Requirements and Architectures


Form Generated on 08-02-07 14:39