Towards Development of Correct Software using Views
This paper aims at integrating heterogeneous documents used in pragmatic software develpoment methods to describe views with a formal refinement based software development process. Therefore we propose an integrated semantics of heterogeneous documents based on a common system model and a set of syntactic development steps with a well-defined semantics for document evolution. The use of the development steps is demonstrated in a small example.
💡 Research Summary
The paper addresses the persistent problem of maintaining consistency among heterogeneous artifacts—requirements specifications, design diagrams, source code fragments, and test cases—commonly produced in pragmatic software development. The authors propose a unified formal framework that integrates these artifacts through a common system model, which serves as an abstract meta‑model capturing system states, operations, and data structures in a mathematically precise manner. Each artifact is treated as a projection of this model: requirements become logical invariants and pre‑conditions, design diagrams map to structural and behavioral elements, implementation snippets translate into operational rules, and test cases correspond to property checks on the model.
Two core contributions are presented. First, an integrated semantics is defined that enables automatic consistency checking and tool‑supported verification across all views. By grounding every document in the same formal foundation, the approach allows existing model‑checking and theorem‑proving technologies to be applied uniformly. Second, a set of syntactic development steps—called document evolution rules—is introduced. These rules formalize how an artifact can be refined, extended, or specialized while preserving a refinement relationship between the before‑ and after‑states of the system model. Typical operations include strengthening pre‑conditions, weakening post‑conditions, adding or removing invariants, and decomposing abstract components into concrete ones. Each operation is accompanied by a proof obligation that guarantees the overall model’s correctness is not compromised.
The methodology is illustrated with a small banking account example. Starting from a high‑level requirement that “account balance must never be negative,” the authors incrementally introduce design elements (account and transaction objects, state‑transition diagrams for deposit and withdrawal), map these to Java methods, and finally generate JUnit tests that are interpreted as model property checks. At each stage, the defined evolution rules are applied, ensuring that the refined model remains a sound refinement of its predecessor. This case study demonstrates that the entire development lifecycle can be expressed as a single, continuously verified refinement chain, thereby catching design errors early and reducing the need for ad‑hoc consistency reviews.
In the discussion, the authors compare their approach to traditional Model‑Based Development (MBD) and classic formal methods. Unlike MBD, which typically relies on a single modeling language, the proposed framework accommodates multiple, heterogeneous documents without forcing them into a monolithic notation. Unlike pure formal methods, it does not require developers to abandon familiar engineering artifacts; instead, it provides a formal semantics that sits underneath existing practices. The paper acknowledges limitations: the common system model must be sufficiently expressive to capture domain‑specific artifacts such as performance simulations or security policies, and the current prototype lacks robust tool support for automating the evolution steps. Future work is suggested to develop integrated tooling, scale the approach to larger industrial case studies, and explore extensions of the meta‑model to cover non‑functional concerns. Overall, the paper offers a promising pathway toward rigorously correct software by bridging the gap between pragmatic documentation and formal refinement.
Comments & Academic Discussion
Loading comments...
Leave a Comment