The Correctness-by-Construction Approach to Programming

The focus of this book is on bridging the gap between two extreme methods for developing software. On the one hand, there are texts and approaches that are so formal that they scare off all but the most dedicated theoretical computer scientists. On the other, there are some who believe that any measure of formality is a waste of time, resulting in software that is developed by following gut feelings and intuitions. Kourie and Watson advocate an approach known as correctness-by-construction, a technique to derive algorithms that relies on formal theory, but that requires such theory to be deployed in a very systematic and pragmatic way. First they provide the key theoretical background (like first-order predicate logic or refinement laws) that is needed to understand and apply the method. They then detail a series of graded examples ranging from binary search to lattice cover graph construction and finite automata minimization in order to show how it can be applied to increasingly complex algorithmic problems. The principal purpose of this book is to change the way software developers approach their task at programming-in-the-small level, with a view to improving code quality. Thus it coheres with both the IEEEs Guide to the Software Engineering Body of Knowledge (SWEBOK) recommendations, which identifies themes covered in this book as part of the software engineers arsenal of tools and methods, and with the goals of the Software Engineering Method and Theory (SEMAT) initiative, which aims to refound software engineering based on a solid theory.

[1]  Hervé Leblanc,et al.  Galois lattice as a framework to specify building class hierarchies algorithms , 2000, RAIRO Theor. Informatics Appl..

[2]  Catherine Blake,et al.  UCI Repository of machine learning databases , 1998 .

[3]  J. Bordat Calcul pratique du treillis de Galois d'une correspondance , 1986 .

[4]  Uri Dekel Applications of Concept Lattices to Code Inspection and Review , 2002 .

[5]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.

[6]  Owen Astrachan,et al.  On the Cruelty of Really Teaching Computer Science redux , 2005 .

[7]  Claudio Carpineto,et al.  A lattice conceptual clustering system and its application to browsing retrieval , 2004, Machine Learning.

[8]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[9]  Pulling Rabbits Out of the Hat , 1942 .

[10]  Jack Bresenham,et al.  A linear algorithm for incremental digital display of circular arcs , 1977, CACM.

[11]  Andrei Alexandrescu,et al.  Modern C++ design: generic programming and design patterns applied , 2001 .

[12]  Gabriela Arévalo,et al.  Understanding Behavioral Dependencies in Class Hierarchies using Concept Analysis , 2003, Obj. Logiciel Base données Réseaux.

[13]  Hafedh Mili,et al.  Building and maintaining analysis-level class hierarchies using Galois Lattices , 1993, OOPSLA '93.

[14]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[15]  Bruce W. Watson Directly constructing minimal DFAs : combining two algorithms by Brzozowski , 2002, South Afr. Comput. J..

[16]  D. G. Kourie An approach to defining abstractions, refinements and enrichments , 1989 .

[17]  Frank Tip,et al.  Reengineering class hierarchies using concept analysis , 1998, SIGSOFT '98/FSE-6.

[18]  Rudolf Wille,et al.  Restructuring Lattice Theory: An Approach Based on Hierarchies of Concepts , 2009, ICFCA.

[19]  Lc Freeman,et al.  USING GALOIS LATTICES TO REPRESENT NETWORK DATA , 1993 .

[20]  Van der Merwe,et al.  Constructing concept lattices and compressed pseudo-lattices , 2003 .

[21]  Rokia Missaoui,et al.  INCREMENTAL CONCEPT FORMATION ALGORITHMS BASED ON GALOIS (CONCEPT) LATTICES , 1995, Comput. Intell..

[22]  Bernhard Ganter,et al.  Two Basic Algorithms in Concept Analysis , 2010, ICFCA.

[23]  Sergei O. Kuznetsov,et al.  Comparing performance of algorithms for generating concept lattices , 2002, J. Exp. Theor. Artif. Intell..

[24]  Lhouari Nourine,et al.  A Fast Algorithm for Building Lattices , 1999, Inf. Process. Lett..

[25]  Derrick G. Kourie,et al.  An incremental algorithm to construct a lattice of set intersections , 2009, Sci. Comput. Program..

[26]  B. Davey,et al.  Introduction to Lattices and Order: Appendix B: further reading , 2002 .

[27]  Rokia Missaoui,et al.  Formal Concept Analysis for Knowledge Discovery and Data Mining: The New Challenges , 2004, ICFCA.

[28]  Bertrand Meyer Touch of Class: Learning to Program Well with Objects and Contracts , 2009 .

[29]  Bruce W. Watson,et al.  Incremental construction of minimal acyclic finite state automata , 2000, CL.

[30]  Gerd Stumme,et al.  Formal Concept Analysis: foundations and applications , 2005 .