Generating Software for Well-Understood Domains

Authors Jacques Carette , Spencer W. Smith , Jason Balaci

Thumbnail PDF


  • Filesize: 1.22 MB
  • 12 pages

Document Identifiers

Author Details

Jacques Carette
  • Department of Computing and Software, McMaster University, Hamilton, Canada
Spencer W. Smith
  • Department of Computing and Software, McMaster University, Hamilton, Canada
Jason Balaci
  • Department of Computing and Software, McMaster University, Hamilton, Canada

Cite AsGet BibTex

Jacques Carette, Spencer W. Smith, and Jason Balaci. Generating Software for Well-Understood Domains. In Eelco Visser Commemorative Symposium (EVCS 2023). Open Access Series in Informatics (OASIcs), Volume 109, pp. 7:1-7:12, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2023)


Current software development is often quite code-centric and aimed at short-term deliverables, due to various contextual forces (such as the need for new revenue streams from many individual buyers). We're interested in software where different forces drive the development. Well understood domains and long-lived software provide one such context. A crucial observation is that software artifacts that are currently handwritten contain considerable duplication. By using domain-specific languages and generative techniques, we can capture the contents of many of the artifacts of such software. Assuming an appropriate codification of domain knowledge, we find that the resulting de-duplicated sources are shorter and closer to the domain. Our prototype, Drasil, indicates improvements to traceability and change management. We're also hopeful that this could lead to long-term productivity improvements for software where these forces are at play.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Application specific development environments
  • Software and its engineering → Requirements analysis
  • Software and its engineering → Specification languages
  • Software and its engineering → Automatic programming
  • code generation
  • document generation
  • knowledge capture
  • software engineering


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Christopher Alexander. A pattern language: towns, buildings, construction. Oxford university press, 1977. Google Scholar
  2. Sven Apel, Don Batory, Christian Kästner, and Gunter Saake. Feature-oriented software product lines. Springer, 2016. Google Scholar
  3. ASTM. Standard practice for determining load resistance of glass in buildings, 2009. Google Scholar
  4. ASTM. Standard practice for specifying an equivalent 3-second duration design loading for blast resistant glazing fabricated with laminated glass, 2015. Google Scholar
  5. Ira D Baxter. Design maintenance systems. Communications of the ACM, 35(4):73-89, 1992. Google Scholar
  6. Ira D Baxter. Dms: Program transformations for practical scalable software evolution. In Proceedings of the International Workshop on Principles of Software Evolution, pages 48-51, 2002. Google Scholar
  7. W. Lynn Beason, Terry L. Kohutek, and Joseph M. Bracci. Basis for ASTME E 1300 annealed glass thickness selection charts. Journal of Structural Engineering, 124(2):215-221, February 1998. Google Scholar
  8. Dines Bjørner. Domain Science and Engineering. Monographs in Theoretical Computer Science. An EATCS Series. Springer International Publishing, New York, 2021. URL:
  9. Koen Claessen and John Hughes. Quickcheck: a lightweight tool for random testing of haskell programs. In Proceedings of the fifth ACM SIGPLAN international conference on Functional programming, pages 268-279, 2000. Google Scholar
  10. Kimiz Dalkir. Knowledge Management in Theory and Practice. The MIT Press, Cambridge, Massachusetts, USA, 2nd edition, 2011. Google Scholar
  11. William M. Farmer. Biform theories in chiron. In Manuel Kauers, Manfred Kerber, Robert Miner, and Wolfgang Windsteiger, editors, Towards Mechanized Mathematical Assistants, pages 66-79, Berlin, Heidelberg, 2007. Springer Berlin Heidelberg. Google Scholar
  12. Madec Gurvan, Romain Bourdallé-Badie, Jérôme Chanut, Emanuela Clementi, Andrew Coward, Christian Ethé, Doroteaciro Iovino, Dan Lea, Claire Lévy, Tomas Lovato, Nicolas Martin, Sébastien Masson, Silvia Mocavero, Clément Rousset, Dave Storkey, Simon Müeller, George Nurser, Mike Bell, Guillaume Samson, Pierre Mathiot, Francesca Mele, and Aimie Moulin. Nemo ocean engine, March 2022. URL:
  13. Lennart C. L. Kats and Eelco Visser. The Spoofax language workbench: Rules for declarative specification of languages and IDEs. ACM SIGPLAN Notices, 45(10):444-463, October 2010. OOPSLA 2010. Google Scholar
  14. Thomas Kluyver, Benjamin Ragan-Kelley, Fernando Pérez, Brian Granger, Matthias Bussonnier, Jonathan Frederic, Kyle Kelley, Jessica Hamrick, Jason Grout, Sylvain Corlay, Paul Ivanov, Damián Avila, Safia Abdalla, and Carol Willing. Jupyter notebooks - a publishing format for reproducible computational workflows. In F. Loizides and B. Schmidt, editors, Positioning and Power in Academic Publishing: Players, Agents and Agendas, pages 87-90. IOS Press, 2016. Google Scholar
  15. Donald E. Knuth. Literate programming. The Computer Journal, 27(2):97-111, 1984. URL:
  16. Hyung Joon Kook and Gordon S. Novak. Representation of models for expert problem solving in physics. IEEE Transactions on Knowledge and Data Engineering, 3(1):48-54, 1991. Google Scholar
  17. Douglas B Lenat. Cyc: A large-scale investment in knowledge infrastructure. Communications of the ACM, 38(11):33-38, 1995. Google Scholar
  18. Robyn Lutz, David Weiss, Sandeep Krishnan, and Jingwei Yang. Software product line engineering for long-lived, sustainable systems. In Jan Bosch and Jaejoon Lee, editors, Software Product Lines: Going Beyond, pages 430-434, Berlin, Heidelberg, 2010. Springer Berlin Heidelberg. Google Scholar
  19. Brooks MacLachlan, Jacques Carette, and Spencer S. Smith. Gool: Generic object-oriented language. In Proceedings of 2020 SIGPLAM Workskop on Partial Evaluation and Program Manipulation (PEPM 2020). ACM, 2020. URL:
  20. G. Madec, P. Delecluse, M. Imbard, and C. Levy. Opa 8 ocean general circulation model - reference manual. Technical report, LODYC/IPSL Note 11, 1998. Google Scholar
  21. James M. Neighbors. The draco approach to constructing software from reusable components. IEEE Transactions on Software Engineering, SE-10(5):564-574, 1984. URL:
  22. James M Neighbors. Draco: A method for engineering reusable software systems. Software reusability, 1:295-319, 1989. Google Scholar
  23. Gordon S Novak. Glisp: A lisp-based programming system with data abstraction. AI Magazine, 4(3):37-37, 1983. Google Scholar
  24. Gordon S Novak. Generating programs from connections of physical models. In Proceedings of the Tenth Conference on Artificial Intelligence for Applications, pages 224-230. IEEE, 1994. Google Scholar
  25. Gordon S. Novak. Creation of views for reuse of software with different data representations. IEEE Trans. Software Eng., 21(12):993-1005, 1995. URL:
  26. David Lorge Parnas. Precise documentation: The key to better software. In The Future of Software Engineering, pages 125-148. Springer, New York, 2011. Google Scholar
  27. David Lorge Parnas and Paul C Clements. A rational design process: How and why to fake it. IEEE Transactions on Software Engineering, 12(2):251-257, 1986. Google Scholar
  28. D.L. Parnas. On the design and development of program families. IEEE Transactions on Software Engineering, SE-2(1):1-9, 1976. URL:
  29. Eric Schulte, Dan Davison, Thomas Dye, and Carsten Dominik. A multi-language computing environment for literate programming and reproducible research. Journal of Statistical Software, 46:1-24, 2012. Google Scholar
  30. Douglas Smith. Mechanizing the Development of Software, pages 251-292. IOS Press, August 1999. Google Scholar
  31. W. Spencer Smith, Lei Lai, and Ridha Khedri. Requirements analysis for engineering computation: A systematic approach for improving software reliability. Reliable Computing, Special Issue on Reliable Engineering Computation, 13(1):83-107, February 2007. URL:
  32. Y. V. Srinivas and R. Jullig. Specware: Formal support for composing software. In Mathematics of Program Construction, pages 399-422, 1995. Google Scholar
  33. Elmer van Chastelet, Eelco Visser, and Craig Anslow. Towards a domain-specific content management system for managing large conference websites. In Jonathan Aldrich and Patrick Eugster, editors, Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications (SPLASH): Software for Humanity, pages 50-51. ACM, 2015. Google Scholar
  34. Eelco Visser. WebDSL: A case study in domain-specific language engineering. In Ralf Lämmel, Joost Visser, and João Saraiva, editors, Generative and Transformational Techniques in Software Engineering II, LNCS 5235. Springer, July 2008. GTTSE 2007. Google Scholar
  35. Markus Voelter and Eelco Visser. Product line engineering using domain-specific languages. In 2011 15th International Software Product Line Conference, pages 70-79. IEEE, 2011. Google Scholar
Questions / Remarks / Feedback

Feedback for Dagstuhl Publishing

Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail