Clustering Algorithms
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
An analysis and visualization for revealing object sharing
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
A dynamic analysis for revealing object ownership and sharing
Proceedings of the 2006 international workshop on Dynamic systems analysis
Cluster analysis of Java dependency graphs
Proceedings of the 4th ACM symposium on Software visualization
On the Impact of Evolving Requirements-Architecture Dependencies: An Exploratory Study
CAiSE '08 Proceedings of the 20th international conference on Advanced Information Systems Engineering
QoSA'10 Proceedings of the 6th international conference on Quality of Software Architectures: research into Practice - Reality and Gaps
TreeMatrix: A Hybrid Visualization of Compound Graphs
Computer Graphics Forum
TreeMatrix: A Hybrid Visualization of Compound Graphs
Computer Graphics Forum
Hi-index | 0.00 |
This demonstration will present a new approach, based on the Dependency Structure Matrix (DSM), which uses inter-module dependencies to specify and manage the architecture of software systems. The system is decomposed into a hierarchy of subsystems with the dependencies between the subsystems presented in the form of an adjacency matrix. The matrix representation is concise, intuitive and appears to overcome scaling problems that are commonly associated with directed graph representations. It also permits succinct definition of design rules to specify allowable dependencies.A tool, Lattix LDM, will be used to demonstrate this approach by loading actual open source Java applications to create DSMs that can represent systems with thousands of classes. We will show how algorithms can be applied to organize the matrix in a form that reflects the architecture and highlights problematic dependencies.We will demonstrate how design rules can be used to specify and enforce architectural patterns such as layering and componentization. We will examine the evolution of architecture by creating dependency models for successive generations of Ant, a popular Java utility. Finally, we will explore the application of this approach to the re-engineering of Haystack, an information retrieval system.