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.

Read the paper · More papers on PaperTik