Building Software: A Practitioner's Guide
Novel in its approach to software design, development, and management, Building Software: A Practitioner's Guide shows you how to successfully build and manage a system. The approach the authors recommend is a simple, effective framework known as Solution Engineering Execution (SEE). Through SEE, you create a successful solution by following a highly organized, well-planned process. This process makes you view the solution from a holistic, systematic perspective. Developing a successful system requires that you are able to address technology matters related to architecture, design, selection, integration, and security. Building Software: A Practitioner's Guide offers insight into how to make software reliable and how to ensure it meets customer and organizational needs. Using the above approach you are able to: þ Find a good solution to the problem at hand þ Focus on engineering the solution well þ Address all aspects of delivery associated with the solution The book provides insightful examples of cross-doma in and legacy solutions that allow you to overcome common software concerns such as requirement issues, change control, quality and schedule management, and internal and external communication problems.

Review By: Daniel Campanelli
09/15/2008
This is a book about classic problem areas involved in software development. Per the authors, "The objective of the book is to trigger thinking, not to offer ready-made solutions." In this regard, they do not discuss "silver bullet" solutions. Rather, they provide the reader the insightful information needed to understand the full scope of the problem.
The information throughout the entire book is based on three premises:
1. Certain problems repeat themselves in every software development project, regardless of the methodology used. The book starts with a discussion of software failures and follows with discussions of each problem area that can be used to improve software development efforts. Some of the more salient topics discussed are: requirements, testing, architecture/design, communications, processes, and security.
2. Prior to software development, these problems also existed in other domains and have proven solutions. Throughout each chapter the authors frequently draw upon information from domains such as philosophy, systems management, sociology, etc. They then relate this information to the software development problem under discussion. This makes for some very interesting reading not typical of other software engineering books.
3. When deciding on a solution, its engineering (i.e., creation) and its execution (i.e., delivery) must also be considered. Each chapter presents a three pronged approach. The authors contend that planning the building of the solution and planning the delivery of the solution is just as important as deciding on the solution itself. The authors call this their Solutions Engineering and Execution methodology.
Each chapter is written independently of the others. So, each chapter stands on its own as a reference tool. In general, I think this book was very well written. The authors do an excellent job of covering both the breadth and depth of each problem’s discussion in each chapter. In terms of breadth, the authors draw upon material from non-software development domains to present some thought provoking ideas about the topic. In terms of depth, they present each topic within the context of the Solutions Engineering and Execution methodology as outlined above. As such, this book is a must-read for any software development professional.