Reference. Generating Software for Well-Understood Domains
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.
Cite
Cites 35 works (0 here)
External (35)
- NEMO ocean engine (2022)
- Domain Science and Engineering (2021)
- GOOL: a generic object-oriented language (2020)
- Jupyter Notebooks - a publishing format for reproducible computational workflows (2016)
- Conf.Researchr.Org: towards a domain-specific content management system for managing large conference websites (2015)
- Standard practice for specifying an equivalent 3-second duration design loading for blast resistant glazing fabricated with laminated glass (2015)
- Feature-Oriented Software Product Lines (2013)
- A Multi-Language Computing Environment for Literate Programming and Reproducible Research (2012)
- Knowledge Management in Theory and Practice (2nd ed.) (2011)
- Product Line Engineering Using Domain-Specific Languages (2011)
- The spoofax language workbench: rules for declarative specification of languages and IDEs (2010)
- Software Product Line Engineering for Long-Lived, Sustainable Systems (2010)
- Precise Documentation: The Key to Better Software (2010)
- Standard practice for determining load resistance of glass in buildings (2009)
- WebDSL: A Case Study in Domain-Specific Language Engineering (2007)
- Biform Theories in Chiron (2007)
- Requirements analysis for engineering computation: A systematic approach for improving software reliability (2007)
- DMS®: Program Transformations for Practical Scalable Software Evolution (2002)
- QuickCheck: a lightweight tool for random testing of Haskell programs (2000)
- Mechanizing the Development of Software (1999)
- Basis for ASTM E 1300 Annealed Glass Thickness Selection Charts (1998)
- OPA 8.1 Ocean General Circulation Model reference manual (1998)
- Creation of Views for Reuse of Software with Different Data Representations (1995)
- CYC: a large-scale investment in knowledge infrastructure (1995)
- Specware: Formal Support for Composing Software (1995)
- Generating programs from connections of physical models (1994)
- Design maintenance systems (1991)
- Representation of Models for Expert Problem Solving in Physics (1991)
- Draco: a method for engineering reusable software systems (1989)
- A rational design process: How and why to fake it (1986)
- The Draco Approach to Constructing Software from Reusable Components (1984)
- Literate Programming (1984)
- GLISP: A Lisp-Based Programming System with Data Abstraction (1983)
- A Pattern Language: Towns, Buildings, Construction (1977)
- On the Design and Development of Program Families (1976)