  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.
