|
Automated Analysis and Verification of Application Program Interfaces (APIs)
Navy SBIR 2009.3 - Topic N093-227 SPAWAR - Ms. Summer Jones - [email protected] Opens: August 24, 2009 - Closes: September 23, 2009 P>N093-227 TITLE: Automated Analysis and Verification of Application Program Interfaces (APIs) TECHNOLOGY AREAS: Information Systems ACQUISITION PROGRAM: Joint Program Executive Office Joint Tactical Radio System, ACAT ID OBJECTIVE: Develop an approach that supports an automated solution in verifying a set of standard Application Program Interfaces with developer source code. The approach must increase objectivity and efficiency of the verification of these Standard APIs through repeatable processes. The approach must also provide adequate flexibility to enable usage of this product in commercial and military applications. DESCRIPTION: Application Program Interfaces (APIs) are software-level interface standards between software modules or software/hardware segments that enable software developers to write code that can be interfaced with the code written by others when integrated into a complete system. The compliance of individual software modules with the API specification is critical in order to create a maintainable software system over the long-term. Even small shortfalls in API compliance can result in the need for extensive software code rework at a high cost of dollars and schedule. Since large software projects are usually comprised of several teams of developers working in diverse locations, the impact of integration cost to the total effort is critical. This integration process could be greatly accelerated if a tool were available that could automatically inspect software modules for API compliance. The JTRS family of Software-Defined Radios (SDRs) are being deployed with waveform application software specifically developed to a specific set of standard APIs that are common among the JTRS radio platforms. This approach enables reuse of software across multiple radio platforms with minimal rewrite. However, in practice much of the software delivered by vendors is only partially compliant. The analysis of the code by government engineers and subsequent rework by vendors are expensive processes, and an automatic means of performing API verification would result in significant reduction in software development and maintenance costs. A suitable software tool cannot perform this operation simply by comparing text or following an inflexible set of "rules." Rather, the tools must to be able to compare the source code input to the API specification and determine compliance � without the need for the user to program the tool by explicitly defining all acceptable implementations. The tool needs to be "smart" enough to accurately interpret the source code and minimize the number of false positives and negatives. In addition, the technical approach for this tool must be able to accommodate source code that is composed of either hundreds or millions of lines. PHASE I: Develop an approach and architecture that can automatically verify that software products meet a specified set of APIs. Develop a prototype that successfully demonstrates the concept, its role within the overall verification process, and generates analysis reports based upon the errors found during the verification process. PHASE II: Develop the concepts demonstrated in Phase I into a fully-functional software "beta version" prototype tool. This tool should include a graphical user interface, enable the user to select API specification and developer source code files, , enable the user to specify the errors that should be checked and reported, and generates an analysis report in a format that aids the user in resolving identified shortfalls. The tool should be hosted on an industry-standard platform using an industry-standard software development environment. PHASE III: Complete development of the tool to enable use with source code exceeding millions of lines. To test and validate the product, support rigorous testing of the software�s functionality performed by the JTRS Test and Evaluation Laboratory (JTEL). Transition the beta software of Phase II into a supportable commercial product that meets industry best-practices for stability, user interface design, and support for industry-standard platforms/operating systems. PRIVATE SECTOR COMMERCIAL POTENTIAL/DUAL-USE APPLICATIONS: Software defined radios and other wireless communications devices being sold for commercial and consumer use, such as the Apple iPhone, Microsoft Windows Mobile, and Google Android platforms, are capable of downloading and running applications written by a vast community of software developers. The techniques developed for this project could be implemented into the Software Development Kits (SDKs) used to develop software for these devices. The same benefits in software development and maintenance costs apply. REFERENCES: 2. Stephens, D.R., Salisbury, B., Richardson, K., "JTRS Infrastructure Architecture and Standards", MILCOM 2006, Washington, D.C. 3. JTRS Infrastructure Architecture, Version 1.0, 22 December 2006. KEYWORDS: API; verification; source code analysis; syntax checking; software; IDL comparison.
|