FastCompany?'s article "They Write the Right Stuff" [http://web.archive.org/web/20050830190246/www.fastcompany.com/magazine/06/writestuff.html] describes the "on board shuttle group" and their main software product (420,000 lines of code). This group was (in December 1996) one of four organizations rated at the SEI CapabilityMaturityModel level 5. The article contrasts the shuttle group with ordinary software development, and lists four key points of the shuttle software process:
According to the article, they have a motto, it is:
TheSoonerYouFallBehindTheMoreTimeYouWillHaveToCatchUp
Let's just calculate what this piece of software cost: 20 years * 35 million = 700 million. Divide that by 420000 lines of code. Every line of code has cost NASA 1600 bucks. Yikes! This car is definitely a Ferrari. Our current product is at about 35$ a line (just educated guessing). (Gee, that's pretty low, unless you're doing cookie-cutter code. Typical values are around $100 (NoCitation?).)
This is a great example. When trying to get people 'round here to move on from waterfall-like practices, I've been saying over and over again: it's not that these ideas don't work, it's that they have to be made to work, and it costs a fortune. These numbers will be going into my next presentation
On the other hand, our ApplicationOutsourcing? practice claims that significant (~20% if I remember correctly, I try to find the exact figures) reductions in schedule and cost accrued when they forced all their projects up to CapabilityMaturityModel level 3 (and in some cases 4).
-- KeithBraithwaite (the other anonymous poster)
What seems like a lighter-weight process may be one that's just optimized in one area of the development, and pays its price in another. Processes that go light on analysis can end up paying the price in heavy system testing. The weight of a process and the cost of running that process are most often matters of intuition and subjectivity, rather than measured quantities. It's ironic that the CMM is considered heavy, whereas it's maybe (in competent hands) no more than the means to determine what is heavy and what is not. -- WaldenMathews
Please provide real-life examples of lightweight CMM.
My use of the CMM during the years 1995-1998 in managing ticker plant development for ILX Systems would be a lightweight use of the CMM. I used it informally to guide me in bolstering requirements management, configuration management and project management, which resulted in a more stable group behavior and a better product. (The above disciplines often blended into each other, rather than being discrete functions, because that's what the environment called for.) There were no assessments, no big strategic or tactical plans (although there were some small ones I wrote to keep my own head clear). Mark Paulk says the appropriate amount of documentation for a Repeatable project might fit on one side of a napkin, if it's a small enough project. The problems with WaterFall methods and CMMs is not the models, it's the failure to use common sense in scaling their use to the problem at hand. Ironically, I've found that the very folks who are the most scared of a bureaucratic process are exactly the ones who will create one when you give them the steering wheel. I wonder why that is. -- WaldenMathews
I have been living with these thoughts for a couple of years now, so they have become "obvious", slowly, over the 2-year period. The "obvious" (in hindsight) part is that heavyweight ones cost more, and can be justified on occasion; that light ones are also effective, less expensive and can justified more often.
The part that isn't clear yet ("not yet obvious") is whether heavy, rigorous methods can possibly be less expensive than lighter, more casual ones. WattsHumphrey claims they are, which seems counterintuitive, excepting when compared to sloppy development (which characterizes very many projects, I'm afraid). So the interesting question is a medium group of developers with pretty good communications (using CrystalClearMethodology, for instance), on an industry or web project, compared with a medium group of developers using PSP/TSP properly. I would like to vote for the former, but I have been hearing lately from the SEI camp lately that they claim increased productivity and reduced defects. -- AlistairCockburn
A bit of searching around NASA's Web sites found an interesting formal methods research group. See http://shemesh.larc.nasa.gov/fm/fm-why.html for their essay "Why is Formal Methods Necessary?". (This group does not seem to be related to the shuttle group.) Also, searching for "software validation" found some interesting pages like:
RichardFeynman's brief observations on the Shuttle software can be found at http://science.ksc.nasa.gov/shuttle/missions/51-l/docs/rogers-commission/Appendix-F.txt (scroll down to "Avionics"). The other sections, particularly on the main engines, are also worth reading -- I think it's a fine essay on the dangers of designing from the top down.
Recommendation seconded. Here are a few relevant sections:
I read the article and noticed one big thing - they have management that requires a complete rework of the schedule when a requirement is changed.
That is the key to making BigDesignUpFront work - not having a irresistable force of moving requirements and an immovable object of deadline based on original requirements. If the customer knowns that each little thing s/he asks to change will impact the schedule by X+N days, where X is the time to rework the schedule and N is the time for the change, s/he gets real careful about requesting changes. And when the schedule is actually moved out when more work is added, of course you can make the software better!
-- PeteHardie