2003 · 104 citations · 19 references
ComputingComputer ScienceDesign AutomationProgramming LanguagesSoftware EngineeringObject-oriented AnalysisObject-oriented DesignSoftware DesignSoftware EvolutionSoftware MaintenanceSoftware ModelingDesign PatternsLegacy SystemsProblem DetectionSoftware ReengineeringSource Code Evolution
The evolution of software systems over many years often leads to unnecessarily complex and inflexible designs which in turn lead to a huge amount of effort for enhancements and maintenance. Thus, the reengineering of object oriented software becomes more and more important as the number, age and size of such legacy systems grow. A key issue during reengineering is the identification and location of design problems which prevent the efficient further development of a system. Up to now this problem area has not been sufficiently supported, either by methods, or by tools. We present a technique for analyzing legacy code, specifying frequent design problems as queries and locating the occurrences of these problems in a model derived from source code. We present our experiences with a tool set which we implemented to support this task by automatically analyzing a given system and detecting the specified problems. We applied our tools to check violations of a number of well known design rules in existing source code taken from several case studies, both from industrial and academic fields. These experiments showed that the task of problem detection in reengineering can be automated to a large degree, and that the technique presented can be efficiently applied to real world code.
19
Ralph E. Johnson, Brian Foote · Journal of Object-oriented Programming · 1988 · 1.1K citations
Computing, Computer Science, Design +15
Leon Sterling, Ehud Shapiro, Randy Garrett · IEEE Expert · 1987 · 1.1K citations
Ian Graham · Fuzzy Sets and Systems · 1990 · 993 citations
Towards a metrics suite for object oriented design
Shyam R. Chidamber, Chris F. Kemerer · 1991 · 832 citations · Full text