Abstract

Modularity — the decoupling of software units — is essential for composition of real software systems from ready-made components. But for a long time one lacked a formal theory of modularity. Recently we have been developing Linear Software Models as rigorous theoretical modularity standards based upon plain Linear Algebra. By these models, decoupling means just linear independence, within a modularity matrix. This paper applies Linear Software Models to software systems, obtaining three consequences: (1) besides decoupling, various informal notions of software engineering, such as software modules, cohesion, and single responsibility, have for the first time a well-defined formal counterpart; (2) canonical building blocks like Software Design Patterns strictly obey the Linear Software Models; (3) larger software systems obey bordered Linear Models, allowing precise location and visualization of residual coupling. The latter consequences are demonstrated by case studies of software systems from the literature. The applicability of the Linear Software Models is quantitatively shown to scale well with system size, for the given case studies.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call