Software architecture and software testing are both important areas of research and practice in software engineering. Research in software architectural modeling and analysis has focused on providing general guidance in software design, development, and maintenance. Research in software testing has examined a broad spectrum of endeavors, ranging from development testing to regression testing for maintenance. However, the two areas have long been disjoint from each other. That is, architecture modeling and analysis techniques are largely agnostic to the unique design features of test code, whereas software testing is conducted without leveraging any architectural guidance. This project aims to build a novel architecture-modeling framework to bridge the gap between software architecture and testing. The project will enable the synergy between architecture and test efficiency across the long lifetimes of modern software systems that can provide theoretical advances and practical solutions in both fields. Practitioners will be able to use the output instruments to understand, evaluate, and improve the architecture of a system to benefit software testing and maintenance. Researchers will be able to leverage the techniques, tools, and data created in this project to support a variety of gap-bridging research efforts. Software-engineering educators will be able to rethink and rejuvenate the way that software architecture and software testing topics are taught.
To achieve the above vision, the research team will create a family of first-of-its-kind architectural modeling and analysis techniques that centers on testing and amplifies benefits to both software architecture and software testing. More specifically, this modeling and analysis framework includes 1) A test-centric architecture modeling approach to help developers and practitioners understand and evaluate the architectural design of test code, e.g., whether the design is good or bad, easy or difficult to maintain and test; 2) A test-centric architectural-analysis approach to detect and analyze architectural anti-patterns centered around test code that hinder maintenance and increase costs on test code; and 3) An architecture-guided testing approach that provides cost-effective regression-testing techniques, including regression-testing selection and prioritization, built upon the high-level architectural modeling. This project directly contributes to the stated goals of the Computing and Communication Foundations program of addressing problems fundamental to improving software quality and, thus, benefits all segments of society that depend on software.
This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.