Lightweight Dependency Models to Manage Software Architecture
Neeraj Sangal · 2007
Summary form only given. This tutorial will present a practical technique for managing the architecture of large software systems using Dependency Models. We will demonstrate that the matrix representation used by these models provides a unique view of the architecture and is highly scalable compared to the directed graph approaches that are common today. We will also show a variety of matrix algorithms that can be applied to analyze and organize the system into a form that reflects key architectural patterns and highlights problematic dependencies. We will illustrate our approach by applying it to real applications each consisting of hundreds or thousands of subsystems. The dependency model will be formally specified using design rules which enable architectural violations to be identified automatically. Finally, actual dependency models will be created for multiple generations of a software application to highlight how architecture evolves and how it often begins to degrade.