Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Small steps is key here: each refinement should be small enough to be immediately convincing in isolation and without extensive additional ‘magic’.
- 2.
- 3.
We advocate not over-formalising this, cf. the predicate above, which has not been written out in detail.
- 4.
The latter three are all as one would expect from the Pascal family of languages and we do not further specify them.
- 5.
This was once well-understood by students of the Pascal family of languages, but was thoroughly bastardised by C/C++ and then Java (as a statement ‘terminator’), and now forms rather arbitrary punctuation largely unneeded for parsing the language.
- 6.
Termination and progress arguments also require an integer function known as a variant — the interested reader is referred to [12].
- 7.
in some contexts referred to as Knowledge Organisation Systems.
- 8.
An alternative taxonomy would start with a single-keyword pattern matching specification at the root, and add refinements to add multiple-keyword algorithms.
References
Dijkstra, E.W.: A constructive approach to the problem of program correctness. BIT Numer. Math. 8(3), 174–186 (1968)
Hoare, C.: Proof of a program: FIND. Commun. ACM 14(1), 39–45 (1971)
Wirth, N.: Program development by stepwise refinement. Commun. ACM 14(4), 221–227 (1971)
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)
Krueger, C.: Eliminating the adoption barrier. IEEE Softw. 19(4), 29–31 (2002)
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)
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
Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Upper Saddle River (1976)
Gries, D.: The Science of Programming. Springer, Berlin (1987)
Cohen, E.: Programming in the 1990s: An Introduction to the Calculation of Programs. Springer, Berlin (1990)
Morgan, C.: Programming from Specifications, 2nd edn. Prentice Hall, Upper Saddle River (1994)
Kourie, D.G., Watson, B.W.: The Correctness-by-Construction Approach to Programming. Springer, Berlin (2012)
Back, R.J.: Refinement Calculus—A Systematic Introduction. Springer, Berlin (1998)
Liskov, B., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)
Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall, Upper Saddle River (1997)
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)
Wikipedia: Taxonomy (general)–Wikipedia, The Free Encyclopedia (2016). https://en.wikipedia.org/w/index.php?title=Taxonomy_(general)&oldid=715042676. Accessed 30 Apr 2016
Wikipedia: Carl Linnaeus-Wikipedia, The Free Encyclopedia (2016). Accessed 30 Apr 2016
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)
Brainerd, B.: Semi-lattices and taxonomic systems. Noûs 4(2), 189–199 (1970)
Schock, R.: On classifications and hierarchies. J. Gen. Philos. Sci. 10, 98–106 (1979)
Thomason, R.H.: Species, determinates and natural kinds. Noûs 3(1), 95–101 (1969)
Salton, G.: Automatic Information Organization and Retrieval. McGraw-Hill, New York (1968)
Barwise, J., Seligman, J.: Information Flow: The Logic of Distributed Systems. Cambridge University Press, Cambridge (1997)
Priss, U.: Formal concept analysis in information science. Ann. Rev. Inf. Sci. Technol. 40(1), 521–543 (2006)
Wille, R.: Liniendiagramme hierarchischer Begriffssysteme. Studien zur Klassifikation, Indeks Verlag (1984)
Gruber, T.R.: A translation approach to portable ontologies. Knowl. Acquisition 5(2), 199–220 (1993)
Jonkers, H.: Abstraction, specification and implementation techniques: with an application to garbage collection. Ph.D. thesis, Technische Hogeschool Eindhoven (1982)
Kourie, D.G.: An approach to defining abstractions, refinements and enrichments. Quæstiones Informaticæ 6(4), 174–178 (1989)
Banach, R., Poppleton, M., Jeske, C., Stepney, S.: Engineering and theoretical underpinnings of retrenchment. Sci. Comput. Program. 67(2/3), 301–329 (2007)
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)
Darlington, J.: A synthesis of several sorting algorithms. Acta Informatica 11(1), 1–30 (1978)
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)
Merritt, S.M.: An inverted taxonomy of sorting algorithms. Commun. ACM 28(1), 96–99 (1985)
Watson, B.W.: Taxonomies and toolkits of regular language algorithms. Ph.D. thesis, Technische Universiteit Eindhoven (1995)
Marcelis, A.: On the classification of attribute evaluation algorithms. Sci. Comput. Program. 14(1), 1–24 (1990)
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)
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 2005
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 2005
Cleophas, L.: Tree algorithms: two taxonomies and a toolkit. Ph.D. thesis, Technische Universiteit Eindhoven (2008)
Watson, B.W.: Constructing minimal acyclic deterministic finite automata. Ph.D. thesis, University of Pretoria (2010)
Brooks Jr., F.P.: The Mythical Man-month - Essays on Software Engineering, 2nd edn. Addison-Wesley, Boston (1995)
Pohl, K., Böckle, G., van der Linden, F.J.: Software Product Line Engineering - Foundations, Principles and Techniques. Springer, Berlin (2005)
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)
Acknowledgments
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.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2016 Springer International Publishing AG
About this paper
Cite this paper
Cleophas, L., Kourie, D.G., Pieterse, V., Schaefer, I., Watson, B.W. (2016). Correctness-by-Construction \(\wedge \) Taxonomies \(\Rightarrow \) Deep Comprehension of Algorithm Families. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods, Verification and Validation: Foundational Techniques. ISoLA 2016. Lecture Notes in Computer Science(), vol 9952. Springer, Cham. https://doi.org/10.1007/978-3-319-47166-2_54
Download citation
DOI: https://doi.org/10.1007/978-3-319-47166-2_54
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-47165-5
Online ISBN: 978-3-319-47166-2
eBook Packages: Computer ScienceComputer Science (R0)