Changes from the 5th edition
Software Engineering
6th Edition
In preparing this edition I wanted to stop the apparently inexorable increase in size of software engineering textbooks. This has entailed some reorganisation and difficult decisions on what to cut out while still including important new material.  The end-result is a book that is 10% - 15% shorter than the 5th edition (depending on whether you count pages (10%) or words (15%).

There are new chapters covering software processes, distributed systems architectures, dependability and legacy systems.  All chapters have been updated and several have been extensively rewritten. Program examples are in Java and, where appropriate, graphical system models are defined in the UML.

A comparison with the 5th edition contents is available through the  5th edition contents annoted with changes.

Book Structure

The book has been re-structured into 7 rather than 8 parts covering an introduction to software engineering, specification, design, critical systems development, verification and validation, management, and software evolution.

The overview section is intended as a very general introduction to the subject . It starts with general information on software engineering presented as FAQs, goes on to discuss software engineering in the context of broader systems engineering issues, covers software processes and project planning.

New chapters

There are new chapters covering software processes, distributed systems architectures, dependability and legacy systems.

Software processes integrates material from several different chapters in the 5th edition and, as well as presenting different life-cycle process models, it also discusses specification, design, development and validation processes. CASE support for process activities is covered.

Distributed systems architectures is composed of completely new material and discusses different types of client-server arhcitectures, distributed object architectures and the CORBA framework for distributed system integration.

Dependability is a general discussion of dependability as an attribute of critical systems. It covers reliability, availability, safety and security and introduces an example of a portable insulin delivery system that is used in other chapters on critical systems.

Legacy systems introduces the notion of a legacy system and explains why these are often business critical systems. It describes legacy system structures and explains function-oriented design which was the design approach used for most legacy systems. The final section discusses techniques of assessing the state of legacy systems in terms of their value to a business.

Major modifications

Almost all chapters have been modified in some way from the 5th edition. A general modification, of course, is the replacement of Ada and C++ examples by Java examples and the use of the UML to describe system models. Major changes in individual chapters include
  • The introduction has been rewritten as a set of FAQs and material on software processes moved to a new chapter
  • The chapters on requirements have been separated into chapters on the requirements themselves and chapters on the requirements engineering process.
  • Reuse now focuses on development with reuse with material on patterns and component-based development.
  • Object-oriented design has more of a process focus.
  • Cost estimation has been updated to use the COCOMO 2 algorithmic cost estimation model.
  • The material on critical systems has been restructured and integrated so that reliability, safety and availability are not covered as separate topics. I have introduced some material on security as an attribute of a critical system.
  • Book design

    The book has been completely re-designed with a new, easy-to-read 2 colour style.