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.
Chapter
1.7 Program Comprehension
2 TAXONOMY OF SOFTWARE MAINTENANCE AND EVOLUTION
2.1.1 Intention-Based Classification of Software Maintenance
2.1.2 Activity-Based Classification of Software Maintenance
2.1.3 Evidence-Based Classification of Software Maintenance
2.2 Categories of Maintenance Concepts
2.2.3 Maintenance Organization Processes
2.3 Evolution of Software Systems
2.3.2 Laws of Software Evolution
2.3.4 Practical Implications of the Laws
2.3.5 Evolution of FOSS Systems
2.4 Maintenance of Cots-Based Systems
2.4.1 Why Maintenance of CBS Is Difficult?
2.4.2 Maintenance Activities for CBSs
2.4.3 Design Properties of Component-Based Systems
3 Evolution and Maintenance Models
3.3 The Staged Model for Closed Source Software
3.4 The Staged Model for Free, Libre, Open Source Software
3.5 Change Mini-Cycle Model
3.6 IEEE/EIA Maintenance Process
3.7 ISO/IEC 14764 Maintenance Process
3.8 Software Configuration Management
3.8.2 SCM Spectrum of Functionality
4.2 Reengineering Concepts
4.3 A General Model for Software Reengineering
4.3.2 Software Reengineering Strategies
4.3.3 Reengineering Variations
4.4 Reengineering Process
4.4.1 Reengineering Approaches
4.4.2 Source Code Reengineering Reference Model
4.4.3 Phase Reengineering Model
4.5 Code Reverse Engineering
4.6 Techniques Used for Reverse Engineering
4.6.3 Control Flow Analysis
4.7 Decompilation Versus Reverse Engineering
4.8 Data Reverse Engineering
4.8.1 Data Structure Extraction
4.8.2 Data Structure Conceptualization
4.9 Reverse Engineering Tools
5 Legacy Information Systems
5.2.2 Levels of Encapsulation
5.2.3 Constructing a Wrapper
5.2.4 Adapting a Program for Wrapper
6.2 Impact Analysis Process
6.2.1 Identifying the SIS
6.2.2 Analysis of Traceability Graph
6.2.3 Identifying the Candidate Impact Set
6.3 Dependency-Based Impact Analysis
6.3.2 Program Dependency Graph
6.4.1 Computing Ripple Effect
6.5 Change Propagation Model
6.5.1 Recall and Precision of Change Propagation Heuristics
6.5.2 Heuristics for Change Propagation
7.2 Activities in a Refactoring Process
7.2.1 Identify What to Refactor
7.2.2 Determine Which Refactorings Should be Applied
7.2.3 Ensure that Refactoring Preserves the Behavior of the Software
7.2.4 Apply the Refactorings to the Chosen Entities
7.2.5 Evaluate the Impacts of the Refactorings on Quality
7.2.6 Maintain Consistency of Software Artifacts
7.3 Formalisms For Refactoring
7.3.2 Graph Transformation
7.4 More Examples of Refactorings
7.5 Initial Work on Software Restructuring
7.5.1 Factors Influencing Software Structure
7.5.2 Classification of Restructuring Approaches
7.5.3 Restructuring Techniques
8.2.1 Goal of Code Cognition
8.3 Cognition Models for Program Understanding
8.3.2 Shneiderman and Mayer Model
8.3.4 Soloway, Adelson, and Ehrlich Model
8.3.6 Integrated Metamodel
8.5 Visualization for Comprehension
9 REUSE AND DOMAIN ENGINEERING
9.1.3 Factors Influencing Reuse
9.1.4 Success Factors of Reuse
9.4.1 Reuse Maturity Model
9.4.2 Reuse Capability Model
9.4.3 RiSE Maturity Model
9.5 Economic Models of Software Reuse
9.5.1 Cost Model of Gaffney and Durek
9.5.2 Application System Cost Model of Gaffney and Cruickshank
9.5.3 Business Model of Poulin and Caruso