Software Conceptual Integrity: Deconstruction, Then Reconstruction
This work addresses the problem of applying and understanding conceptual integrity in software design for practitioners and researchers, though it appears incremental as it builds on existing algebraic models.
The paper tackles the lack of formalization for Brooks' design principles in software conceptual integrity by deconstructing it into Conceptualization and Modularization phases, showing that Linear Software Models provide the needed formalization and reconstructing the phases with a Modularity Matrix to manage their tension.
Conceptual Integrity is the most important consideration for software system design, as stated by Frederick Brooks. Brooks also suggested that Conceptual Integrity can be attained by means of design principles, such as Propriety, and Orthogonality. However, Brooks' principles have not been formalized, posing obstacles to their application in practice, and to a deeper comprehension of Conceptual Integrity. This paper has three goals: first, to achieve deeper comprehension of Conceptual Integrity by deconstructing it into two phases, viz. Conceptualization and Modularization, iteratively applied during software system design; second, to show that the algebraic Linear Software Models already provide the hitherto lacking formalization of Brooks' design principles, which surprisingly belong mainly to the Modularization phase; third, to reconstruct Conceptualization and Modularization, preserving the desirable tension between: a- phases separation, each with its own specific formal manipulation techniques; b- precise transition between these phases, consisting of explicit mutual relationships. The tension stems from the Modularity Matrix linking two very different kinds of entities - system concepts and abstract mathematical constructs - as seldom linked before. The paper motivates the two software design phases, illustrating Conceptualization with examples, and characterizing Modularization by its more mature mathematical theory.