Skip to main content

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

  • Conference paper
  • First Online:
Leveraging Applications of Formal Methods, Verification and Validation: Foundational Techniques (ISoLA 2016)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 9952))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Small steps is key here: each refinement should be small enough to be immediately convincing in isolation and without extensive additional ‘magic’.

  2. 2.

    We say clearly because these notions of refinement have been known intuitively and in natural language since the 1960s, though they have been more recently properly formalised by many, including Back then Morgan [11, 13] and later for object-oriented programs by Liskov and Meyer [14, 15].

  3. 3.

    We advocate not over-formalising this, cf. the predicate above, which has not been written out in detail.

  4. 4.

    The latter three are all as one would expect from the Pascal family of languages and we do not further specify them.

  5. 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. 6.

    Termination and progress arguments also require an integer function known as a variant — the interested reader is referred to [12].

  7. 7.

    in some contexts referred to as Knowledge Organisation Systems.

  8. 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

  1. Dijkstra, E.W.: A constructive approach to the problem of program correctness. BIT Numer. Math. 8(3), 174–186 (1968)

    Article  MathSciNet  MATH  Google Scholar 

  2. Hoare, C.: Proof of a program: FIND. Commun. ACM 14(1), 39–45 (1971)

    Article  MATH  Google Scholar 

  3. Wirth, N.: Program development by stepwise refinement. Commun. ACM 14(4), 221–227 (1971)

    Article  MATH  Google Scholar 

  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. Krueger, C.: Eliminating the adoption barrier. IEEE Softw. 19(4), 29–31 (2002)

    Article  Google Scholar 

  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. 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

    Chapter  Google Scholar 

  8. Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Upper Saddle River (1976)

    MATH  Google Scholar 

  9. Gries, D.: The Science of Programming. Springer, Berlin (1987)

    MATH  Google Scholar 

  10. Cohen, E.: Programming in the 1990s: An Introduction to the Calculation of Programs. Springer, Berlin (1990)

    Book  MATH  Google Scholar 

  11. Morgan, C.: Programming from Specifications, 2nd edn. Prentice Hall, Upper Saddle River (1994)

    MATH  Google Scholar 

  12. Kourie, D.G., Watson, B.W.: The Correctness-by-Construction Approach to Programming. Springer, Berlin (2012)

    Book  MATH  Google Scholar 

  13. Back, R.J.: Refinement Calculus—A Systematic Introduction. Springer, Berlin (1998)

    Book  MATH  Google Scholar 

  14. Liskov, B., Wing, J.M.: A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16(6), 1811–1841 (1994)

    Article  Google Scholar 

  15. Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall, Upper Saddle River (1997)

    MATH  Google Scholar 

  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)

    MATH  Google Scholar 

  17. Wikipedia: Taxonomy (general)–Wikipedia, The Free Encyclopedia (2016). https://en.wikipedia.org/w/index.php?title=Taxonomy_(general)&oldid=715042676. Accessed 30 Apr 2016

  18. Wikipedia: Carl Linnaeus-Wikipedia, The Free Encyclopedia (2016). Accessed 30 Apr 2016

    Google Scholar 

  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. Brainerd, B.: Semi-lattices and taxonomic systems. Noûs 4(2), 189–199 (1970)

    Article  Google Scholar 

  21. Schock, R.: On classifications and hierarchies. J. Gen. Philos. Sci. 10, 98–106 (1979)

    MathSciNet  Google Scholar 

  22. Thomason, R.H.: Species, determinates and natural kinds. Noûs 3(1), 95–101 (1969)

    Article  Google Scholar 

  23. Salton, G.: Automatic Information Organization and Retrieval. McGraw-Hill, New York (1968)

    Google Scholar 

  24. Barwise, J., Seligman, J.: Information Flow: The Logic of Distributed Systems. Cambridge University Press, Cambridge (1997)

    Book  MATH  Google Scholar 

  25. Priss, U.: Formal concept analysis in information science. Ann. Rev. Inf. Sci. Technol. 40(1), 521–543 (2006)

    Article  Google Scholar 

  26. Wille, R.: Liniendiagramme hierarchischer Begriffssysteme. Studien zur Klassifikation, Indeks Verlag (1984)

    Google Scholar 

  27. Gruber, T.R.: A translation approach to portable ontologies. Knowl. Acquisition 5(2), 199–220 (1993)

    Article  Google Scholar 

  28. Jonkers, H.: Abstraction, specification and implementation techniques: with an application to garbage collection. Ph.D. thesis, Technische Hogeschool Eindhoven (1982)

    Google Scholar 

  29. Kourie, D.G.: An approach to defining abstractions, refinements and enrichments. Quæstiones Informaticæ 6(4), 174–178 (1989)

    Google Scholar 

  30. Banach, R., Poppleton, M., Jeske, C., Stepney, S.: Engineering and theoretical underpinnings of retrenchment. Sci. Comput. Program. 67(2/3), 301–329 (2007)

    Article  MathSciNet  MATH  Google Scholar 

  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. Darlington, J.: A synthesis of several sorting algorithms. Acta Informatica 11(1), 1–30 (1978)

    Article  MathSciNet  MATH  Google Scholar 

  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)

    Chapter  Google Scholar 

  34. Merritt, S.M.: An inverted taxonomy of sorting algorithms. Commun. ACM 28(1), 96–99 (1985)

    Article  Google Scholar 

  35. Watson, B.W.: Taxonomies and toolkits of regular language algorithms. Ph.D. thesis, Technische Universiteit Eindhoven (1995)

    Google Scholar 

  36. Marcelis, A.: On the classification of attribute evaluation algorithms. Sci. Comput. Program. 14(1), 1–24 (1990)

    Article  MATH  Google Scholar 

  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)

    Article  MATH  Google Scholar 

  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 2005

    Google Scholar 

  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 2005

    Google Scholar 

  40. Cleophas, L.: Tree algorithms: two taxonomies and a toolkit. Ph.D. thesis, Technische Universiteit Eindhoven (2008)

    Google Scholar 

  41. Watson, B.W.: Constructing minimal acyclic deterministic finite automata. Ph.D. thesis, University of Pretoria (2010)

    Google Scholar 

  42. Brooks Jr., F.P.: The Mythical Man-month - Essays on Software Engineering, 2nd edn. Addison-Wesley, Boston (1995)

    Google Scholar 

  43. Pohl, K., Böckle, G., van der Linden, F.J.: Software Product Line Engineering - Foundations, Principles and Techniques. Springer, Berlin (2005)

    Book  MATH  Google Scholar 

  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)

    Chapter  Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Loek Cleophas .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics