Our efforts are coordinated with EDCS projects in other clusters, especially those in High Assurance and Architecture. The perpetual testing project is developing technologies to support seamless, perpetual analysis and testing of software through development, deployment and evolution. Whereas the current, dominant paradigm treats testing as a phase that succeeds development and precedes delivery, we are building the foundation for treating analysis and testing as on-going activities to improve quality assurance without pause through several generations of product, in the development environment as well as the deployed environment. Software in the deployed environment is monitored not only to check conformance to required properties but also to validate and refine the models and assumptions on which quality assurance activities in the development environment depend. The degree of monitoring and transmission of information to the development environment differs depending on performance and security requirements of the end-user and is always be under user control.
Perpetual testing is necessarily incremental.
Analysis and testing processes are carried out in response to changes in software artifacts or associated information or in anticipation of change. Improvements to existing technologies focus largely on scalability and incrementality for large evolving systems. Analysis and testing is aimed at attaining and maintaining adequate adherence of all software artifacts to relations captured by a rich web of hypercode links, including dependence relations among software components and among properties and analysis techniques. This research is being conducted in cooperation with Lori A. Clarke and Leon J. Osterweil of the University of Massachusetts at Amherst and Michal Young at the University of Oregon at Eugene. The project is funded by an EDCS grant.