Software
Software research and analysis. Software design is the broad concern of how software is structured; architecture is a part of design — the decisions that are hard to change — but not all design is architecture.
This section organizes software design into:
- Architecture — the part of design concerned with module boundaries and system-level structure.
- Cohesion — cohesion as correctness relative to a partitioning rule; the (purity, completeness) pair; the knowledge-embodiment theorem.
- Coupling — coupling as access to a shared resource; coupling as a consequence of cohesion; the coupling floor.
- Languages — the design of, and analysis of, programming languages.
The five CUPID properties are assessed separately: CUPID tests them against the assessment requirement their author set, and against the standards that define engineering. The consolidated ledger of what IVP diagnoses about styles and sets is in Verdicts.
The change-management account of module structure that informs the software analysis is published in the paper on the Independent Variation Principle [1].
The formal development. The definitions, theorems, and proofs behind this page are published in:
- The Independent Variation Principle — Zenodo, 2026 — doi:10.5281/zenodo.20794332