Correctness-by-Construction \(\wedge \) Taxonomies \(\Rightarrow \) Deep Comprehension of Algorithm Families

  • Loek CleophasEmail author
  • Derrick G. Kourie
  • Vreda Pieterse
  • Ina Schaefer
  • Bruce W. Watson
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9952)


Correctness-by-construction (CbC) is an approach for developing algorithms inline with rigorous correctness arguments. A high-level specification is evolved into an implementation in a sequence of small, tractable refinement steps guaranteeing the resulting implementation to be correct. CbC facilitates the design of algorithms that are more efficient and more elegant than code that is hacked into correctness. In this paper, we discuss another benefit of CbC, i.e., that it supports the deep comprehension of algorithm families. We organise the different refinements of the algorithms carried out during CbC-based design in a taxonomy. The constructed taxonomy provides a classification of the commonality and variability of the algorithm family and, hence, provides deep insights into their structural relationships. Such taxonomies together with the implementation of the algorithms as toolkits provide an excellent starting point for extractive and proactive software product line engineering.


Software Product Line Formal Concept Analysis Deterministic Finite Automaton Pattern Match Algorithm Software Product Line Engineering 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.



The authors thank Christoph Seidl for fruitful discussions related to this work. This work was partially supported by the DFG (German Research Foundation) under grant SCHA1635/2-2, by the NRF (South African National Research Foundation) under grants 81606 and 93063.


  1. 1.
    Dijkstra, E.W.: A constructive approach to the problem of program correctness. BIT Numer. Math. 8(3), 174–186 (1968)MathSciNetCrossRefzbMATHGoogle Scholar
  2. 2.
    Hoare, C.: Proof of a program: FIND. Commun. ACM 14(1), 39–45 (1971)CrossRefzbMATHGoogle Scholar
  3. 3.
    Wirth, N.: Program development by stepwise refinement. Commun. ACM 14(4), 221–227 (1971)CrossRefzbMATHGoogle Scholar
  4. 4.
    Cleophas, L., Watson, B.W., Kourie, D.G., Boake, A., Obiedkov, S.: TABASCO: using concept-based taxonomies in domain engineering. S. Afr. Comput. J. 37, 30–40 (2006)Google Scholar
  5. 5.
    Krueger, C.: Eliminating the adoption barrier. IEEE Softw. 19(4), 29–31 (2002)CrossRefGoogle Scholar
  6. 6.
    Schaefer, I., Seidl, C., Cleophas, L., Watson, B.W.: SPLicing TABASCO: custom-tailored software product line variants from taxonomy-based toolkits. In: SAICSIT 2015, pp. 34:1–34:10 (2015)Google Scholar
  7. 7.
    Schaefer, I., Seidl, C., Cleophas, L., Watson, B.W.: Tax-PLEASE—towards taxonomy-based software product line engineering. In: Kapitsaki, G., Santana de Almeida, E. (eds.) ICSR 2016. LNCS, vol. 9679, pp. 63–70. Springer, Heidelberg (2016). doi: 10.1007/978-3-319-35122-3_5 CrossRefGoogle Scholar
  8. 8.
    Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Upper Saddle River (1976)zbMATHGoogle Scholar
  9. 9.
    Gries, D.: The Science of Programming. Springer, Berlin (1987)zbMATHGoogle Scholar
  10. 10.
    Cohen, E.: Programming in the 1990s: An Introduction to the Calculation of Programs. Springer, Berlin (1990)CrossRefzbMATHGoogle Scholar
  11. 11.
    Morgan, C.: Programming from Specifications, 2nd edn. Prentice Hall, Upper Saddle River (1994)zbMATHGoogle Scholar
  12. 12.
    Kourie, D.G., Watson, B.W.: The Correctness-by-Construction Approach to Programming. Springer, Berlin (2012)CrossRefzbMATHGoogle Scholar
  13. 13.
    Back, R.J.: Refinement Calculus—A Systematic Introduction. Springer, Berlin (1998)CrossRefzbMATHGoogle Scholar
  14. 14.
    Liskov, B., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)CrossRefGoogle Scholar
  15. 15.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall, Upper Saddle River (1997)zbMATHGoogle Scholar
  16. 16.
    Feijen, W.H., van Gasteren, A., Gries, D., Misra, J. (eds.): Beauty is our Business: A Birthday Salute to Edsger W. Dijkstra. Springer, Berlin (1990)zbMATHGoogle Scholar
  17. 17.
    Wikipedia: Taxonomy (general)–Wikipedia, The Free Encyclopedia (2016). Accessed 30 Apr 2016
  18. 18.
    Wikipedia: Carl Linnaeus-Wikipedia, The Free Encyclopedia (2016). Accessed 30 Apr 2016Google Scholar
  19. 19.
    Pieterse, V., Kourie, D.G.: Lists, taxonomies, lattices, thesauri and ontologies: paving a pathway through a terminological jungle. Knowl. Organ. 41(3), 217–229 (2014)Google Scholar
  20. 20.
    Brainerd, B.: Semi-lattices and taxonomic systems. Noûs 4(2), 189–199 (1970)CrossRefGoogle Scholar
  21. 21.
    Schock, R.: On classifications and hierarchies. J. Gen. Philos. Sci. 10, 98–106 (1979)MathSciNetGoogle Scholar
  22. 22.
    Thomason, R.H.: Species, determinates and natural kinds. Noûs 3(1), 95–101 (1969)CrossRefGoogle Scholar
  23. 23.
    Salton, G.: Automatic Information Organization and Retrieval. McGraw-Hill, New York (1968)Google Scholar
  24. 24.
    Barwise, J., Seligman, J.: Information Flow: The Logic of Distributed Systems. Cambridge University Press, Cambridge (1997)CrossRefzbMATHGoogle Scholar
  25. 25.
    Priss, U.: Formal concept analysis in information science. Ann. Rev. Inf. Sci. Technol. 40(1), 521–543 (2006)CrossRefGoogle Scholar
  26. 26.
    Wille, R.: Liniendiagramme hierarchischer Begriffssysteme. Studien zur Klassifikation, Indeks Verlag (1984)Google Scholar
  27. 27.
    Gruber, T.R.: A translation approach to portable ontologies. Knowl. Acquisition 5(2), 199–220 (1993)CrossRefGoogle Scholar
  28. 28.
    Jonkers, H.: Abstraction, specification and implementation techniques: with an application to garbage collection. Ph.D. thesis, Technische Hogeschool Eindhoven (1982)Google Scholar
  29. 29.
    Kourie, D.G.: An approach to defining abstractions, refinements and enrichments. Quæstiones Informaticæ 6(4), 174–178 (1989)Google Scholar
  30. 30.
    Banach, R., Poppleton, M., Jeske, C., Stepney, S.: Engineering and theoretical underpinnings of retrenchment. Sci. Comput. Program. 67(2/3), 301–329 (2007)MathSciNetCrossRefzbMATHGoogle Scholar
  31. 31.
    Kovács, L.: Role of negative properties in knowledge modeling. In: Proceedings of the 9th International Conference on Applied Informatics, Eger, Hungary, vol. 1, pp. 67–74 (2014)Google Scholar
  32. 32.
    Darlington, J.: A synthesis of several sorting algorithms. Acta Informatica 11(1), 1–30 (1978)MathSciNetCrossRefzbMATHGoogle Scholar
  33. 33.
    Broy, M.: Program construction by transformations: a family tree of sorting programs. In: Biermann, A.W., Guiho, G. (eds.) Computer Program Synthesis Methodologies, pp. 1–49. Reidel, Dordrecht (1983)CrossRefGoogle Scholar
  34. 34.
    Merritt, S.M.: An inverted taxonomy of sorting algorithms. Commun. ACM 28(1), 96–99 (1985)CrossRefGoogle Scholar
  35. 35.
    Watson, B.W.: Taxonomies and toolkits of regular language algorithms. Ph.D. thesis, Technische Universiteit Eindhoven (1995)Google Scholar
  36. 36.
    Marcelis, A.: On the classification of attribute evaluation algorithms. Sci. Comput. Program. 14(1), 1–24 (1990)CrossRefzbMATHGoogle Scholar
  37. 37.
    Cleophas, L., Watson, B.W., Zwaan, G.: A new taxonomy of sublinear right-to-left scanning keyword pattern matching algorithms. Sci. Comput. Program. 75(11), 1095–1112 (2010)CrossRefzbMATHGoogle Scholar
  38. 38.
    Bosman, R.P.: A taxonomy of approximate pattern matching algorithms in strings. Master’s thesis, Department of Mathematics and Computer Science, Technishe Universiteit Eindhoven, Eindhoven, The Netherlands, March 2005Google Scholar
  39. 39.
    van de Rijdt, M.G.: Two-dimensional pattern matching. Master’s thesis, Department of Mathematics and Computer Science, Technishe Universiteit Eindhoven, Eindhoven, The Netherlands, August 2005Google Scholar
  40. 40.
    Cleophas, L.: Tree algorithms: two taxonomies and a toolkit. Ph.D. thesis, Technische Universiteit Eindhoven (2008)Google Scholar
  41. 41.
    Watson, B.W.: Constructing minimal acyclic deterministic finite automata. Ph.D. thesis, University of Pretoria (2010)Google Scholar
  42. 42.
    Brooks Jr., F.P.: The Mythical Man-month - Essays on Software Engineering, 2nd edn. Addison-Wesley, Boston (1995)Google Scholar
  43. 43.
    Pohl, K., Böckle, G., van der Linden, F.J.: Software Product Line Engineering - Foundations, Principles and Techniques. Springer, Berlin (2005)CrossRefzbMATHGoogle Scholar
  44. 44.
    Batory, D.: Feature models, grammars, and propositional formulas. In: Obbink, H., Pohl, K. (eds.) SPLC 2005. LNCS, vol. 3714, pp. 7–20. Springer, Heidelberg (2005)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG 2016

Authors and Affiliations

  • Loek Cleophas
    • 1
    • 2
    Email author
  • Derrick G. Kourie
    • 1
    • 3
  • Vreda Pieterse
    • 4
  • Ina Schaefer
    • 5
  • Bruce W. Watson
    • 1
    • 3
  1. 1.Department of Information ScienceStellenbosch UniversityStellenboschSouth Africa
  2. 2.Software Engineering and Technology GroupTechnische Universiteit EindhovenEindhovenThe Netherlands
  3. 3.Centre for Artificial Intelligence ResearchCSIR Meraka InstitutePretoriaSouth Africa
  4. 4.Department of Computer ScienceUniversity of PretoriaPretoriaSouth Africa
  5. 5.Software Engineering InstituteTechnische Universität BraunschweigBraunschweigGermany

Personalised recommendations