Software Evolution and Feedback: Theory and Practice
暫譯: 軟體演化與反饋:理論與實踐

Nazim H. Madhavji, Juan Fernandez-Ramil, Dewayne Perry

  • 出版商: Wiley
  • 出版日期: 2006-06-01
  • 售價: $5,150
  • 貴賓價: 9.5$4,893
  • 語言: 英文
  • 頁數: 612
  • 裝訂: Hardcover
  • ISBN: 0470871806
  • ISBN-13: 9780470871805
  • 已絕版

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

相關主題

商品描述

Description

Evolution of software has long been recognized as one of the most problematic and challenging areas in the field of software engineering, as evidenced by the high, often up to 60-80%, life-cycle costs attributed to this activity over the life of a software system.  Studies of software evolution are central to the understanding and practice of software development.  Yet it has received relatively little attention in the field of software engineering.  This book focuses on topics aimed at giving a scientific insight into the aspect of software evolution and feedback.

In summary, the book covers conceptual, phenomenological, empirical, technological and theoretical aspects of the field of software evolution - with contributions from the leading experts.

This book delivers an up-to-date scientific understanding of what software evolution is, to show why it is inevitable for real world applications, and it demonstrates the role of feedback in software development and maintenance.  The book also addresses some of the phenomenological and technological underpinnings and includes rules and guidelines for increased software evolvability and, in general, sustainability of the evolution process.

Software Evolution and Feedback provides a long overdue, scientific focus on software evolution and the role of feedback in the software process, making this the indispensable guide for all software practitioners, researchers and managers in the software industry.

 

Table of Contents

List of Contributors.

PART ONE SOFTWARE EVOLUTION.

1 Software Evolution Meir Lehman and Juan Fern´andez Ramil.

1.1 Introduction.

1.2 The Evolution of Large Software Systems.

1.3 Program Classification.

1.4 The Inevitability of Evolution.

1.5 Levels of Software-Related Evolution.

1.6 Ab Initio Implementation or Change.

1.7 Software Systems Evolution.

1.8 Evolution of the Application and Its Domain.

1.9 Process Evolution.

1.10 Process Model Evolution.

1.11 Relationships Between Levels.

1.12 Conclusions.

1.13 Acknowledgments.

References.

2 A Nontraditional View of the Dimensions of Software Evolution Dewayne E. Perry.

2.1 Introduction.

2.2 The Domains.

2.3 Experience.

2.4 Process.

2.5 Summary.

2.6 Acknowledgments.

References.

3 IT Legacy Systems: Enabling Environments That Reduce the Legacy Problem:

A Complexity Perspective Eve Mitleton-Kelly.

3.1 Introduction.

3.2 The Legacy Problem.

3.3 The Two Case Studies.

3.4 The Socio-Technical Enabling Environment.

3.5 Summary and Conclusions.

3.6 Acknowledgements.

References.

4 Facets of Software Evolution Roland T. Mittermeir.

4.1 Introduction.

4.2 What is Software?.

4.3 Evolution.

4.4 Strata of Software-Size and Complexity.

4.5 Approaches to (R-)evolve .

4.6 An Example.

4.7 Summary.

References.

5 Evolution in Software Systems: Foundations of the SPE Classification Scheme Stephen Cook, Rachel Harrison, Meir M. Lehman and Paul Wernick.

5.1 Introduction.

5.2 Background and Related Work.

5.3 SPE+.

5.4 Conclusions and Future Research.

5.5 Acknowledgements.

References.

6 A Simple Model of Software System Evolutionary Growth Władysław M. Turski.

References.

7 Statistical Modelling of Software Evolution Processes Tetsuo Tamai and Takako Nakatani.

7.1 Introduction.

7.2 Approach.

7.3 Observed Evolution Patterns.

7.4 Distribution Model.

7.5 Discussions.

References.

8 A Case Study of Software Requirements Changes Due to External Factors Vic Nanda and Nazim H. Madhavji.

8.1 Introduction.

8.2 Congruence Evaluation System (CES): A Case Study.

8.3 Lessons Learnt and Conclusions.

References.

Appendix A: An Instrument to Assess System Deficiencies.

Appendix B: An Instrument to Assess Environment Evolution.

9 Understanding Open-Source Software Evolution Walt Scacchi.

9.1 Introduction.

9.2 Empirical Studies of Software Evolution.

9.3 Evolutionary Patterns in Open-Source Software.

9.4 Evolution Models and Theories.

9.5 Do We Need New or Revised Models, Laws or Theories for Open-Source Software Evolution?.

9.6 Conclusions.

9.7 Acknowledgements.

References.

10 Structural Analysis of Open Source Systems Andrea Capiluppi, Maurizio Morisio and Juan Fernandez-Ramil.

10.1 Introduction.

10.2 Related Work.

10.3 Rationale.

10.4 Approach.

10.5 Attributes Studied.

10.6 Evolution of Code Structure.

10.7 Summary.

10.8 Current and Future Work.

10.9 Acknowledgements.

References.

Appendix.

11 A Study of Software Evolution at Different Levels of Granularity Elizabeth Burd.

11.1 Introduction.

11.2 Existing Studies of Software Evolution.

11.3 Case Study Approach.

11.4 Results.

11.5 General Recommendations.

11.6 Conclusions.

References.

12 The Role of Ripple Effect in Software Evolution Sue Black.

12.1 Introduction.

12.2 Impact Analysis.

12.3 Software Maintenance and Software Maintenance Models.

12.4 Background on the Ripple Effect.

12.5 Links Between Ripple Effect and the Laws of Software Evolution.

12.6 Conclusions.

12.7 Further Work.

12.8 Acknowledgements.

References.

13 The Impact of Software-Architecture Compliance on System Evolution R. Mark Greenwood, Ken Mayes, Wykeen Seet, Brian C. Warboys, Dharini Balasubramaniam, Graham Kirby, Ron Morrison and Aled Sage.

13.1 Introduction.

13.2 Evolution and Compliance.

13.3 A Generic Scheduling Problem.

13.4 Compliance Through Configuration.

13.5 Exploiting an Analytical Model.

13.6 Discussion.

13.7 Acknowledgements.

References.

14 Comparison of Three Evaluation Methods for Object-Oriented Framework Evolution Michael Mattsson.

14.1 Introduction.

14.2 Object-oriented Frameworks.

14.3 Methods and Results.

14.4 Method Comparison.

14.5 Related Work.

14.6 Conclusion.

References.

15 Formal Perspectives on Software Evolution: from Refinement to Retrenchment Michael Poppleton and Lindsay Groves.

15.1 Introduction.

15.2 Program Refinement.

15.3 Modifying Refinements by Adapting Derivations.

15.4 A Compositional Approach to Program Modification.

15.5 Retrenchment.

15.6 Conclusions.

References.

16 Background and Approach to Development of a Theory of Software Evolution Meir M Lehman and Juan Fern´andez Ramil.

16.1 Foreword.

16.2 Software Evolution.

16.3 Global Views of Evolution.

16.4 The Case for Theory.

16.5 Theory Development.

16.6 A World View.

16.7 Example.

16.8 The Theory.

16.9 Organisation of Theory Development.

16.10 Goals.

16.11 Related Work.

16.12 Final Remarks.

16.13 Acknowledgements.

References.

17 Difficulties with Feedback Control in Software Processes Meir M. Lehman, Dewayne E. Perry and Wlad Turski.

17.1 Introduction.

17.2 Feedback and Control.

17.3 Technology versus Sociology.

17.4 Manifesto and Model.

17.5 Influence versus Control.

17.6 Examples of Feedback Control.

17.7 Summary.

17.8 Acknowledgments.

References.

18 Policy-Guided Software Evolution Nazim H. Madhavji and Jos´ee Tass´e.

18.1 Introduction.

18.2 The Policy-Checking Mechanism.

18.3 The Contextual Framework.

18.4 Technological Support.

18.5 Evaluation.

18.6 Related Work.

18.7 Conclusions.

References.

19 Feedback in Requirements Discovery and Specification: a Quality Gateway for Testing Requirements Suzanne Robertson.

19.1 Contents of the Requirements Specification.

19.2 Project Drivers.

19.3 Contents of Individual Requirements.

19.4 Keeping Track of Connections.

19.5 The Quality Gateway.

19.6 Lessons Learnt.

19.7 Conclusion.

References.

Suzanne Robertson.

20 Requirements Risk and Software Reliability Norman F. Schneidewind.

20.1 Introduction.

20.2 Background.

20.3 Selected Measurement Research Projects.

20.4 Approach to Analyzing Requirements Risk.

20.5 Risk Factors.

20.6 Solutions to Risk Analysis Example.

20.7 Future Trends.

20.8 Conclusions.

20.9 Acknowledgments.

References.

21 Combining Process Feedback with Discrete Event Simulation Models to Support Software Project Management David Raffo and Joseph Vandeville.

21.1 Introduction.

21.2 Providing Up-to-Date Process Feedback.

21.3 Discrete Event Simulation Models.

21.4 Combining Process Feedback with the Discrete Model.

21.5 Illustrative Example.

21.6 Conclusions .

21.7 Acknowledgements.

21.8 Biographies.

References.

22 A Feedforward Capability to Improve Software Reestimation William W. Agresti.

22.1 Introduction.

22.2 A Feedforward Capability.

22.3 Example Uses of the Feedforward Concept.

22.4 Conclusion.

22.5 Acknowledgements.

Appendix.

References.

23 Modelling the Feedback Part of the Software Process in Software Resource Estimation Juan Fernandez-Ramil and Sarah Beecham.

23.1 Introduction.

23.2 The Evidence of Feedback.

23.3 The Need for a Taxonomy.

23.4 Feedback as a Cost Factor.

23.5 Cost Estimation as a ‘System Identification’ Problem.

23.6 Why do Algorithmic Cost Estimation Approaches such as COCOMO ‘Work’?.

23.7 Approaches to Model ‘Feedback’ in Cost Estimation Models.

23.8 Indirect Black-Box Modelling and Feedback-Related Cost Factors.

23.9 Final Remarks.

23.10 Acknowledgments.

References.

24 Value-Based Feedback in Software and Information Systems Development Barry Boehm and LiGuo Huang.

24.1 Introduction.

24.2 Feedback Control of Software Development: Four Primary Feedback Cycles.

24.3 Using ‘EV’ for Feedback Control of Software Development and Evolution.

24.4 Real Earned-Value Feedback Control.

24.5 Value-Based Feedback Control: An Order Processing Example.

24.6 Conclusions and Future Challenges.

24.7 Acknowledgments.

References.

25 Expert Estimation of Software Development Cost: Learning through Feedback Magne Jørgensen and Dag Sjøberg.

25.1 Introduction.

25.2 Estimation Learning.

25.3 Estimation Feedback and Process Guidelines.

25.4 Experiment: Application of the Guidelines.

25.5 Summary.

25.6 Acknowledgement.

References.

26 Self-Adaptive Software: Internalized Feedback Robert Laddaga, Paul Robertson and Howard Shrobe.

26.1 Introduction.

26.2 Historical Perspective.

26.3 Self-Adaptive Software.

26.4 Applications of Self-Adaptive Software.

26.5 Conclusion.

References.

27 Rules and Tools for Software Evolution Planning and Management Meir M (Manny) Lehman and Juan Fernandez Ramil.

27.1 Introduction.

27.2 Laws of Software Evolution.

27.3 S- and E-Type Program Classification.

27.4 First Law: Continuing Change.

27.5 Second Law: Increasing Complexity.

27.6 Third Law: Self Regulation.

27.7 Fourth Law: Conservation of Organisational Stability.

27.8 Fifth Law: Conservation of Familiarity.

27.9 Sixth Law: Continuing Growth.

27.10 Seventh Law: Declining Quality.

27.11 Eighth Law: Feedback System.

27.12 The Feast Hypothesis.

27.13 The Principle of Software Uncertainty.

27.14 Conclusions.

27.15 Acknowledgements.

References.

Index.

商品描述(中文翻譯)

**描述**

軟體的演變長期以來被認為是軟體工程領域中最具問題性和挑戰性的領域之一,這一點從軟體系統生命週期中,與此活動相關的高達60-80%的成本可見一斑。對於軟體演變的研究對於理解和實踐軟體開發至關重要。然而,在軟體工程領域中,這一主題卻相對受到較少的關注。本書專注於旨在提供對軟體演變及其反饋方面的科學見解的主題。

總之,本書涵蓋了軟體演變領域的概念性、現象學、實證、技術和理論方面,並由領先的專家貢獻內容。

本書提供了對軟體演變的最新科學理解,展示了為何在現實世界應用中是不可避免的,並展示了反饋在軟體開發和維護中的角色。本書還探討了一些現象學和技術基礎,並包括提高軟體演變能力的規則和指導方針,以及一般的演變過程的可持續性。

《軟體演變與反饋》提供了對軟體演變及其在軟體過程中反饋角色的長期被忽視的科學聚焦,使其成為所有軟體從業者、研究人員和軟體行業管理者不可或缺的指南。

**目錄**

貢獻者名單。

**第一部分 軟體演變。**

1 軟體演變 *Meir Lehman 和 Juan Fernández Ramil。*

1.1 介紹。

1.2 大型軟體系統的演變。

1.3 程式分類。

1.4 演變的必然性。

1.5 與軟體相關的演變層次。

1.6 *Ab Initio* 實現或變更。

1.7 軟體系統演變。

1.8 應用及其領域的演變。

1.9 流程演變。

1.10 流程模型演變。

1.11 層次之間的關係。

1.12 結論。

1.13 感謝。

參考文獻。

2 對軟體演變維度的非傳統觀點 *Dewayne E. Perry。*

2.1 介紹。

2.2 領域。

2.3 經驗。

2.4 流程。

2.5 總結。

2.6 感謝。

參考文獻。

3 IT 遺留系統:減少遺留問題的促進環境: *Eve Mitleton-Kelly。*

3.1 介紹。

3.2 遺留問題。

3.3 兩個案例研究。

3.4 社會技術促進環境。

3.5 總結與結論。

3.6 感謝。

參考文獻。

4 軟體演變的面向 *Roland T. Mittermeir。*

4.1 介紹。

4.2 什麼是軟體?

4.3 演變。

4.4 軟體大小和複雜度的層次。

4.5 演變的方法。

4.6 一個例子。

4.7 總結。

參考文獻。

5 軟體系統中的演變:SPE 分類方案的基礎 *Stephen Cook, Rachel Harrison, Meir M. Lehman 和 Paul Wernick。*

5.1 介紹。

5.2 背景和相關工作。

5.3 SPE+。

5.4 結論和未來研究。

5.5 感謝。

參考文獻。

6 軟體系統演變增長的簡單模型 *Władysław M. Turski。*

參考文獻。

7 軟體演變過程的統計建模 *Tetsuo Tamai 和 Takako Nakatani。*

7.1 介紹。

7.2 方法。

7.3 觀察到的演變模式。

7.4 分佈模型。

7.5 討論。

參考文獻。

8 由於外部因素導致的軟體需求變更案例研究 *Vic Nanda 和 Nazim H. Madhavji。*

8.1 介紹。

8.2 一致性評估系統 (CES):案例研究。

8.3 學到的教訓和結論。

參考文獻。

附錄 A:評估系統缺陷的工具。

附錄 B:評估環境演變的工具。

9 理解開源軟體演變 *Walt Scacchi。*

9.1 介紹。

9.2 軟體演變的實證研究。

9.3 開源軟體中的演變模式。

9.4 演變模型和理論。

9.5 我們是否需要新的或修訂的模型、法律或理論來解釋開源軟體演變?

9.6 結論。

9.7 感謝。

參考文獻。

10 開源系統的結構分析 *Andrea Capiluppi, Maurizio Morisio 和 Juan Fernandez-Ramil。*

10.1 介紹。

10.2 相關工作。

10.3 理由。

10.4 方法。

10.5 研究的屬性。

10.6 代碼結構的演變。

10.7 總結。

10.8 當前和未來的工作。

10.9 感謝。

參考文獻。

附錄。

11 在不同粒度層次上研究軟體演變 *Elizabeth Burd。*

11.1 介紹。

11.2 現有的軟體演變研究。

11.3 案例研究方法。

11.4 結果。

11.5 一般建議。

11.6 結論。

參考文獻。

12 漣漪效應在軟體演變中的角色 *Sue Black。*

12.1 介紹。

12.2 影響分析。

12.3 軟體維護和軟體維護模型。

12.4 漣漪效應的背景。

12.5 漣漪效應與軟體演變法則之間的聯繫。

12.6 結論。

12.7 進一步的工作。

12.8 感謝。

參考文獻。

13 軟體架構合規性對系統演變的影響 *R. Mark Greenwood, Ken Mayes, Wykeen Seet, Brian C. Warboys, Dharini Balasubramaniam, Graham Kirby, Ron Morrison 和 Aled Sage。*

13.1 介紹。

13.2 演變與合規性。

13.3 一個通用的排程問題。

13.4 通過配置實現合規性。

13.5 利用分析模型。

13.6 討論。

13.7 感謝。

參考文獻。

14 三種面向物件框架演變的評估方法比較 *Michael Mattsson。*

14.1 介紹。

14.2 面向物件的框架。

14.3 方法與結果。

14.4 方法比較。

14.5 相關工作。

14.6 結論。

參考文獻。