Software engineering (3rd ed.): a practitioner's approach
Software engineering (3rd ed.): a practitioner's approach
A fast and effective heuristic for the feedback arc set problem
Information Processing Letters
A New Search Algorithm for Finding the Simple Cycles of a Finite Directed Graph
Journal of the ACM (JACM)
Authoritative sources in a hyperlinked environment
Journal of the ACM (JACM)
An efficient search algorithm to find the elementary circuits of a graph
Communications of the ACM
Composite Structure Design
Evolving good hierarchical decompositions of complex systems
Journal of Systems Architecture: the EUROMICRO Journal - Special issue on evolutionary computing
Object Oriented Reengineering Patterns
Object Oriented Reengineering Patterns
Software Reflexion Models: Bridging the Gap between Design and Implementation
IEEE Transactions on Software Engineering
A Hybrid Reverse Engineering Approach Combining Metrics and Program Visualization
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Polymetric Views-A Lightweight Visual Approach to Reverse Engineering
IEEE Transactions on Software Engineering
The Class Blueprint: Visually Supporting the Understanding of Classes
IEEE Transactions on Software Engineering
Characterizing the Evolution of Class Hierarchies
CSMR '05 Proceedings of the Ninth European Conference on Software Maintenance and Reengineering
Voronoi treemaps for the visualization of software metrics
SoftVis '05 Proceedings of the 2005 ACM symposium on Software visualization
The story of moose: an agile reengineering environment
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Using dependency models to manage complex software architecture
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Visualization-based analysis of quality for large-scale software systems
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Package Patterns for Visual Architecture Recovery
CSMR '06 Proceedings of the Conference on Software Maintenance and Reengineering
On the Automatic Modularization of Software Systems Using the Bunch Tool
IEEE Transactions on Software Engineering
ICSM '06 Proceedings of the 22nd IEEE International Conference on Software Maintenance
Classics in software engineering
Classics in software engineering
JooJ: real-time support for avoiding cyclic dependencies
ACSC '07 Proceedings of the thirtieth Australasian conference on Computer science - Volume 62
An empirical study of cycles among classes in Java
Empirical Software Engineering
Programming-in-the-Large Versus Programming-in-the-Small
IEEE Transactions on Software Engineering
Evaluating UML Class Diagram Layout based on Architectural Importance
VISSOFT '05 Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis
Software Architecture Reconstruction: A Process-Oriented Taxonomy
IEEE Transactions on Software Engineering
Automatic Package Coupling and Cycle Minimization
WCRE '09 Proceedings of the 2009 16th Working Conference on Reverse Engineering
Identifying Cycle Causes with Enriched Dependency Structural Matrix
WCRE '09 Proceedings of the 2009 16th Working Conference on Reverse Engineering
Flexible architecture conformance assessment with ConQAT
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Architectural layer recovery for software system understanding and evolution
Software—Practice & Experience
Software Module Clustering as a Multi-Objective Search Problem
IEEE Transactions on Software Engineering
Efficient retrieval and ranking of undesired package cycles in large software systems
TOOLS'11 Proceedings of the 49th international conference on Objects, models, components, patterns
MudPie: layers in the ball of mud
Computer Languages, Systems and Structures
Hi-index | 0.00 |
A layered software architecture helps in understanding the role of software entities (e.g. packages or classes) in a system and, hence, the impact of changes on these entities. However, the computation of an optimal layered organization in the presence of cyclic dependencies is difficult. In this paper, we present an approach that (i) provides a strategy supporting the automated detection of cyclic dependencies, (ii) proposes heuristics to break cyclic dependencies, and (iii) computes an organization of software entities in multiple layers even in the presence of cyclic dependencies. Our approach performs better than the other existing approaches in terms of accuracy and interactivity, and it supports human inputs and constraints. In this paper, we present this approach and compare it to existing solutions. We applied our approach on two large software systems to identify package layers and the results are manually validated by software engineers of the two systems.