INTRODUCTION
History of Software Engineering
Software Properties
Origins of Software
Birth of Software Engineering
Third Paradigm: Iterative Approach
Software Life Span Models
Staged Model
Variants of Staged Model
Software Technologies
Programming Languages and Compilers
Object-Oriented Technology
Version Control System
Software Models
Class Diagrams
UML Activity Diagrams
Class Dependency Graphs and Contracts
SOFTWARE CHANGE
Introduction to Software Change
Characteristics of Software Change
Phases of Software Change
Requirements and Their Elicitation
Requirements Analysis and Change Initiation
Concepts and Concept Location
Concepts
Concept Location Is a Search
Extraction of Significant Concepts (ESC)
Concept Location by Grep
Concept Location by Dependency Search
Impact Analysis
Impact Set
Class Interaction Graphs
Process of Impact Analysis
Propagating Classes
Alternatives in Software Change
Tool Support for Impact Analysis
Actualization
Small Changes
Changes Requiring New Classes
Change Propagation
Refactoring
Extract Function
Extract Base Class
Extract Component Class
Prefactoring and Postfactoring
Verification
Testing Strategies
Unit Testing
Functional Testing
Structural Testing
Regression and System Testing
Code Inspection
Conclusion of Software Change
Build Process and New Baseline
Preparing for Future Changes
New Release
SOFTWARE PROCESSES
Introduction to Software Processes
Characteristics of Software Processes
Solo Iterative Process (SIP)
Enacting and Measuring SIP
Planning in SIP
Team Iterative Processes
Agile Iterative Process (AIP)
Directed Iterative Process (DIP)
Centralized Iterative Process (CIP)
Initial Development
Software Plan
Initial Product Backlog
Design
Implementation
Team Organizations for Initial Development
Final Stages
End of Software Evolution
Servicing
Phaseout and Closedown
Reengineering
CONCLUSION
Related Topics
Other Computing Disciplines
Professional Ethics
Software Management
Software Ergonomics
Software Engineering Research
Example of Software Change
Concept Location
Impact Analysis
Actualization
Testing
Example of SIP
Initial Development
Iteration 1
Iteration 2
Index
A Summary, Further Reading and Topics, and References appear at the end of each chapter.
Biography
Václav Rajlich is a professor and former chair of computer science at Wayne State University. Dr. Rajlich is an editorial board member of the Journal of Software Maintenance and Evolution and the founder and permanent steering committee member of the IEEE International Conference on Program Comprehension (ICPC). His research focuses on software evolution and comprehension.
"… a great read … this [is] an entirely different approach to teaching software engineering and it could really help students (and practitioners) understand recent advances in software engineering and become better software engineers. … this book explains software engineering not from a constructionist point of view, but from a change/maintenance perspective, meaning most of the time you need to read/analyze programs rather than write them (though there is plenty of material in the book to support green field development)."
—Will Tracz, ACM SIGSOFT Software Engineering Notes, November 2013






