Software Design: Creating Solutions for Ill-Structured Problems, Third Edition provides a balanced view of the many and varied software design practices used by practitioners. The book provides a general overview of software design within the context of software development and as a means of addressing ill-structured problems. The third edition has been expanded and reorganised to focus on the structure and process aspects of software design, including architectural issues, as well as design notations and models. It also describes a variety of different ways of creating design solutions such as plan-driven development, agile approaches, patterns, product lines, and other forms.


•Includes an overview and review of representation forms used for modelling design solutions

•Provides a concise review of design practices and how these relate to ideas about software architecture

•Uses an evidence-informed basis for discussing design concepts and when their use is appropriate

This book is suitable for undergraduate and graduate students taking courses on software engineering and software design, as well as for software engineers.


David Budgen is a professor emeritus of software engineering at Durham University. His research interests include evidence-based software engineering (EBSE), software design, and healthcare informatics.

Preface. Part 1. Characteristics of Software Design. The Nature of the Design Process. The Process of Software Design. Design in the Software Development Process. Design Qualities. Studying Design. Part 2. Transfering Design Knowledge. Describing a Design Model. Transfering Design Knowledge. Some Design Representations. Organizing the Design Process. Designing with Patterns. Part 3 Plan-Driven Design. Stepwise Refinement. Structured Systems Analysis and Structured Design. Designing with Objects. Designing with Components and Services. A Formal Approach to Design. Part 4. Agile Design. Incremental Design. The Emergence of Agile Thinking. Extreme Programming. Scrum.