System Structure Analysis: Clustering with Data Bindings
IEEE Transactions on Software Engineering - Annals of discrete mathematics, 24
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Recovering software architecture from the names of source files
Journal of Software Maintenance: Research and Practice
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Concept Analysis for Module Restructuring
IEEE Transactions on Software Engineering
Design Rules: The Power of Modularity Volume 1
Design Rules: The Power of Modularity Volume 1
Automatic Software Clustering via Latent Semantic Analysis
ASE '99 Proceedings of the 14th IEEE international conference on Automated software engineering
Architectural Design Recovery Using Data Mining Techniques
CSMR '00 Proceedings of the Conference on Software Maintenance and Reengineering
Derivation of Feature Component Maps by means of Concept Analysis
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
Experiments with Clustering as a Software Remodularization Method
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
ACDC: An Algorithm for Comprehension-Driven Clustering
WCRE '00 Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Object Oriented Design Pattern Inference
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Bunch: A Clustering Tool for the Recovery and Maintenance of Software System Structures
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
A Framework for Experimental Evaluation of Clustering Techniques
IWPC '00 Proceedings of the 8th International Workshop on Program Comprehension
Facilitating Program Comprehension by Mining Association Rules from Source Code
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Software Clustering Techniques and the Use of Combined Algorithm
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
The Weighted Combined Algorithm: A Linkage Algorithm for Software Clustering
CSMR '04 Proceedings of the Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR'04)
Information-Theoretic Software Clustering
IEEE Transactions on Software Engineering
An empirical study of the robustness of two module clustering fitness functions
GECCO '05 Proceedings of the 7th annual conference on Genetic and evolutionary computation
Head First Design Patterns
Comparison of Clustering Algorithms in the Context of Software Evolution
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
On the Automatic Modularization of Software Systems Using the Bunch Tool
IEEE Transactions on Software Engineering
Modularity Analysis of Logical Design Models
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Design Pattern Detection Using Similarity Scoring
IEEE Transactions on Software Engineering
Hierarchical Clustering for Software Architecture Recovery
IEEE Transactions on Software Engineering
DeMIMA: A Multilayered Approach for Design Pattern Identification
IEEE Transactions on Software Engineering
Software Architecture Reconstruction: A Process-Oriented Taxonomy
IEEE Transactions on Software Engineering
Design Rule Hierarchies and Parallelism in Software Development Tasks
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
On the interplay of architecture and collaboration on software evolutjion and maintenance
On the interplay of architecture and collaboration on software evolutjion and maintenance
Leveraging design structure matrices in software design education
CSEET '11 Proceedings of the 2011 24th IEEE-CS Conference on Software Engineering Education and Training
Hi-index | 0.00 |
In order to recover software architecture, various clustering techniques have been created to automatically partition a software system into meaningful subsystems. While these techniques have demonstrated their effectiveness, we observe that a key feature within most software systems has not been fully exploited: most well-designed systems follow strong architectural design rules that split the overall system into modules. These design rules are often manifested as special program constructs, such as shared data structures or abstract interfaces, which should not belong to any of the subordinate modules. We contribute a new perspective of architecture recovery based on this rationale, which enables the combination of design-rule-based clustering with other clustering techniques, as well as enabling the splitting of a large system into subsystems. We evaluated our approach both quantitatively and qualitatively, using both open source and real industrial software projects.