You are previewing Software Evolution and Maintenance.
O'Reilly logo
Software Evolution and Maintenance

Book Description

Provides students and engineers with the fundamental developments and common practices of software evolution and maintenance

Software Evolution and Maintenance: A Practitioner's Approach introduces readers to a set of well-rounded educational materials, covering the fundamental developments in software evolution and common maintenance practices in the industry. Each chapter gives a clear understanding of a particular topic in software evolution, and discusses the main ideas with detailed examples. The authors first explain the basic concepts and then drill deeper into the important aspects of software evolution. While designed as a text in an undergraduate course in software evolution and maintenance, the book is also a great resource forsoftware engineers, information technology professionals, and graduate students in software engineering.

  • Based on the IEEE SWEBOK (Software Engineering Body of Knowledge)

  • Explains two maintenance standards: IEEE/EIA 1219 and ISO/IEC14764

  • Discusses several commercial reverse and domain engineering toolkits

  • Slides for instructors are available online

  • Software Evolution and Maintenance: A Practitioner's Approach equips readers with a solid understanding of the laws of software engineering, evolution and maintenance models, reengineering techniques, legacy information systems, impact analysis, refactoring, program comprehension, and reuse.

    Table of Contents

    1. Preface
      1. Who should read this book?
      2. How should this book be read?
      3. Acknowledgments
    2. 1 Basic Concepts and Preliminaries
      1. 1.1 Evolution Versus Maintenance
      2. 1.2 Software Evolution Models and Processes
      3. 1.3 Reengineering
      4. 1.4 Legacy Systems
      5. 1.5 Impact Analysis
      6. 1.6 Refactoring
      7. 1.7 Program Comprehension
      8. 1.8 Software Reuse
      9. 1.9 Outline of the Book
      10. References
      11. Exercises
    3. 2 Taxonomy of Software Maintenance and Evolution
      1. 2.1 General Idea
      2. 2.2 Categories of Maintenance Concepts
      3. 2.3 Evolution of Software Systems
      4. 2.4 Maintenance of Cots-Based Systems
      5. 2.5 Summary
      6. Literature Review
      7. References
      8. Exercises
    4. 3 Evolution and Maintenance Models
      1. 3.1 General Idea
      2. 3.2 Reuse-Oriented Model
      3. 3.3 The Staged Model for Closed Source Software
      4. 3.4 The Staged Model for Free, Libre, Open Source Software
      5. 3.5 Change Mini-Cycle Model
      6. 3.6 IEEE/EIA Maintenance Process
      7. 3.7 ISO/IEC 14764 Maintenance Process
      8. 3.8 Software Configuration Management
      9. 3.9 CR Workflow
      10. 3.10 Summary
      11. Literature Review
      12. References
      13. Exercises
    5. 4 Reengineering
      1. 4.1 General Idea
      2. 4.2 Reengineering Concepts
      3. 4.3 A General Model for Software Reengineering
      4. 4.4 Reengineering Process
      5. 4.5 Code Reverse Engineering
      6. 4.6 Techniques Used for Reverse Engineering
      7. 4.7 Decompilation Versus Reverse Engineering
      8. 4.8 Data Reverse Engineering
      9. 4.9 Reverse Engineering Tools
      10. 4.10 Summary
      11. Literature Review
      12. References
      13. Exercises
    6. 5 Legacy Information Systems
      1. 5.1 General Idea
      2. 5.2 Wrapping
      3. 5.3 Migration
      4. 5.4 Migration Planning
      5. 5.5 Migration Methods
      6. 5.6 Summary
      7. Literature Review
      8. References
      9. Exercises
    7. 6 Impact Analysis
      1. 6.1 General Idea
      2. 6.2 Impact Analysis Process
      3. 6.3 Dependency-Based Impact Analysis
      4. 6.4 Ripple Effect
      5. 6.5 Change Propagation Model
      6. 6.6 Summary
      7. Literature Review
      8. References
      9. Exercises
    8. 7 Refactoring
      1. 7.1 General Idea
      2. 7.2 Activities in a Refactoring Process
      3. 7.3 Formalisms for Refactoring
      4. 7.4 More Examples of Refactorings
      5. 7.5 Initial Work on Software Restructuring
      6. 7.6 Summary
      7. Literature Review
      8. References
      9. Exercises
    9. 8 Program Comprehension
      1. 8.1 General Idea
      2. 8.2 Basic Terms
      3. 8.3 Cognition Models for Program Understanding
      4. 8.4 Protocol Analysis
      5. 8.5 Visualization for Comprehension
      6. 8.6 Summary
      7. Literature Review
      8. References
      9. Exercises
    10. 9 Reuse and Domain Engineering
      1. 9.1 General Idea
      2. 9.2 Domain Engineering
      3. 9.3 Reuse Capability
      4. 9.4 Maturity Models
      5. 9.5 Economic Models of Software Reuse
      6. 9.6 Summary
      7. Literature Review
      8. References
      9. Exercises
    11. Glossary
    12. Index
    13. End User License Agreement