Programming in Prolog (2nd ed.)
Programming in Prolog (2nd ed.)
Object-oriented programming: an objective sense of style
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
Journal of Object-Oriented Programming
Smalltalk: subclassing subtyping is-a
Journal of Object-Oriented Programming
Towards a metrics suite for object oriented design
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Object-oriented modeling and design
Object-oriented modeling and design
Object-oriented analysis (2nd ed.)
Object-oriented analysis (2nd ed.)
Object-oriented analysis and design with applications (2nd ed.)
Object-oriented analysis and design with applications (2nd ed.)
Software reflexion models: bridging the gap between source and high-level models
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Large-scale C++ software design
Large-scale C++ software design
Law-governed regularities in object systems: part I: an abstract model
Theory and Practice of Object Systems
Law-governed regularities in object systems. Part 2: a concrete implementation
Theory and Practice of Object Systems
Conceptual module querying for software reengineering
Proceedings of the 20th international conference on Software engineering
Effective C++ CD
Object-Oriented Design Heuristics
Object-Oriented Design Heuristics
Assuring Good Style for Object-Oriented Programs
IEEE Software
A Metrics Suite for Object Oriented Design
IEEE Transactions on Software Engineering
Should Superclasses be Abstract?
ECOOP '94 Proceedings of the 8th European Conference on Object-Oriented Programming
CCEL: A Metalanguage for C++
The MeTHOOD Approach: Measures, Transformation Rules, and Heuristicsfor Object-Oriented Design
The MeTHOOD Approach: Measures, Transformation Rules, and Heuristicsfor Object-Oriented Design
Flow equations as a generic programming tool for manipulation of attributed graphs
Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Making Movies: Watching Software Evolve through Visualisation
ICCS '01 Proceedings of the International Conference on Computational Science-Part II
Distance Measures for Information System Reengineering
CAiSE '00 Proceedings of the 12th International Conference on Advanced Information Systems Engineering
Instantiating and Detecting Design Patterns: Putting Bits and Pieces Together
Proceedings of the 16th IEEE international conference on Automated software engineering
Precise Modeling of Design Patterns in UML
Proceedings of the 26th International Conference on Software Engineering
Refining code-design mapping with flow analysis
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Efficient Relational Calculation for Software Analysis
IEEE Transactions on Software Engineering
Search-based improvement of subsystem decompositions
GECCO '05 Proceedings of the 7th annual conference on Genetic and evolutionary computation
Relational programming with CrocoPat
Proceedings of the 28th international conference on Software engineering
Automatically discovering design patterns and assessing concern separations for applications
Proceedings of the 2006 ACM symposium on Applied computing
Using concept analysis to detect co-change patterns
Ninth international workshop on Principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting
Detecting Patterns of Poor Design Solutions Using Constraint Propagation
MoDELS '08 Proceedings of the 11th international conference on Model Driven Engineering Languages and Systems
Towards harmony-oriented programming
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Harmony-oriented programming and software evolution
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Identification of design motifs with pattern matching algorithms
Information and Software Technology
Improving design-pattern identification: a new approach and an exploratory study
Software Quality Control
Enforcing structural regularities in software using IntensiVE
Science of Computer Programming
COMP-REF: a technique to guide the delegation of responsibilities to components in software systems
FASE'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Fundamental approaches to software engineering
Generating a catalog of unanticipated schemas in class hierarchies using Formal Concept Analysis
Information and Software Technology
A new approach for pattern problem detection
CAiSE'10 Proceedings of the 22nd international conference on Advanced information systems engineering
BDTEX: A GQM-based Bayesian approach for the detection of antipatterns
Journal of Systems and Software
Assessing architectural evolution: a case study
Empirical Software Engineering
Understanding design patterns — what is the problem?
Software—Practice & Experience
Assessing technical debt by identifying design flaws in software systems
IBM Journal of Research and Development
Hi-index | 0.02 |
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.In this paper, 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.