I have an interesting anti-Ada argument that I am having difficulty
refuting. Any help?
The argument goes like this:
Project A uses Ada. Project C uses C (use C++ or Java if you like).
Project A uses good Ada development process and spends a lot of effort up
front to make sure maintenance will be easy. Project C starts coding
immediately, and documents the design "later" (i.e. not at all).
By the time Project A is ready for a detailed design review, they have
thousands of pages of design documentation, they have done walkthroughs on
everything, and they have spent a good deal of money. By this time,
Project C has had a number of demonstrations, has a good deal of problem
reports (due to the usual C pitfalls), and has made a few major design
changes based on the early demonstrations to the customer.
At Project A's design review, the customer sees a major problem in the
basic design. There were interpretation problems with the requirements.
The customer says they need the problem fixed. The developer says: "That
will cost $10M. We have to update thousands of pages of documentation, go
through all those walkthroughs again, etc."
At Project C's design review, it is less likely that this will happen
because the customer has been seeing the system being built. But even if a
major design change is needed, Project C's cost will be much lower to make
I don't think it is sufficient to simply say "The money will be made up
during maintenance." While probably true, the initial cost overrun might
cause the program to be canceled. And the total cost, while possibly
higher for the C case, is likely to be more deterministic (you know how
many bugs are likely, but it is much more difficult to tell how many major
design problems will occur).
Draper Laboratory, MS 31
555 Technology Sq.
Cambridge, MA 02139