Abstract
We present executable documentation as a natural continuation of a long-term trend of documentation/code alignment that started with self-documenting code in the seventies (choice of meaningful naming), followed by literate programming (documentation embedded in code) and the dual where documentation embeds code as provided by Jupyter notebooks in the beginning of the new millennium. Executable documentation goes a step further by turning domain-specific notation and documentation languages typically used in the requirements and the design phase into fully-fledged modeling/programming languages. The resulting so-called Purpose-Specific Languages are meant to tighten the semantic gap, while directly covering the what, providing the how via automated transformation, and reduce the handwritten part to why the project is of importance. We will illustrate the impact of this approach in the DevOps scenario where we turn the graphical notation GitLab provides for documenting CI/CD workflows into an Integrated Modeling Environment called Rig. At a larger scale, Rig can be seen as part of our Language-Driven Engineering approach where it covers the aspect of CI/CD at the modeling level with a push-button link towards execution. This turns the corresponding running system into the ‘ultimate’ documentation where the understanding of all stakeholders should converge.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
- 2.
Steffen et al. coined the term of mindset-supporting IDEs (mIDEs) as a special form of IMEs “that orchestrate the individual stakeholder-specific artifacts and aggregate them to a whole from which entire software systems are automatically generated” [36]. For the sake of simplicity, we will use the term IME in this paper.
- 3.
- 4.
- 5.
- 6.
Besides time to restore and change fail percentage, lead time and deploy frequency are the key metrics of the DevOps Research and Assessment (DORA) [1] to evaluate DevOps performances.
- 7.
We use human-friendly and human-readable synonymously here.
- 8.
The project is open source and publicly available via GitLab: https://gitlab.com/scce/isola2022-pwn-example#1.
- 9.
References
Explore DORA’s research program, https://www.devops-research.com/research.html. Accessed 8 Oct 2020
Spring boot. https://spring.io/projects/spring-boot. Accessed 24 Jul 2022
Aghajani, E.: Software documentation: automation and challenges. Ph.D. thesis, Università della Svizzera italiana (2020)
Allspaw, J., Hammond, P.: 10+ deploys per day: Dev and ops cooperation at Flickr. In: Velocity: Web Performance and Operations Conference, June 2009. https://www.youtube.com/watch?v=LdOe18KhtT4
Beck, K., et al.: Manifesto for Agile Software Development. https://agilemanifesto.org (2001). Accessed 4 Mar 2014
Ben-Kiki, O., Evans, C., döt Net, I.: YAML Ain’t Markup Language (YAML\(^{\rm TM}\)) Version 1.2. https://yaml.org/spec/1.2/spec.html (2009). Accessed 22 Jun 2021
Boßelmann, S., et al.: DIME: a programming-less modeling environment for web applications. In: Margaria, T., Steffen, B. (eds.) ISoLA 2016. LNCS, vol. 9953, pp. 809–832. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-47169-3_60
Broy, M.: Object-oriented programming and software development–a critical assessment. In: In: McIver, A., Morgan, C. (eds.) Programming Methodology. Monographs in Computer Science, pp. 211–221. Springer, New York (2003). https://doi.org/10.1007/978-0-387-21798-7_10
Chatley, R., Donaldson, A., Mycroft, A.: The next 7000 programming languages. In: Steffen, B., Woeginger, G. (eds.) Computing and Software Science. LNCS, vol. 10000, pp. 250–282. Springer, Cham (2019). https://doi.org/10.1007/978-3-319-91908-9_15
Dagger: A portable devkit for ci/cd pipelines. https://dagger.io/. Accessed 27 July 2022
Debois, P., et al.: DEVOPS: a software revolution in the making. J. Inf. Technol. Manag. 24(8), 3–39 (2011)
Dobing, B., Parsons, J.: Dimensions of UML diagram use: a survey of practitioners. J. Database Manage. (JDM) 19(1), 1–18 (2008)
Forward, A., Lethbridge, T.C.: The relevance of software documentation, tools and technologies: a survey. In: Proceedings of the 2002 ACM Symposium on Document Engineering, pp. 26–33. DocEng 2002, Association for Computing Machinery, New York, NY, USA (2002). https://doi.org/10.1145/585058.585065
Fowler, M.: Domain-specific languages guide. https://martinfowler.com/dsl.html. Accessed 06 Sept 2016
Goldap, P., et al.: PG 601 - Bridging the Gap. Technical report, TU Dortmund (2017)
Gruber, J.: Markdown: Syntax. https://daringfireball.net/projects/markdown/syntax
Hoare, C.A.: Hints on programming language design. Stanford Univ ca Dept of Computer Science, Technical report (1973)
Hurvitz, D.: Quotes via dan hurvitz. https://softwarequotes.com/author/via-dan-hurvitz. Accessed 20 July 2022
Kelly, S., Tolvanen, J.P.: Domain-Specific Modeling: Enabling Full Code Generation. Wiley-IEEE Computer Society Press, Hoboken (2008). https://doi.org/10.1002/9780470249260
Kluyver, T., et al.: Jupyter notebooks–a publishing format for reproducible computational workflows. In: Loizides, F., Scmidt, B. (eds.) Positioning and Power in Academic Publishing: Players, Agents and Agendas, pp. 87–90. IOS Press (2016). https://doi.org/10.3233/978-1-61499-649-1-87, https://eprints.soton.ac.uk/403913/
Knuth, D.E.: Literate programming. Comput. J. 27(2), 97–111 (1984)
Labouardy, M.: Pipeline as code: continuous delivery with Jenkins, Kubernetes, and terraform. Manning (2021). https://books.google.de/books?id=Lt9EEAAAQBAJ
Madsen, O.L., Møller-Pedersen, B.: Using supplementary properties to reduce the need for documentation. In: Margaria, T., Steffen, B. (eds.) ISoLA 2022. LNCS, vol. 13702, pp. 35–59. Springer (2022)
Mellor, S.J., Balcer, M.J.: Executable UML: A Foundation for Model-Driven Architecture. Addison-Wesley Professional (2002)
Naujokat, S., Lybecait, M., Kopetzki, D., Steffen, B.: CINCO: a simplicity-driven approach to full generation of domain-specific graphical modeling tools. Software Tools for Technology Transfer 20(3), 327–354 (2017). https://doi.org/10.1007/s10009-017-0453-6
Object Management Group (OMG): Documents associated with Object Constraint Language (OCL), Version 2.4 (2017). https://www.omg.org/spec/UML/2.5.1/. Accessed 08 Feb 209
O’Connor, C.: The norway problem - why StrictYAML refuses to do implicit typing and so should you. https://hitchdev.com/strictyaml/why/implicit-typing-removed/. Accessed 3 Sept 2021
Rangnau, T., Buijtenen, R.v., Fransen, F., Turkmen, F.: Continuous security testing: a case study on integrating dynamic security testing tools in ci/cd pipelines. In: 2020 IEEE 24th International Enterprise Distributed Object Computing Conference (EDOC), pp. 145–154 (2020). https://doi.org/10.1109/EDOC49727.2020.00026
Shahin, M., Babar, M.A., Zhu, L.: Continuous integration, delivery and deployment: a systematic review on approaches, tools, challenges and practices. IEEE Access 5, 3909–3943 (2017). https://doi.org/10.1109/ACCESS.2017.2685629
Smyth, S., et al.: Executable documentation: test-first in action. In: Margaria, T., Steffen, B. (eds.) ISoLA 2022. LNCS, vol. 13702, pp. 135–156. Springer (2022)
de St. Germain, H.J.: Commenting (jim’s cs topics). https://www.cs.utah.edu/~germain/PPS/Topics/commenting.html (2003), https://www.cs.utah.edu/~germain/PPS/Topics/commenting.html. Accessed 22 Jul 2022
Stallings, A.E.: After a Greek proverb. Poetry 199(4), 299–299 (2012)
Steffen, B.: Inter- & intradepartmental knowledge management barriers when offering single unit solutions (2016). https://essay.utwente.nl/70224/
Steffen, B., Howar, F., Tegeler, T., Steffen, B.: Agile business engineering: from transformation towards continuousinnovation. In: Margaria, T., Steffen, B. (eds.) ISoLA 2021. LNCS, vol. 13036, pp. 77–94. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-89159-6_6
Steffen, B., Steffen, B.: Asking why. In: Margaria, T., Steffen, B. (eds.) Leveraging Applications of Formal Methods, Verification and Validation, pp. 55–67. Springer International Publishing, Cham (2021)
Steffen, B., Gossen, F., Naujokat, S., Margaria, T.: Language-driven engineering: from general-purpose to purpose-specific languages. In: Steffen, B., Woeginger, G. (eds.) Computing and Software Science. LNCS, vol. 10000, pp. 311–344. Springer, Cham (2019). https://doi.org/10.1007/978-3-319-91908-9_17
Steffen, B., Narayan, P.: Full life-cycle support for end-to-end processes. IEEE Comput. 40(11), 64–73 (2007). https://doi.org/10.1109/MC.2007.386
Stevens, P.: Models as documents, documents as models. In: Margaria, T., Steffen, B. (eds.) ISoLA 2022. LNCS, vol. 13702, pp. 28–34. Springer (2022)
Sugiyama, K., Tagawa, S., Toda, M.: Methods for visual understanding of hierarchical system structures. IEEE Trans. Syst. Man Cybern. 11(2), 109–125 (1981)
Tegeler, T., Gossen, F., Steffen, B.: A model-driven approach to continuous practices for modern cloud-based web applications. In: 2019 9th International Conference on Cloud Computing, Data Science Engineering (Confluence), pp. 1–6 (2019). https://doi.org/10.1109/CONFLUENCE.2019.8776962
Tegeler, T., Teumert, S., Schürmann, J., Bainczyk, A., Busch, D., Steffen, B.: An Introduction to graphical modeling of CI/CD Workflows with rig. In: Margaria, T., Steffen, B. (eds.) ISoLA 2021. LNCS, vol. 13036, pp. 3–17. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-89159-6_1
Teumert, S.: Rig | low-code ci/cd modeling. https://scce.gitlab.io/rig/. Accessed 07 Jan 2022
Toghraei, M.: Piping and Instrumentation Diagram Development. Wiley (2019). https://books.google.de/books?id=ICONDwAAQBAJ
Wortmann, N.: Modellbasierte Modellierung von industriellen Zentrifugen mit Codegenerierung für Steuerungssysteme. Bachelor thesis, Münster University of Applied Sciences (2015)
Wortmann, N., Michel, M., Naujokat, S.: A fully model-based approach to software development for industrial centrifuges. In: Margaria, T., Steffen, B. (eds.) ISoLA 2016. LNCS, vol. 9953, pp. 774–783. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-47169-3_58
Zampetti, F., Geremia, S., Bavota, G., Di Penta, M.: Ci/cd pipelines evolution and restructuring: a qualitative and quantitative study. In: 2021 IEEE International Conference on Software Maintenance and Evolution (ICSME),. pp. 471–482 (2021). https://doi.org/10.1109/ICSME52107.2021.00048
Zweihoff, P.: Aligned and collaborative language-driven engineering. Dissertation, TU Dortmund, Dortmund, Germany (2022). https://doi.org/10.17877/DE290R-22594, https://eldorado.tu-dortmund.de/handle/2003/40736
Zweihoff, P., Tegeler, T., Schürmann, J., Bainczyk, A., Steffen, B.: Aligned, purpose-driven cooperation: the future way of system development. In: Margaria, T., Steffen, B. (eds.) ISoLA 2021. LNCS, vol. 13036, pp. 426–449. Springer, Cham (2021). https://doi.org/10.1007/978-3-030-89159-6_27
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Tegeler, T., Boßelmann, S., Schürmann, J., Smyth, S., Teumert, S., Steffen, B. (2022). Executable Documentation: From Documentation Languages to Purpose-Specific Languages. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods, Verification and Validation. Software Engineering. ISoLA 2022. Lecture Notes in Computer Science, vol 13702. Springer, Cham. https://doi.org/10.1007/978-3-031-19756-7_10
Download citation
DOI: https://doi.org/10.1007/978-3-031-19756-7_10
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-19755-0
Online ISBN: 978-3-031-19756-7
eBook Packages: Computer ScienceComputer Science (R0)