Penny Chase, The MITRE Corporation
David Harris, The MITRE Corporation
Angel Asencio, The MITRE Corporation
Sam Cardman, The MITRE Corporation
Ellen Laderman, The MITRE Corporation
Suzi Lubar, The MITRE Corporation
Scott Mardis, The MITRE Corporation
In the spring of 2000, we were asked to help with an assessment of object-oriented software. A MITRE sponsor needed to assess the quality of a C++ and Java software system. Specifically, the sponsor wanted to know if the software could be reused. This need was typical of the many needs that motivate analyses of software. Examples include maintenance questions, reuse questions, code upgrades, component integrations, and analysis of hidden and explicit requirements.
We knew that commercial and open source resources for analyzing object-oriented software were limited. There were few tools available that fully parsed C++ or Java and these tended to be very expensive. Additionally, due to indirection caused by inheritance and polymorphism, it is difficult for these tools to correctly compute data flow and control flow.
We developed a prototype software system named Osprey. To identify occurrences of design patterns in the software, we developed 104 recognizers—declarative descriptions of the constraints that must be met if one is to conclude that a pattern is present in the code. Then, given a program to analyze, Osprey matches the relationships among that program's structures and the pre-built design pattern templates.
