Software technology applications that reduce mission operations costs and hasten implementation of emerging object-oriented technology are urgently needed. Automatic re-engineering will reduce the NASA's burgeoning cost of developing, maintaining and reusing software. We present an innovative approach for doing so based on automatic program understanding (APU).Despite its potential for enabling enormous cost savings, the practical value of automatic program understanding is not known. APU's have not been tested with real-world programs, or in realistic applications. We address this uncertainty by coupling UNPROG, an innovative, practical, efficient automatic program understander, to a commercial-type re-engineering tool. When abstract programming concepts are recognized an extended code generator will use them to generate improved code. Phase I will yield a prototype APU-enhanced, automatic re-engineering tool, methodology, and empirical results of enhanced-tool testing with Space Shuttle flight analysis and design software, allowing this innovative, enabling, high-leverage technology to be evaluated, advanced and applied. Results and techniques will highlight development needs, identify opportunities for technology insertion, and support and guide Phase II development of a knowledge-based software assistant.This proposal is part of a comprehensive plan for advancing UNPROG from research tool to working technology. We believe that UNPROG will emerge as a crucial enabler of vastly improved, next- generation commercial software tools based on automatic program understanding.Products which automate software maintenance and reuse will yield enormous economic benefits because the cost of these activities is huge. Automatically recognized concepts will improve re-engineering aids and reverse engineering tools such as analyzers, browsers, inspectors and documentation generators. Reformatters, redocumenters, restructurers, converters and translators can use our technology to generate more insightful and valuable new programs. Other applications include CASE entry, design and business rule recovery, logical annotation and software environments. Automatic program understanding promotes national technical and economic competitiveness by leveraging the usefulness and value of existing software assets, reducing maintenance expenditures, freeing human and other resources for new development, and preserving U.S. technological leadership in software tools and services.
Keywords: Phase_I, NASA, Abstract, FY94