Software Architecture and Design: Principles, Models, and Methods

From the Publisher: This text shows how to design software systems that can be predictably implemented and readily maintained and extended. It focuses on solving problems of scale and complexity that are inherent in modern systems, problems that challenge today's best software designers. The authors offer a small, integrated set of principles and models that form a basis for software design at all levels. Methods are provided for requirements analysis, software architecture, and the design of software components. The emphasis is on how to think about systems, enabling designers to produce better architecture and designs, regardless of the tools and implementation languages to be used. Readers learn how to apply the principles and models in the specification and design of software systems to arrive at the highest level, and most complete and consistent view of a system; create malleable architecture by modeling the end-user's view of the environment; partition high-level software into subsystems, modules, and procedures; produce designs that correctly implement the specifications; introduce distribution and/or concurrency while preserving structure and maintainability; and incorporate documentation practices into the design process. The book integrates object-oriented design, structured design, and step-by-step refinement with the above topics. It also incorporates material on client-server, distributed systems, and methods for unit specification and verification such as those used by "cleanroom" technology. Software Architecture and Design: Principles, Models, and Methods offers a unified presentation of the essentials of good design that will meet the critical needs of practitioners and students of software engineering.