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表明,这在可追溯性和变更管理方面有所改进。同时,我们期待这能够为受这些驱动力影响的软件带来长期的生产力提升。