Software engineering is the systematic application of the engineering discipline to the development of software (referred to as a software process). It is the utilisation of established principles, methodologies, and instruments to develop software that satisfies requirements in a timely, economical, and high-quality manner. The book under consideration encompasses not only the technical aspects of software development, but also encompasses project management activities and the formulation of theories, tools, and techniques that facilitate software production. Failure to implement software engineering methods leads to software that is more costly and less dependable. This can prove to be critical in the long run, as the expenses will increase substantially as new developments emerge. Software engineering methods and techniques vary in suitability for distinct categories of systems.
Presently, software engineering is an enormous field to the extent that the entire subject cannot be covered in a single text. Therefore, the primary emphasis of this book is on crit-ical subjects that are intrinsic to all development processes and pertain to the construction of dependable, decentralised systems. An increased emphasis is being placed on agile methods and software reuse. Agile methods, according to the authors of this book, have their place, but "traditional" plan-driven software engineering also has its position.