
Résumé
The practice of building software is a “new kid on
the block” technology. To those who have been in this
field for all of their professional careers, it may not
seem that way. But in the overall scheme of professions,
software builders are relative “newbies.”
In the short history of the software field, a lot of facts
have been identified, and a lot of fallacies promulgated.
Those facts and fallacies are what this book is
about.
There's a problem with those facts—and, as you might
imagine, those fallacies. Many of these fundamentally
important facts are learned by a software engineer, but
over the short lifespan of the software field, all too many
of them have been forgotten. In reading Facts and Fallacies
of Software Engineering, the reader will experience moments
of “Oh, yes, I had forgotten that,” alongside
some “Is that really true?” thoughts.
The author of this book doesn't shy away from controversy.
In fact, each of the facts and fallacies in the book is
accompanied by a discussion of whatever controversy
envelops it. You may find yourself agreeing with a lot of
the facts and fallacies, and emotionally disturbed by a few
of them! Whether you agree or disagree, you will learn why
the author has been called “the premier curmudgeon of
software practice.”
These facts and fallacies are fundamental to the software
building field—practitioner or theoretician, you
forget or neglect them at your peril.
I. 55 FACTS.
About Management.
People.
Fact 1. The most important factor in software work is the
quality of the programmers.
Fact 2. The best programmers are up to 28 times better
than the worst programmers.
Fact 3. Adding people to a late project makes it
later.
Fact 4. The working environment has a profound impact on
productivity and quality.
Tools and Techniques.
Fact 5. Hype (about tools and techniques) is the plague on
the house of software.
Fact 6. New tools/techniques cause an initial LOSS of
productivity/quality.
Fact 7. Software developers talk a lot about tools, but
seldom use them.
Estimation.
Fact 8. One of the two most common causes of runaway
projects is poor estimation.
Fact 9. Software estimation usually occurs at the wrong
time.
Fact 10. Software estimation is usually done by the wrong
people.
Fact 11. Software estimates are rarely corrected as the
project proceeds.
Fact 12. It is not surprising that software estimates are
bad. But we live and die by them anyway!
Fact 13. There is a disconnect between software management
and their programmers.
Fact 14. The answer to a feasibility study is almost
always “yes” .
Reuse.
Fact 15. Reuse-in-the-small is a well-solved
problem.
Fact 16. Reuse-in-the-large remains a mostly unsolved
problem.
Fact 17. Reuse-in-the-large works best for families of
related systems.
Fact 18. Reusable components are three times as hard to
build, and should be tried out in three settings.
Fact 19. Modification of reused code is particularly
error-prone.
Fact 20. Design pattern reuse is one solution to the
problems of code reuse.
Complexity.
Fact 21. For every 25% increase in problem complexity,
there is a 100% increase in solution complexity.
Fact 22. 80% of software work is intellectual. A fair
amount of it is creative. Little of it is clerical.
About the Life Cycle.
Requirements.
Fact 23. One of the two most common causes of runaway
projects is unstable requirements.
Fact 24. Requirements errors are the most expensive to fix
during production.
Fact 25. Missing requirements are the hardest requirements
errors to correct.
Design.
Fact 26. Explicit requirements “explode” as
implicit (design) requirements for a solution evolve.
Fact 27. There is seldom one best design solution to a
software problem.
Fact 28. Design is a complex, iterative process. Initial
design solutions are usually wrong, and certainly not
optimal.
Coding.
Fact 29. Designer “primitives” (solutions they
can readily code) rarely match programmer
“primitives” .
Fact 30. COBOL is a very bad language, but all the others
(for business applications) are so much worse.
Error-removal.
Fact 31. Error-removal is the most time-consuming phase of
the life cycle.
Testing.
Fact 32. Software is usually tested at best at the 55-60%
(branch) coverage level.
Fact 33. 100% coverage is still far from enough.
Fact 34. Test tools are essential, but many are rarely
used.
Fact 35. Test automation rarely is. Most testing
activities cannot be automated.
Fact 36. Programmer-created, built-in, debug code is an
important supplement to testing tools.
Reviews/Inspections.
Fact 37. Rigorous inspections can remove up to 90% of
errors before the first test case is run.
Fact 38. But rigorous inspections should not replace
testing.
Fact 39. Post-delivery reviews (some call them
“retrospectives” ) are important, and seldom
performed.
Fact 40. Reviews are both technical and sociological, and
both factors must be accommodated.
Maintenance.
Fact 41. Maintenance typically consumes 40-80% of software
costs. It is probably the most important life cycle phase
of software.
Fact 42. Enhancements represent roughly 60% of maintenance
costs.
Fact 43. Maintenance is a solution, not a problem.
Fact 44. Understanding the existing product is the most
difficult task of maintenance.
Fact 45. Better methods lead to MORE maintenance, not
less.
About Quality.
Quality.
Fact 46. Quality IS: a collection of attributes.
Fact 47. Quality is NOT: user satisfaction, meeting
requirements, achieving cost/schedule, or
reliability.
Reliability.
Fact 48. There are errors that most programmers tend to
make.
Fact 49. Errors tend to cluster.
Fact 50. There is no single best approach to software
error removal.
Fact 51. Residual errors will always persist. The goal
should be to minimize or eliminate severe errors.
Efficiency.
Fact 52. Efficiency stems more from good design than good
coding.
Fact 53. High-order-language code can be about 90% as
efficient as comparable assembler code.
Fact 54. There are tradeoffs between size and time
optimization.
About Research.
Fact 55. Many researchers advocate rather than
investigate.
II. 5+5 FALLACIES
About Management.
Fallacy 1. You can't manage what you can't measure.
Fallacy 2. You can manage quality into a software
product.
People.
Fallacy 3. Programmers can/should be egoless.
Tools and Techniques.
Fallacy 4. Tools/techniques: one size fits all.
Fallacy 5. Software needs more methodologies.
Estimation.
Fallacy 6. To estimate cost and schedule, first estimate
lines of code.
About the Life Cycle.
Testing.
Fallacy 7. Random test input is a good way to optimize
testing.
Reviews.
Fallacy 8. “Given enough eyeballs, all bugs are
shallow” .
Maintenance.
Fallacy 9. The way to predict future maintenance cost, and
to make product replacement decisions, is to look at past
cost data.
About Education.
Fallacy 10. You teach people how to program by showing
them how to write programs.
Conclusions.
L'auteur - Robert L. Glass
ROBERT L. GLASS is an author and consulting on software
quality issues who has written more than 10 books on the
topic. He owns his own company, Computing Trends, and
writes a column on Software Engineering for ACM
Communications Magazine.
Caractéristiques techniques
PAPIER | |
Éditeur(s) | Addison Wesley |
Auteur(s) | Robert L. Glass |
Parution | 25/11/2002 |
Nb. de pages | 210 |
Format | 18,5 x 23,5 |
Couverture | Broché |
Poids | 455g |
Intérieur | Noir et Blanc |
EAN13 | 9780321117427 |
ISBN13 | 978-0-321-11742-7 |
Avantages Eyrolles.com
Nos clients ont également acheté
Consultez aussi
- Les meilleures ventes en Graphisme & Photo
- Les meilleures ventes en Informatique
- Les meilleures ventes en Construction
- Les meilleures ventes en Entreprise & Droit
- Les meilleures ventes en Sciences
- Les meilleures ventes en Littérature
- Les meilleures ventes en Arts & Loisirs
- Les meilleures ventes en Vie pratique
- Les meilleures ventes en Voyage et Tourisme
- Les meilleures ventes en BD et Jeunesse