ABSTRACT
An approach to managing the architecture of large software systems is presented. Dependencies are extracted from the code by a conventional static analysis, and shown in a tabular form known as the 'Dependency Structure Matrix' (DSM). A variety of algorithms are available to help organize the matrix in a form that reflects the architecture and highlights patterns and problematic dependencies. A hierarchical structure obtained in part by such algorithms, and in part by input from the user, then becomes the basis for 'design rules' that capture the architect's intent about which dependencies are acceptable. The design rules are applied repeatedly as the system evolves, to identify violations, and keep the code and its architecture in conformance with one another. The analysis has been implemented in a tool called LDM which has been applied in several commercial projects; in this paper, a case study application to Haystack, an information retrieval system, is described.
- Steven D. Eppinger, "Innovation at the Speed of Information", Harvard Business Review, January 2001.Google Scholar
- Baldwin, C.Y. and Clark K.B., The Power of Modularity Volume 1, MIT Press, Cambridge, MA, 2000. Google ScholarDigital Library
- Murphy, G.C., Notkin D., and Sullivan, K.J., "Software Reflexion Models: Bridging the Gap between Design and Implementation", IEEE Transactions on Software Engineering, Vol.27, No. 4, April 2001 Google ScholarDigital Library
- Tran, J.B., Godfrey M.W., Lee E.H.S., Holt, R.C., "Architectural Repair of Open Source Software", Proc. of 2000 Intl. Workshop on Program Comprehension (IWPC-00), Limerick, Ireland, June 2000. Google ScholarDigital Library
- Parnas, D.L., "Designing Software for Ease of Extension and Contraction", Transaction on Software Engineering, SE-5(2), 1979Google Scholar
- Jackson, D., "Module Dependences in Software Design", Post-workshop Proceedings of the 2002 Monterey Workshop: Radical Innovations of Software and Systems Engineering in the Future (Venice, Italy October 7-11, 2002). Springer Verlag, 2003.Google Scholar
- Sullivan K., Cai Y., Hallen B., Griswold W., "The Structure and Value of Modularity in Software Design", Proceedings of the 8th European Software Engineering Conference held jointly with 9th ACM SIGSOFT International Symposium on Foundations of Software Engineering, 2001 Google ScholarDigital Library
- Kruchten, P., "The 4+1 View Model of Architecture", IEEE Software 12(6): 42--50, 1995 Google ScholarDigital Library
- Gebala, David A. and Eppinger, Steven D., "Methods for Analyzing Design Procedures", Proceedings of the ASME Third International Conference on Design Theory and Methodology, pp. 227--233, 1991.Google Scholar
- Warfield, John N., "Binary Matrices in System Modeling" IEEE Transactions on Systems, Man, and Cybernetics, vol. 3, pp. 441--449, 1973.Google ScholarCross Ref
- Hartigan, John A., "Clustering Algorithms," John Wiley & Sons, New York, 1975 Google ScholarDigital Library
- The Haystack Project. MIT Computer Science and Artificial Intelligence Laboratory. http://haystack.lcs.mit.edu/.Google Scholar
- Browning, T. "Applying the Design Structure Matrix to System Decomposition and Integration problems: A Review and New Directions". IEEE Transactions on Engineering management, Vol. 48, No. 3, August 2001.Google ScholarCross Ref
- Pimmler, Thomas U. and Eppinger, Steven D., "Integration Analysis of Product Decompositions", Proceedings of the ASME Sixth International Conference on Design Theory and Methodology, Minneapolis, MN, Sept., 1994.Google Scholar
- Fernandez, CIG, "Integration Analysis of Product Architecture to Support Effective Team Co-location", Master's Thesis (ME), MIT 1998.Google Scholar
- H. A. Muller, K. Wong, and S. R. Tilley. "Understanding software systems using reverse engineering technology." The 62nd Congress of L'Association Canadienne Francaise pour l'Avancement des Sciences Proceedings (ACFAS 1994).Google Scholar
- Mary Shaw and David Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996. Google ScholarDigital Library
- Cristina Videira Lopes and Sushil Bajracharya, "An Analysis of Modularity in Aspect-Oriented Design," Proc. Aspect-Oriented Software Development (AOSD'05), Chicago, March 2005. Google ScholarDigital Library
- Alan MacCormack, John Rusnak and Carliss Baldwin, "Exploring the Structure of Complex Software Designs: An Empirical Study of Open Source and Proprietary Code", Harvard Business School Working Paper Number 05-016.Google Scholar
- Clemens Szyperski, "Component Software - Beyond Object-Oriented Programming", ACM Press/Addison-Wesley, 1997. Google ScholarDigital Library
- R. Kazman, S. J. Carriere, "Playing Detective: Reconstructing Software Architecture from Available Evidence", Journal of Automated Software Engineering, 6:2, April, 1999, 107--138. Google ScholarDigital Library
- Yassine, Ali, "An Introduction to Modeling and Analyzing Complex Product Development Processes Using the Design Structure Matrix (DSM) Method", Quaderni di Management (Italian Management Review), www.quaderni-di-management.it, No.9, 2004.Google Scholar
Index Terms
- Using dependency models to manage complex software architecture
Recommendations
Using dependency models to manage complex software architecture
Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming systems languages and applicationsAn approach to managing the architecture of large software systems is presented. Dependencies are extracted from the code by a conventional static analysis, and shown in a tabular form known as the 'Dependency Structure Matrix' (DSM). A variety of ...
Using dependency models to manage software architecture
OOPSLA '05: Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsThis 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 build dependency perspective of Android's concrete architecture
MSR '12: Proceedings of the 9th IEEE Working Conference on Mining Software RepositoriesAndroid is an operating system designed specifically for mobile devices. It has a layered architecture. In this paper, we extract Android's concrete layered architecture by analyzing the build dependency relation between Android sub-projects and use it ...
Comments