License: Creative Commons Attribution 4.0 International license (CC BY 4.0)
When quoting this document, please refer to the following
DOI: 10.4230/OASIcs.EVCS.2023.7
URN: urn:nbn:de:0030-drops-177776
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2023/17777/
Carette, Jacques ;
Smith, Spencer W. ;
Balaci, Jason
Generating Software for Well-Understood Domains
Abstract
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.
BibTeX - Entry
@InProceedings{carette_et_al:OASIcs.EVCS.2023.7,
author = {Carette, Jacques and Smith, Spencer W. and Balaci, Jason},
title = {{Generating Software for Well-Understood Domains}},
booktitle = {Eelco Visser Commemorative Symposium (EVCS 2023)},
pages = {7:1--7:12},
series = {Open Access Series in Informatics (OASIcs)},
ISBN = {978-3-95977-267-9},
ISSN = {2190-6807},
year = {2023},
volume = {109},
editor = {L\"{a}mmel, Ralf and Mosses, Peter D. and Steimann, Friedrich},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/opus/volltexte/2023/17777},
URN = {urn:nbn:de:0030-drops-177776},
doi = {10.4230/OASIcs.EVCS.2023.7},
annote = {Keywords: code generation, document generation, knowledge capture, software engineering}
}