Practice to Perfect: the Quality First Model
Total Page:16
File Type:pdf, Size:1020Kb
Editor: Bertrand Meyer, EiffelSoft, 270 Storke Rd., Ste. 7, Goleta, CA 93117; voice (805) 685-6869; [email protected] It’s the spiral model. Barry Boehm’s great contribution (“A Spiral Model of Practice Software Development and Enhance- ment,” Computer, May 1988) was to emphasize the need to handle risk in soft- Object Technology ware project management. But Quality To Perfect: First does not use spiral’s idea of repeated analysis-design-implementation cycles. It builds the software, cluster by cluster, using a seamless, reversible process, The Quality as described by Kim Walden in this column (“Reversibility in Software Engineering,” Sept. 1996). First Model It’s just.... Probably not. Few basic ideas are completely new in software; to a certain extent, all had been said in 1974 Bertrand Meyer, EiffelSoft by Edsger Dijkstra, Tony Hoare, Knuth, Harlan Mills, Niklaus Wirth, and a few Ich bin der Geist, der stets verneint, I’ve always worked that way. If that’s others. What counts is how you put the und das mit Recht Mephistopheles really true, congratulations. But I’d like to basic ideas together: what you do, and – Goethe’s Faust, part I (for the trans- see it before I believe it, because some as- also what you don’t do. lation, read on) pects of this process go directly against con- ventional ideas of software development. It’s a personal software process and will not work for large developments. Large aving recently completed a mul- It’s just literate programming. Donald developments are aggregates of personal tiyear writing project, I now Knuth’s literate programming is a great processes, as described by Watts have time to program again. idea. But it’s not Quality First. As I Not just directing development understand it, literate programming is H or looking at specific elements or top-down (it starts from a problem state- Quality First helping fix bugs or even writing library ment), while Quality First is bottom-up builds software, classes (these I never stopped doing), but (it starts with perfecting a small system cluster by cluster, using a sizable development. Such in-depth then adds functionality). Quality First is a seamless reversible involvement is not only pleasurable, it is fundamentally tied to object technology process. indispensable if your job involves con- and design by contract. sulting, writing, lecturing, teaching, man- aging, documenting, or selling (or all of It’s just Cleanroom development. Like Humphrey. If you can’t get the personal the above). In particular, if you sell devel- Quality First, Cleanroom emphasizes for- process right, you won’t get the large- opment tools you should use them, too— mal reasoning. Unlike Quality First, it scale processes right. Besides (building and not just for doing demos, teaching shuns unit testing and, in general, the use on an observation I first heard not very classes, or writing manuals. of computers early in the process. Quality long ago from Jean Ichbiah, the designer What the product is does not matter for First constantly relies on computer tools of Ada, who recently built another great this discussion. But I have started to docu- and encourages continuous testing. product with a very small team), it’s ment my own development process because amazing what one person or a tiny I think it may be interesting for others. It’s just rapid prototyping. Absolutely group can do these days with object I call this process the Quality First not. In many respects it’s the opposite. technology, modern tools, top-charged model. This is not a slogan; it describes a Rapid prototyping is about building “personal” computers, the Internet, and central property of the model. It follows something to try a few ideas, then throw- the Web. There remains a need for the from comments made by consultant ing it away to start the real development. massive, warfare types of projects so Roger Osmond, which I will try to sum- With Quality First, you work on the real prominent in the traditional software marize here. thing, right from the start. engineering textbooks—projects which, by the way, probably need the tech- OBJECTIONS It’s incremental development. Yes, so niques described here more than any- First let me try to refute in advance what? All development is incremental. thing else—but more and more some objections you might put forward What matters is how you go from one successful products are, at least initially, as you read about Quality First: increment to the next. the product of guerrilla programming. 102 Computer . resume like that, I would hire the guy on the spot; Mr. Nice Guy and Ms. Kind Gal need not apply. 100 OSMOND PRINCIPLE Here I will paraphrase the comments Late Roger Osmond made at TOOLS USA debugging (the curves are mine but the ideas—which I hope I am not distorting too much—are definitely his). Software quality includes two parts: functionality (how much the software does) and everything else (cor- Other qualities (percentage) 0 rectness and robustness, efficiency, porta- Functionality bility, extensibility, reusability). Too often, the development scheme is as depicted in Figure 1. You try to Figure 1. The most common development scheme addresses functionality and quality simultane- progress toward the goal—enough func- ously. tionality, good quality—by working on everything at once. In the meantime, the product is not only less-than-functional It’s the cluster model. Yes, but it’s more. tion and verification) you will find all but also less-than-good. You hope, of The cluster model (Object Success: A bugs, so why spend time on things like course, that given enough time you’ll fix Manager’s Guide to Object Technology, design by contract? Some of the online both the functionality and the quality. Prentice Hall, 1995) describes the Usenet discussions following the column This is what I will call the slopy model process of object-oriented software here on the Ariane-5 crash (available at (named for the slow upward slope). development, based on partitioning the http://www.eiffel. com) clearly evidenced As Osmond pointed out, the slopy system into a number of subsystems and that attitude. model is very wrong. In fact, it deserves libraries, the clusters, and applying con- It does not have to be either-or! To say current engineering on the various clus- that careful, formal design removes the ters. Quality First complements the need for testing is just as absurd as to To say that careful, cluster model by telling us how we think that with enough V&V you can formal design removes should be developing the clusters. make up for imperfect software technol- the need for testing ogy. Especially in mission-critical systems is just as absurd A PRIORI AND A POSTERIORI (and how many developments these days as to think that It never ceases to amaze me, when I aren’t?) you need both. You want the with enough V&V you look at the literature and at discussions best a priori efforts, managerial (simula- can make up for imperfect in places like Computer and IEEE tion, careful design) and technological software technology. Software, not to mention Usenet, how (the most sophisticated method, tools, much we as a community reason in hardware, languages). And you need the “either-or” terms when it comes to soft- a posteriori checks: an independent QA a second ‘p.’ Its flaw becomes very clear ware quality techniques. team, extensive testing, and V&V. in the face of one of the unspoken con- For some, the key is in a priori tech- Your motto should be: Build it so you straints on our industry: the “Can we niques: Just use formal methods, and can trust it. Then don’t trust it. ship now?” phenomenon. As Philippe everything will be right. Boris Beizer does Reliability engineering involves redun- Kahn says, “shipping is a feature.” With a hatchet job on some extreme forms of dancy and distrustfulness. Our obvious the slopy model, this question translates this idea—the absurd view that if you are patron saint here is the sulfurous into “Does it do enough?” and “Is it just careful enough you don’t need unit Mephistopheles (here, finally, is the good enough?” testing (“Cleanroom Process Model: A translation): What Osmond advocates—and what Critical Examination,” IEEE Software, the industry needs—is what I will call Mar. 1997, pp. 14-16). I am the spirit that always says no, the Quality First model: Quality remains At the other end of the spectrum you and rightly so. constant. You always strive to get every- find many developers who don’t believe thing right from the start and fix it at all in formal or even semiformal tech- That’s us! (Do get the full quotation, immediately if it is not. The only thing niques, for whatever reason. In much of with Zerstörung—destruction, and all that changes is functionality. Quality current practice, the hope is simply that such great stuff.) This is what I call a with enough testing and V&V (valida- healthy attitude for a QA person. With a Continued on page 105 May 1997 103 . Object Technology Continued from page 103 First produces the flat line (or at least the 100 perhaps more realistic wavy line) in Figure 2. In this model you never skimp on quality. If the existing functionality does not work perfectly yet, you don’t move on to the next function; you make things right. Why is Quality First so much better? First, it turns the “Can we ship now?” question into “Does it do enough to Other qualities (percentage) 0 impress the marketplace?” Quality— Functionality other than functionality—is not a party to the decision.