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. \textbf{Well understood domains} and \textbf{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.
翻译:当前软件开发常以代码为中心,且受多重环境因素(如从众多个人买家获取新收入流的需求)驱动,旨在实现短期交付。我们关注由不同驱动力主导的软件开发场景:**理解透彻的领域**与**长期软件**提供了此类典型情境。关键观察在于,当前手写的软件制品存在大量冗余。通过运用领域特定语言与生成式技术,我们可捕获此类软件中诸多制品的内容。假设领域知识已被恰当编码,我们发现去冗余后的源码更精简且更贴近领域。我们的原型系统Drasil,在可追溯性与变更管理方面有所改进。我们同样期望,对于受此类力量影响的软件,该方法能带来长期生产力提升。