Software Design provides a balanced view of the many and varied software design methodologies most widely used by practitioners. By being aware of the strengths and limitations of each method, 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. The text provides a general overview 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.