Software Engineering: The Current Practice, 1st Edition (Hardback) book cover

Software Engineering

The Current Practice, 1st Edition

By Vaclav Rajlich

Chapman and Hall/CRC

315 pages | 111 B/W Illus.

Purchasing Options:$ = USD
Hardback: 9781439841228
pub: 2011-11-17
SAVE ~$19.59

FREE Standard Shipping!


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.


"… 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

Table of Contents


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


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


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


Small Changes

Changes Requiring New Classes

Change Propagation


Extract Function

Extract Base Class

Extract Component Class

Prefactoring and Postfactoring


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


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



Team Organizations for Initial Development

Final Stages

End of Software Evolution


Phaseout and Closedown



Related Topics

Other Computing Disciplines

Professional Ethics

Software Management

Software Ergonomics

Software Engineering Research

Example of Software Change

Concept Location

Impact Analysis



Example of SIP

Initial Development

Iteration 1

Iteration 2


A Summary, Further Reading and Topics, and References appear at the end of each chapter.

About the Author

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.

About the Series

Chapman & Hall/CRC Innovations in Software Engineering and Software Development Series

Learn more…

Subject Categories

BISAC Subject Codes/Headings:
COMPUTERS / Programming / Games
COMPUTERS / Programming Languages / General
COMPUTERS / Software Development & Engineering / General
COMPUTERS / Programming / Algorithms
COMPUTERS / Certification Guides / General