Facts and Fallacies of Software Engineering (Paperback)
暫譯: 軟體工程的事實與謬誤 (平裝本)

Robert L. Glass

  • 出版商: Addison Wesley
  • 出版日期: 2002-10-28
  • 售價: $1,870
  • 貴賓價: 9.5$1,777
  • 語言: 英文
  • 頁數: 216
  • 裝訂: Paperback
  • ISBN: 0321117425
  • ISBN-13: 9780321117427
  • 相關分類: 軟體工程
  • 已絕版

買這商品的人也買了...

相關主題

商品描述

Table of Contents

Acknowledgments.
Foreword.

 

I. 55 FACTS.

 

 

Introduction. @CHAPTER 1. = 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 percent increase in problem complexity, there is a 100 percent increase in solution complexity.
Fact 22. Eighty percent of software work is intellectual. A fair amount of it is creative. Little of it is clerical.


2. 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 percent (branch) coverage level.
Fact 33. 100 percent 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 percent 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 percent of software costs. It is probably the most important life cycle phase of software.
Fact 42. Enhancements represent roughly 60 percent 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.


3. 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.
 

Reliability.

商品描述(中文翻譯)

目錄

致謝。
前言。

I. 55 個事實。

引言。@第 1 章。= 關於管理。

人員。
事實 1. 軟體工作的最重要因素是程式設計師的質量。
事實 2. 最優秀的程式設計師的表現可達最差程式設計師的 28 倍。
事實 3. 在延遲的專案中增加人手會使其更加延遲。
事實 4. 工作環境對生產力和質量有深遠的影響。

工具與技術。
事實 5. 對工具和技術的炒作是軟體界的瘟疫。
事實 6. 新工具/技術會導致初期的生產力/質量損失。
事實 7. 軟體開發人員常常談論工具,但很少使用它們。

估算。
事實 8. 造成專案失控的兩個最常見原因之一是估算不準。
事實 9. 軟體估算通常在錯誤的時間進行。
事實 10. 軟體估算通常由錯誤的人進行。
事實 11. 隨著專案的進行,軟體估算很少會被修正。
事實 12. 軟體估算不準並不令人驚訝,但我們仍然依賴它們!
事實 13. 軟體管理與程式設計師之間存在脫節。
事實 14. 可行性研究的答案幾乎總是「是」。

重用。
事實 15. 小範圍重用是一個已經解決的問題。
事實 16. 大範圍重用仍然是一個大多數未解決的問題。
事實 17. 大範圍重用對於相關系統的家族效果最佳。
事實 18. 可重用組件的構建難度是三倍,應在三個環境中進行測試。
事實 19. 修改重用的程式碼特別容易出錯。
事實 20. 設計模式重用是解決程式碼重用問題的一種解決方案。

複雜性。
事實 21. 每增加 25% 的問題複雜性,解決方案的複雜性會增加 100%。
事實 22. 80% 的軟體工作是智力性工作,其中相當一部分是創造性的,只有少部分是文書工作。

II. 關於生命週期。

需求。
事實 23. 造成專案失控的兩個最常見原因之一是需求不穩定。
事實 24. 在生產過程中修正需求錯誤的成本是最高的。
事實 25. 缺失的需求是最難修正的需求錯誤。

設計。
事實 26. 明確的需求在解決方案的隱含(設計)需求演變過程中會「爆炸」。
事實 27. 對於軟體問題,幾乎不會有一個最佳的設計解決方案。
事實 28. 設計是一個複雜的迭代過程。初始設計解決方案通常是錯誤的,並且肯定不是最佳的。

編碼。
事實 29. 設計師的「原始元素」(他們可以輕易編碼的解決方案)與程式設計師的「原始元素」很少匹配。
事實 30. COBOL 是一種非常糟糕的語言,但所有其他(用於商業應用的)語言都更糟。

錯誤移除。
事實 31. 錯誤移除是生命週期中最耗時的階段。

測試。
事實 32. 軟體通常在 55-60%(分支)覆蓋率的最佳情況下進行測試。
事實 33. 100% 的覆蓋率仍然遠遠不夠。
事實 34. 測試工具是必不可少的,但許多工具很少使用。
事實 35. 測試自動化很少實現。大多數測試活動無法自動化。
事實 36. 程式設計師創建的內建調試代碼是測試工具的重要補充。

評審/檢查。
事實 37. 嚴格的檢查可以在第一次測試案例運行之前消除多達 90% 的錯誤。
事實 38. 但嚴格的檢查不應取代測試。
事實 39. 交付後的評審(有些人稱之為「回顧」)是重要的,但很少進行。
事實 40. 評審既是技術性的,也是社會學的,兩者都必須考慮。

維護。
事實 41. 維護通常消耗 40-80% 的軟體成本。這可能是軟體生命週期中最重要的階段。
事實 42. 增強功能大約佔維護成本的 60%。
事實 43. 維護是一種解決方案,而不是問題。
事實 44. 理解現有產品是維護中最困難的任務。
事實 45. 更好的方法會導致更多的維護,而不是更少。

III. 關於質量。

質量。
事實 46. 質量是:一組屬性。
事實 47. 質量不是:用戶滿意度、滿足需求、達成成本/時間表或可靠性。

可靠性。