Abstract
Correctness-by-Construction (CbC) is an incremental software development technique in the field of formal methods to create functionally correct programs guided by a specification. In contrast to post-hoc verification, where the specification and verification take part after implementing a program, with CbC the specification is defined first, and then the program is successively created using a small set of refinement rules that define side conditions preserving the correctness of the program. This specification-first, refinement-based approach as pursued by CbC has the advantage that errors are likely to be detected earlier in the design process and can be tracked more easily. Even though the idea of CbC emerged over 40 years ago, CbC is not widespread and is mostly used to create small algorithms.We believe in the idea of CbC and envision a scaled CbC approach that contributes to solving problems of modern software verification. In this short paper, we give an overview of our research regarding CbC in four different lines of research. For all of them, we provide tool support for building the CorC ecosystem that even further enables CbC-based development for different fields of application and size of software systems. Furthermore, we give an outlook on future work that extends on our concepts for CbC.
- Jean-Raymond Abrial. 2010. Modeling in Event-B: System and Software Engineering. Cambridge University Press.Google Scholar
Digital Library
- Wolfgang Ahrendt, Bernhard Beckert, Richard Bubel, Reiner Hähnle, Peter H. Schmitt, and Mattias Ulbrich. 2016. Deductive Software Verification -- The KeY Book. Springer.Google Scholar
- Ralph-Johan Back, Johannes Eriksson, and Magnus Myreen. 2007. Testing and Verifying Invariant Based Programs in the SOCOS Environment. In International Conference on Tests and Proofs. Springer.Google Scholar
- Maurice H ter Beek, Loek Cleophas, Ina Schaefer, and BruceWWatson. 2018. X-by-Construction. In International Symposium on Leveraging Applications of Formal Methods. Springer, 359--364.Google Scholar
- Tabea Bordis, Loek Cleophas, Alexander Kittelmann, Tobias Runge, Ina Schaefer, and Bruce W Watson. 2022. Re-CorC-ing KeY: Correctby- Construction Software Development Based on KeY. In The Logic of Software. A Tasting Menu of Formal Methods. Springer, 80--104.Google Scholar
- Tabea Bordis, Tobias Runge, Alexander Knüppel, Thomas Thüm, and Ina Schaefer. 2020. Variational Correctness-by-Construction. In Proceedings of the 14th International Working Conference on Variability Modelling of Software-Intensive Systems. 1--9.Google Scholar
- Tabea Bordis, Tobias Runge, and Ina Schaefer. 2020. Correctness-by- Construction for Feature-Oriented Software Product Lines. In International Conference on Generative Programming: Concepts and Experiences. 22--34.Google Scholar
- Tabea Bordis, Tobias Runge, David Schultz, and Ina Schaefer. 2022. Family-based and Product-based Development of Correct-by- Construction Software Product Lines. Journal of Computer Languages (2022), 101119.Google Scholar
- Krzysztof Czarnecki and Ulrich Eisenecker. 2000. Generative Programming: Methods, Tools, and Applications. Citeseer.Google Scholar
- Edsger W. Dijkstra. 1976. A Discipline of Programming (1st ed.). Prentice Hall PTR.Google Scholar
Digital Library
- David Gries. 1981. The Science of Programming (1st ed.). Springer.Google Scholar
- Anthony Hall and Roderick Chapman. 2002. Correctness by Construction: Developing a Commercial Secure System. IEEE software 19, 1 (2002), 18--25.Google Scholar
- Alexander Knüppel, Tobias Runge, and Ina Schaefer. 2020. Scaling Correctness-by-Construction. In International Symposium on Leveraging Applications of Formal Methods. Springer, 187--207.Google Scholar
- Derrick G. Kourie and Bruce W. Watson. 2012. The Correctness-by- Construction Approach to Programming. Springer.Google Scholar
- Marcel Oliveira, Ana Cavalcanti, and JimWoodcock. 2003. ArcAngel: A Tactic Language for Refinement. Formal Aspects of Computing (2003).Google Scholar
- Tobias Runge, Tabea Bordis, Thomas Thüm, and Ina Schaefer. 2021. Teaching Correctness-by-Construction and Post-hoc Verification--The Online Experience. In Formal Methods Teaching Workshop. Springer, 101--116.Google Scholar
- Tobias Runge, Alexander Knüppel, Thomas Thüm, and Ina Schaefer. 2020. Lattice-based Information Flow Control-by-Construction for Security-by-Design. In Proceedings of the 8th International Conference on Formal Methods in Software Engineering. 44--54.Google Scholar
Digital Library
- Tobias Runge, Ina Schaefer, Loek Cleophas, Thomas Thüm, Derrick Kourie, and Bruce W. Watson. 2019. Tool Support for Correctness-by- Construction. In International Conference on Fundamental Approaches to Software Engineering. Springer, 25--42.Google Scholar
- Tobias Runge, Thomas Thüm, Loek Cleophas, Ina Schaefer, and BruceWWatson. 2019. Comparing Correctness-by-Construction with Post-Hoc Verification - A Qualitative User Study. In Refine. Springer.Google Scholar
- Thomas Thüm, Sven Apel, Christian Kästner, Ina Schaefer, and Gunter Saake. 2014. A Classification and Survey of Analysis Strategies for Software Product Lines. Comput. Surveys (2014).Google Scholar
- Thomas Thüm, Christian Kästner, Fabian Benduhn, Jens Meinicke, Gunter Saake, and Thomas Leich. 2014. FeatureIDE: An Extensible Framework for Feature-Oriented Software Development. Science of Computer Programming 79, 0 (2014), 70--85.Google Scholar
Digital Library
Recommendations
Correctness-by-construction for feature-oriented software product lines
GPCE 2020: Proceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and ExperiencesSoftware product lines are increasingly used to handle the growing demand of custom-tailored software variants. They provide systematic reuse of software paired with variability mechanisms in the code to implement whole product families rather than ...
VarCorC: Developing Object-Oriented Software Product Lines Using Correctness-by-Construction
Software Engineering and Formal Methods. SEFM 2022 Collocated WorkshopsAbstractFunctional correctness is an important concern, especially in the field of safety-critical systems. Correctness-by-Construction (CbC) is an incremental software development technique to create functionally correct programs guided by a formal ...
Correctness-by-Construction Meets Refinement Types
FTfJP 2023: Proceedings of the 25th ACM International Workshop on Formal Techniques for Java-like ProgramsType systems provide specifications and enable reasoning about the programs. Among other benefits, type systems provide guarantees of the absence of certain (ill-typed) program behaviors. Refinement types further enrich the expressiveness of type ...






Comments