System Structure Analysis: Clustering with Data Bindings
IEEE Transactions on Software Engineering - Annals of discrete mathematics, 24
Rigi-A system for programming-in-the-large
ICSE '88 Proceedings of the 10th international conference on Software engineering
A measure for composite module cohesion
ICSE '92 Proceedings of the 14th international conference on Software engineering
A reverse engineering environment based on spatial and visual software interconnection models
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
Using Neural Networks to Modularize Software
Machine Learning - Special issue on structured connectionist systems
Software salvaging and the call dominance tree
Journal of Systems and Software
An improved algorithm for identifying objects in code
Software—Practice & Experience
Assessing modular structure of legacy code based on mathematical concept analysis
ICSE '97 Proceedings of the 19th international conference on Software engineering
An intelligent tool for re-engineering software modularity
ICSE '91 Proceedings of the 13th international conference on Software engineering
A relational approach to support software architecture analysis
Software—Practice & Experience
Extracting concepts from file names: a new file clustering criterion
Proceedings of the 20th international conference on Software engineering
Identifying objects using cluster and concept analysis
Proceedings of the 21st international conference on Software engineering
PuLSE: a methodology to develop software product lines
SSR '99 Proceedings of the 1999 symposium on Software reusability
Transitioning legacy assets to a product line architecture
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Applied software architecture
Identifying Modules via Concept Analysis
IEEE Transactions on Software Engineering
Concept Analysis for Module Restructuring
IEEE Transactions on Software Engineering
Software product lines: practices and patterns
Software product lines: practices and patterns
A Metric-Based Approach to Detect Abstract Data Types and State Encapsulations
Automated Software Engineering
Documenting Software Architectures: Views and Beyond
Documenting Software Architectures: Views and Beyond
Extracting and Restructuring the Design of Large Systems
IEEE Software
The 4+1 View Model of Architecture
IEEE Software
Scenario-Based Analysis of Software Architecture
IEEE Software
Software Reflexion Models: Bridging the Gap between Design and Implementation
IEEE Transactions on Software Engineering
Locating Features in Source Code
IEEE Transactions on Software Engineering
Finding Components in a Hierarchy of Modules: a Step towards Architectural Understanding
ICSM '97 Proceedings of the International Conference on Software Maintenance
Identifying modules via concept analysis
ICSM '97 Proceedings of the International Conference on Software Maintenance
Extracting Abstract Data Types from C Programs: A Case Study
ICSM '93 Proceedings of the Conference on Software Maintenance
Using the Options Analysis for Reengineering (OAR) Method for Mining Components for a Product Line
SPLC 2 Proceedings of the Second International Conference on Software Product Lines
Binding Object Models to Source Code: An Approach to Object-Oriented Re-Architecting
COMPSAC '98 Proceedings of the 22nd International Computer Software and Applications Conference
Architecture Reconstruction in Practice
WICSA 3 Proceedings of the IFIP 17th World Computer Congress - TC2 Stream / 3rd IEEE/IFIP Conference on Software Architecture: System Design, Development and Maintenance
A Software Architecture Reconstruction Method
WICSA1 Proceedings of the TC2 First Working IFIP Conference on Software Architecture (WICSA1)
Architectural Evolution of Legacy Product Families
PFE '01 Revised Papers from the 4th International Workshop on Software Product-Family Engineering
A metric-based approach to detect abstract data types and state encapsulations
ASE '97 Proceedings of the 12th international conference on Automated software engineering (formerly: KBSE)
Applying concept formation methods to object identification in procedural code
ASE '97 Proceedings of the 12th international conference on Automated software engineering (formerly: KBSE)
Architectural Design Recovery Using Data Mining Techniques
CSMR '00 Proceedings of the Conference on Software Maintenance and Reengineering
A Use-Case Driven Method of Architecture Recovery for Program Understanding and Reuse Reengineering
CSMR '00 Proceedings of the Conference on Software Maintenance and Reengineering
A Coupling-Guided Cluster Analysis Approach to Reengineer the Modularity of Object-Oriented Systems
CSMR '00 Proceedings of the Conference on Software Maintenance and Reengineering
Some simplified NP-complete problems
STOC '74 Proceedings of the sixth annual ACM symposium on Theory of computing
Recovering abstract data types and object instances from a conventional procedural language
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
On finding duplication and near-duplication in large software systems
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Finding objects in procedural programs: an alternative approach
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
The Orphan Adoption Problem in Architecture Maintenance
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
Using Clustering Algorithms in Legacy Systems Remodularization
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
A Graph-Based Object Identification Process for Procedural Programs
WCRE '98 Proceedings of the Working Conference on Reverse Engineering (WCRE'98)
Structural Manipulations of Software Architecture Using Tarski Relational Algebra
WCRE '98 Proceedings of the Working Conference on Reverse Engineering (WCRE'98)
A Visual Representation Model for Software Subsystem Decomposition
WCRE '98 Proceedings of the Working Conference on Reverse Engineering (WCRE'98)
Advanced Clone-Analysis to Support Object-Oriented System Refactoring
WCRE '00 Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)
MAP - Mining Architectures for Product Line Evaluations
WICSA '01 Proceedings of the Working IEEE/IFIP Conference on Software Architecture
A Graph Pattern Matching Approach to Software Architecture Recovery
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
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 Pattern Matching Framework for Software Architecture Recovery and Restructuring
IWPC '00 Proceedings of the 8th International Workshop on Program Comprehension
Using Automatic Clustering to Produce High-Level System Organizations of Source Code
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
A Case Study of Applying an Eclectic Approach to Identify Objects in Code
IWPC '99 Proceedings of the 7th 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
Alborz: A Query-based Tool for Software Architecture Recovery
IWPC '01 Proceedings of the 9th International Workshop on Program Comprehension
Applying Spectral Methods to Software Clustering
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
On Modeling Software Architecture Recovery as Graph Matching
ICSM '03 Proceedings of the International Conference on Software Maintenance
A Multiple Hill Climbing Approach to Software Module Clustering
ICSM '03 Proceedings of the International Conference on Software Maintenance
WCRE '03 Proceedings of the 10th Working Conference on Reverse Engineering
Detecting Merging and Splitting using Origin Analysis
WCRE '03 Proceedings of the 10th Working Conference on Reverse Engineering
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)
Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures
Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures
Understanding Phases and Styles of Object-Oriented Systems' Evolution
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
A Case Study in Refactoring a Legacy Component for Reuse in a Product Line
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Equipping the Reflexion Method with Automated Clustering
WCRE '05 Proceedings of the 12th Working Conference on Reverse Engineering
Refactoring a legacy component for reuse in a software product line: a case study: Practice Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
Automated clustering to support the reflexion method
Information and Software Technology
Towards A Process-Oriented Software Architecture Reconstruction Taxonomy
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
Extending the Reflexion Method for Consolidating Software Variants into Product Lines
WCRE '07 Proceedings of the 14th Working Conference on Reverse Engineering
An evaluation of code similarity identification for the grow-and-prune model
Journal of Software Maintenance and Evolution: Research and Practice - Special Issue on the 12th Conference on Software Maintenance and Reengineering (CSMR 2008)
Supporting the Grow-and-Prune Model in Software Product Lines Evolution Using Clone Detection
CSMR '08 Proceedings of the 2008 12th European Conference on Software Maintenance and Reengineering
An extended assessment of type-3 clones as detected by state-of-the-art tools
Software Quality Control
An overview of techniques for detecting software variability concepts in source code
ER'11 Proceedings of the 30th international conference on Advances in conceptual modeling: recent developments and new directions
Assisting conformance checks between architectural scenarios and implementation
Information and Software Technology
Combining related products into product lines
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Respecting component architecture to migrate product copies to a software product line
Proceedings of the 17th international doctoral symposium on Components and Architecture
Quality of merge-refactorings for product lines
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Improving product copy consolidation by architecture-aware difference analysis
Proceedings of the 9th international ACM Sigsoft conference on Quality of software architectures
Extraction of product evolution tree from source code of product variants
Proceedings of the 17th International Software Product Line Conference
Managing cloned variants: a framework and experience
Proceedings of the 17th International Software Product Line Conference
ADAM: External dependency-driven architecture discovery and analysis of quality attributes
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.00 |
Software variants emerge from ad-hoc copying in-the-large with adaptations to a specific context. As the number of variants increases, maintaining such software variants becomes more and more difficult and expensive. In contrast to such ad-hoc reuse, software product lines offer organized ways of reuse, taking advantage of similarities of different products. To re-gain control, software variants may be consolidated as organized software product lines. In this paper, we describe a method and supporting tools to compare software variants at the architectural level extending the reflexion method to software variants. Murphy's reflexion method allows one to reconstruct the module view, a static architectural view describing the static components, their interfaces and dependencies and their grouping as layers and subsystems. The method consists of the specification of the module view and the mapping of implementation components onto the module view. An automatic analysis determines differences between the module view and its implementation. We extend the reflexion method from single systems to software variants. Because software variants share a very large amount of code, we can expect components of one variant to re-occur in the other variant either identically or at least similarly. We use similarity metrics to determine this type of correspondence among implementation components between two variants. Because the similarity metrics are expensive to compute, we use clone detection techniques to reduce the number of candidate pairs of implementation components for which the similarity is computed. The correspondence is then used to transfer as much as possible of the mapping for the analyzed variants to the next variant to be analyzed. Furthermore, we describe how to unify the individual product architectures into a software product line architecture.