Software design is a multi-disciplinary activity that develops tools through effective communication of ideas and the use of engineering practices. This text provides an overview and perspective of software design within the context of software development and also of more general thinking about design issues. It examines the nature of design activities, as well as their applications within software development, providing the reader with:
- a non-proprietary view of design issues
- an overview of design representation forms
- a concise review of design practices based on the more widely used design methods
- a strong architectural framework
A particular feature is the strong evidence-based approach used in the analysis and assessment of these issues.
Since the first edition, much progress has been made in the area of software design, with the major changes to the new edition being:
- A much stronger recognition of the role played by the concept of architectural style in helping to structure ideas about design. This is used to provide an underpinning framework throughout the second edition.
- The inclusion of new forms of software and of new approaches to design, ranging from agile methods and design patterns through to the component concept and the use of the Unified Modeling Language (UML).
- An improved formalism to support the analysis of the processes embodied in design methods.
Software Design provides a balanced view of the many and varied software design strategies most widely used by practitioners. By being aware of the strengths and limitations of each one, a student is better able to judge which to adopt when working in the field. The book is also valuable for software engineers and project managers who need an objective guide to the state of the art in this area.
is Professor of Software Engineering at Keele University, UK. A long-term student of software design, he has worked closely with the Software Engineering Institute in Pittsburgh to develop tutorial modules, as well as publishing many research papers on software design topics.