Software Engineering Processes
Software engineering is playing a more important role in computing and informatics, necessitated by the complexities inherent in large-scale software development. To deal with these difficulties, the conventional lifecycle approaches to software engineering are now giving way to the "process system" approach, encompassing development methods, infrastructure, organization, and management. Until now, however, no book fully addressed process-based software engineering or set forth a fundamental theory and framework of software engineering processes. This book does just that.
Within a unified framework, it presents a comparative analysis of current process models and formally describes their algorithms. It systematically enables comparison between current models, avoidance of ambiguity in application, and simplification of manipulation for practitioners. The authors address a broad range of topics within process-based software engineering and the fundamental theories and philosophies behind them.
They develop a software engineering process reference model (SEPRM) to show how to solve the problems of different process domains, orientations, structures, taxonomies, and methods. They derive a set of process benchmarks, based on a series of international surveys, that support validation of the SEPRM model. Based on their SEPRM model and the unified process theory, they demonstrate that current process models can be integrated and their assessment results can be transformed between each other.
Software development is no longer just a black art or laboratory activity. It is an industrialized process that requires the skills not just of programmers, but of organization and project managers, and quality assurance
specialists. This book is the key to understanding, using, and improving upon effective engineering procedures for software development.

Review By: Tilmann Bruckhaus, Ph.D.
09/12/2002This book provides an overview of software-engineering process, management approaches. The text covers approaches for modeling, analysis, establishment, assessment, and improvement. In addition to the standard approaches CMM, ISO9001, BOOTSTRAP, and SPICE, the authors introduce a novel approach to software process management: Software Engineering Process Reference Model (SEPRM).
The book contains a brief introduction to a number of key software process management concepts, such as modeling, certification, improvement, computer-aided software engineering (CASE), tools, and automation. Modeling, certification, and improvement are also covered in more detail throughout the book. There is an example of how a specific process may be analyzed in different ways thus arriving a vastly different results. This serves to highlight that a systematic process is needed not only for software development but also for the process that is used to determine just how systematic a given software-development process is.
As part of SEPRM, the authors introduce a formal notation in which software process management methods can be represented. This notation provides for both a graphical and a textual representation. This notation is used to describe parts of each of the process modeling approaches. In addition each approach is described at a high level in plain English. Each approach is analyzed as to their utility for software process definition, analysis, and improvement. One of the appendixes contains a tabular comparison of all approaches in terms of their coverage of a catalogue of software engineering activities.
A strong point of the work is its methodical approach and clear structure. The readers expectations are properly set in the introduction and each chapter and section provides a small graphical roadmap reminding the reader of how the following will fit into the overall structure of the book. Each chapter and section follows a consistent flow. The breadth of the coverage is impressive; however, due to the great breadth of related topics covered the depth of the coverage is not as great. Readers looking for a broad overview of concepts will find it here. To find more details other books should be consulted.
For example, the Capability Maturity Model is described at the top level and a good overview of the underlying approach and structure are given. Together with the consistent coverage of the other concepts covered one can derive a good understanding of what the Capability Maturity Model is, what the underlying philosophy is, and how it compares to other process-management concepts. But there is not enough detail about the Capability Maturity Model to be able to apply it.
Similarly, the description of key software engineering management concepts, like Computer Aided Software Engineering, can only serve as a reminder to readers already familiar with these rather than a solid introduction. The book would benefit from additional examples to illustrate the application of the discussed techniques. A consistent example area of a software development process and how it can be established, documented, analyzed, and improved, using the various techniques would help the reader in understanding these techniques better.
This book is a good introductory work for professionals who are familiar with software engineering practices and want to learn about existing approaches to modeling, analyzing, and improving software processes. A development manager who is looking to select a software process improvement approach can find a wealth of information on the subject. This book may also be suitable as a text book for an advanced class on software engineering process