Project C would eventually do the design documents? Are you sure? Will they
at all accurate? Will you have the design documents for Version 1 by the
time you are making changes in Version 2? This isn't about language, it's
about cutting corners and deferring costs. Just because you don't do the
design/architectural/documentation work before you code, doesn't mean you
aren't going to do it. You have no choice. I don't believe that anyone can
produce a complicated system without a design or an implied architecture.
Hopefully not to bad a rant......
How many of us have worked with these hackers who run out and do all the fun
coding only to leave the project when the boring paperwork has to be done?
This part of your case has nothing to do with language, but whether or not
you've hired software engineers or programmers. The longer I'm in this
industry the better I understand the difference between the two. It seems
that most companies have a very vocal group of hackers who follow their own
process (ad hoc, if anything) and will only do c++ for microsoft (the
license of which specifically states that it is not to be used for any
critical, safe, or high-reliable task), I won't say anything about their
compiled job security. I think most companies are more worried about these
undisciplined programmers quitting, rather than if a good quality job is
being done. I'm not impressed with the caliber of most of the students being
turned out from CS programs. Seems they don't actually write any real code
these days. I hope the trend of teaching Ada in schools continues, because
we need to teach these future programmers and SW engineers how to do more
than hack code. Who wants to travel to Mars on a craft that's powered by c++
and MFC? "It took use 5 years to make the 3 month trip, we had to reboot a
few times, and we lost our nav to the blue screen of death!" Sounds like a
modern Donner party waiting to happen.
I'm currently working on a system that is half Ada and half c. A prototype
that got fielded and was never formally developed, oh yeah, the
documentation will be done later (that was 5 years ago, the original people
have been gone for 3). The Ada and c code both do identical tasks but run in
different boxes. I'm just starting to collect metrics on what it takes to
make changes or add new features. I'll tell you one thing, the changes made
to the Ada code work and require much less integration time. Probably
because Ada doesn't let you put in all those cool side effects and coding
tricks. I'd much rather try to figure out poorly written Ada code than
average c code.
I have also prototyped in Ada, sometimes in races with c folk. My coding
wasn't done first, but my working prototypes were. Where I was at the time
we didn't release prototypes, we learned from them and the did the actual
development with a real understanding of what the customer wanted. If you're
blaming Ada because you can't meet a budget then I think you really need to
take a look at the people you've hired. Are they SW engineers or
programmers? You need a mix, and someone has to maintain the discipline to
do a good job. You can't test in quality, it has to be engineered in.
You can have any two: Good, Cheap, or Fast. But not all three!
A little raving.....
If Ada is going to fail because it is to 'process focused', then what does
that say about the state of the software profession at large? The hardware
and firmware guys are using reusable components, visual modeling, and
upfront design. All these things have been proposed for software, yet to
many people refuse to adopt them. ACM is always trying to promote the "SW
Professional", are we really living up to this? I certainly try. The people
that work for me do their design and documentation up front, they have no
choice. I will not going to give them a budget and wait until they get half
way through to find out that they don't understand the problem. It
interesting to see how smooth thing go when the design is done up front and
Well, that's about a $0.02 reply & $0.98 or ranting and raving.
John T Apa [log in to unmask]
L-3 CSW (801) 594-3382
PO Box 16850 Fax: (801) 594-2195
640 North 2200 West Salt Lake City, UT. 84116-0850
> -----Original Message-----
> From: Roger Racine [SMTP:[log in to unmask]]
> Sent: Wednesday, June 09, 1999 1:31 PM
> To: [log in to unmask]
> Subject: Re: Anti-Ada Arguments
> I obviously did not word the argument well. I will try again. By the
> these are close approximations to two real projects of the same type
> (guidance, navigation and control).
> I used too much documentation in the statement of the original argument,
> but that was (part of) the reality of the project. By the way, Project C
> would eventually create design documentation later in the effort. The
> design review was done using viewgraphs (not under version control; much
> cheaper than a design document). But everyone is right that this is not
> Pretty much all the arguments in favor of Ada assume a fairly expensive
> front-end load to development costs, no matter what process is used. The
> arguments I have used and heard for Ada are all about integration and
> maintenance. It is always conceded (please give me experience otherwise)
> that Ada costs more to design and code than C (and, by extension C++ and
> Java. Not that these last 2 are known to be true, but people do make that
> extension). These are similar arguments to those used for documentation
> and reviews, so they somewhat go hand in hand.
> In my opinion and experience, Ada does not lend itself well to rapid
> development. Defining the types, laying out the packages, etc., take time
> up front. Yes, one can use the predefined types for all data, but then
> Ada's strong typing will not help in integration and maintenance. And
> packages can be created that just hold a bunch of procedures and
> as in C files, but then Ada's modularity features will not help in later
> phases. So while I agree that it is somewhat an apples and oranges
> comparison, I will also mention that Project C came after Project A, and
> was something of a pendulum swing due to the problems encountered in
> projects like Project A. So, while the whole $10M cost (not the real
> number) would not have occurred in Project A if it had put off the
> documentation and done iterative development, the cost still would have
> been significantly greater than in Project C. PLEASE PROVE ME WRONG.
> I have used incremental development in all the projects I have worked on
> for the last 23 years, and am a great advocate of that method. I am also
> firm advocate of keeping the customer in the loop. But it is not always
> possible. One project I worked on, everyone was so intent on meeting an
> impossible schedule that the customer would not allow requirements to be
> reviewed, even though they insisted that the development team be
> with the customer. That caused some problems at the design review. But
> that is also off the subject.
> So I think the argument comes down to this:
> There is a higher cost-overrun risk using Ada than using C, C++ or Java,
> due to the extra work done to generate the Ada code. A good development
> process will help lower the risk, but not get rid of it.
> > 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
> > 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
> > 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:
> > will cost $10M. We have to update thousands of pages of documentation,
> > 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
> > major design change is needed, Project C's cost will be much lower to
> > the change.
> > -----------------------
> > 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
> > 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
> > design problems will occur).
> Roger Racine
> Draper Laboratory, MS 31
> 555 Technology Sq.
> Cambridge, MA 02139