The STARS Program: Overview and Rationale

The STARS program is intended to improve software embedded in mission-critical systems by initiating a coordinated research and development program to improve software practice. Projects will complement DoD activities , attract the attention of industrial and academic computing communities, and lead to systematic and rapid improvement in software definition, design, construction , and in-service support. The goal of the STARS program is to improve productivity while achieving greater system reliability and adaptability. The driving need is to be able to produce more powerful, reliable, and adaptable systems through software development and in-service support processes that are more responsive, predictable, and cost-effective. This means improving our capability for coping with increasingly complex systems while also improving our development and in-service support techniques, methods , and tools. Furthermore, we must take advantage of advances in software, hardware, and systems technology to reduce the per-unit cost of delivered systems. Other sources have emphasized both the importance of software to the DoD mission and the difficulties caused by the current state of practice.1 2 During the Compsac 82 keynote session, Edith Martin, deputy under secretary of defense for advanced research and technology, summarized the difficulties that motivated the STARS program.3 This article states the program's objectives and strategy, briefly describes the nature of the technical activities underlying the program's projects , and discusses those projects. Other articles in this issue detail the technical activities of those projects. Objectives Software is only one part of a system, although it provides important operational capabilities for that system. Creating and evolving software is therefore a system engineering activity. It involves many management and technical trade-offs, including the mission, the interfaces to specific equipment, the schedule, the computing facilities available, the software team's capabilities, management practices and standards, business practices, and contractual obligations. The environment in which software is developed and evolved both reflects these trade-offs and provides the tools and methods for all the activities that constitute a software system's life cycle, including definition, design, construction, testing, installation, operation, and maintenance. A simple view of the environment, therefore, is that of people using software engineering technology methods and tools such as techniques, management practices, notations, and support software-to do the tasks occurring during a software system's life cycle. Some of these tools completely automate the tasks or provide automated support for them. These automated tools comprise an automated support environment. Thus, the software environment may be viewed …