1st Edition

Software Engineering The Current Practice

By Vaclav Rajlich Copyright 2012
    315 Pages 111 B/W Illustrations
    by Chapman & Hall

    Software Engineering: The Current Practice teaches students basic software engineering skills and helps practitioners refresh their knowledge and explore recent developments in the field, including software changes and iterative processes of software development.

    After a historical overview and an introduction to software technology and models, the book discusses the software change and its phases, including concept location, impact analysis, refactoring, actualization, and verification. It then covers the most common iterative processes: agile, directed, and centralized processes. The text also journeys through the software life span from the initial development of software from scratch to the final stages that lead toward software closedown.

    For Professionals
    The book gives programmers and software managers a unified view of the contemporary practice of software engineering. It shows how various developments fit together and fit into the contemporary software engineering mosaic. The knowledge gained from the book allows practitioners to evaluate and improve the software engineering processes in their projects.

    For Instructors
    Instructors have several options for using this classroom-tested material. Designed to be run in conjunction with the lectures, ideas for student projects include open source programs that use Java or C++ and range in size from 50 to 500 thousand lines of code. These projects emphasize the role of developers in a classroom-tailored version of the directed iterative process (DIP).

    For Students
    Students gain a real understanding of software engineering processes through the lectures and projects. They acquire hands-on experience with software of the size and quality comparable to that of industrial software. As is the case in the industry, students work in teams but have individual assignments and accountability.

    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