One rule of thumb that is sometimes used to estimate the benefits achieved by automatic code generation is that it takes about the same amount of effort to produce a given amount of specification text, regardless of the number of bytes of code ultimately produced from that specification. That is, it takes about the same amount of time to produce one line of assembly code as it does to produce one line of Ada or one line of ControlH. If 1 line of specification language translates into X lines of a current high-level programming language like C or Ada, then we estimate a factor of X improvement can be achieved in the coding phase (assuming no specification reuse). This turns out to be roughly consistent with the data and assumptions cited in the previous paragraph.
We have data from several demonstrations of our ControlH and MetaH languages and tools that suggest about 9 lines of Ada can be generated from each line of ControlH specification, and 18 lines of application code can be selected and integrated by 1 line of MetaH.
Our MetaH language and toolset supports the software and systems integration of application code modules obtained either by automatic generation or from a reuse library. MetaH provides coding guidelines that facilitate the automatic integration of source modules from a reuse library. In our reengineering experiments, about 5% of existing application code needed to be modified or extended to allow software and systems integration using the MetaH language and toolset.
We will make the conservative assumption that the reductions in effort due to automation and reuse are not multiplicative, but that the main benefit of combining both is a greatly extended range of applicability of architectural methods and tools. We do not assume that combining automation and reuse result in productivity gains by a factor of 20 to 100, for example. However, we do assume that the effort can be reduced by a factor of 2 to 10 in multiple phases of the life cycle, where some tasks are more amenable to reuse and some to automation. The combination also makes the approach applicable to a reasonably broad range of software products.
The common procurement cycle of exploratory development, advanced development and engineering development incorporates some redundancy. In the area of GN&C software, it is common for models and algorithms to be reimplemented numerous times as development progresses from systems engineering through software implementation to test and V&V. Of the 70% of the life cycle cost that occurs following deployment, the majority is devoted to product upgrades and enhancements rather than defect removal. The DoD Software Technology Strategy report indicates rework avoidance may produce a 37 to 50% reduction in overall software effort. We will approximate this as a factor of 2 reduction in overall life cycle effort due to work aviodance, recalling that much of our rework avoidance transcends the software development process.
Applying a factor of improvement of 2 to all life cycle phases due to the elimination of rework, then an additional factor of improvement of 2 to 10 to the 80-90% of the life cycle that automation and reuse can be applied to, yields an estimated overall factor of improvement of about 3 to 10.