Dare To Be Excellent: Case Studies of Software Engineering Practices That Work
Contrary to popular opinion, you can build extraordinarily high-quality software—and this book shows you exactly how the world's best development organizations do it.
Best practices from the world's highest-quality software development organizations. Contrary to popular wisdom, you can build extraordinarily high-quality software-and this book shows you exactly how the world's best development organizations do it. From Cisco to Intel, Texas Instruments to Tandem, Dare To Be Excellent gives you an exclusive tour of today's software quality best practices. Each chapter describes a real-world problem, and exactly how it was identified, addressed and fixed-in detail.
Dare To Be Excellent covers virtually the entire software lifecycle, including:
- Project planning, management and support
- Software requirements
- Software reliability and automated testing
- Release planning and metrics
- Software inspections
- Managing key client/vendor relationships
- Software Development Process Handbook
By now, software engineering practices don't need to be defined; they need to be applied. Dare To Be Excellent shows how real organizations have gotten past obstacles that trip up so many companies. Even better, it shows how to fit best practices to your situation, instead of the other way around. Whether you're a developer, manager, tester or executive, you'll find proven ideas you can actually use to build higher-quality software starting right now.
Review By: Noreen Dertinger
06/28/2010This book is a compilation of best practices in large and small software development environments and includes companies like Texas Instruments, Intel Corporation, the Royal Bank of Canada, International Business Systems (IBS), and others. Individual chapters present real-world case studies describing the mission-critical problem the company was facing and how it was identified, addressed, and fixed.
Chapter 1: Texas Instruments—describes the development, documentation, and application of requirements to a project called Digital Light Processing.
Chapter 2: Intel Corporation—makes the case for project planning and management in describing the LANDesk Virus Protect (LDVP) project.
Chapter 3: PKS Information Services—reviews the application of project management principles for outsourcing services.
Chapter 4: Royal Bank Financial Group—looks at the implementation of a project office to ensure uniformity in specifications, repeatability of processes that worked, and standardized project management for the Royal Bank of Canada’s Systems and Technology group.
Chapter 5: Primark Investment Management Services—focuses on the implementation of inspections as an agent of change to help improve the quality of its flagship back-office product “Icon.”
Chapter 6: Digital Technology International—discusses software reliability engineering issues for their software, their core software consisting of approximately four million lines of code and written in C, C++, 4D, and Apple Script.
Chapter 7: Cisco Systems—examines the application of quality standards as their products progress through development stages with the help of release planning approaches.
Chapter 8: Tandem Telecom Network Solutions—deals with the application of metrics for product releases by the Tandem Telecom Network Solutions team.
Chapter 9: Phoenix Technologies Limited—describes the creation of a software development process handbook so that they would have a more uniform set of software engineering practices across all their offices worldwide.
Chapter 10: International Business Systems (IBS)—how they leverage software support in their client/vendor relationships for improving software quality.
Each chapter presents in a case study format the problem at hand, reasons for implementing the solution under discussion, as well as associated issues. Many (but not all) of the case studies include a "lessons learned" section, summarizing some of the key obstacles addressed and highlights of the project.
An appendix provides a listing of acronyms and abbreviations particular to the book, but definitions for presumably known technical abbreviations or acronyms, such as MTTF, are not provided.
An extensive bibliography is included as well for chapters 2 (Intel Corporation), 5 (Primark Investment Corporation), and 6 (Digital Technology International), but not for the other chapters.
The editors of the case studies, Alka Jarvis and Linda Hayes, are both experienced software quality professionals and authors. They have done a fine job in the compilation of the case studies with a view toward presenting contemporary, real-world, key issues and unique solutions in software development by small and large organizations. Every reader will gain new insights into the complex relationship between organizational entities, the real customer, the push for the application of standardized software engineering norms, and the desire, if not the imperative, to deliver a quality product while dealing with the realities of finite budgets and deadlines that are seemingly cast in stone. Even seasoned software professionals will find ample material in the case studies to further improve their knowledge of the field. Many readers will find at least one and quite likely more solutions to problems in their own environment.
The book shows how real-life software development problems were dealt with, how pertinent issues were addressed, why the solution under discussion was implemented, and how it has helped. It is not a textbook on the underlying theories of the solutions implemented. Rather, it presents the application of the solution at hand in a real-life situation. The book is written in a style that is relevant to the mature professional but it is also accessible and relevant to students of software development aspiring to a career in the field.
This book should be read by anyone involved in the software development process who has an interest in contributing to software quality improvement. This includes students and practitioners at all levels, whether they are developers, testers, or managers. Software quality assurance is the underlying theme in all of the case studies, and the book offers quality assurance specialists a rich palette of sometimes unusual approaches to ensuring the development of quality products.
Review By: Carolyn Rodda Lincoln
06/28/2010This book comprises case studies of ten companies who improved their processes in the mid-90s. (The book was published in 1999.) Some companies are well-known (Intel) and others not (PKS Information Services). The companies represent a variety of industries and sizes. The chapter on each company emphasizes a different aspect of the software development process, e.g., requirements or inspections. The chapters were written by representatives of the companies. The descriptions are fairly comprehensive. A chapter will typically give a short description of the company and product. The author will then review what the problem was and the approach taken by the company to modify their processes to solve the problem. A section on lessons learned follows at the end of each chapter, reviewing both what worked and what did not.
The Capability Maturity Model (CMM) is the process improvement model mentioned most often; ISO and Deming were also used. The book provides overviews of cases and general information, rather than detailed instruction on how to actually begin process improvement. On the other hand, there are complete references to books and other material that could be used to learn how to use the methods cited. The purpose of the book is to provide ideas and resources so that a company embarking on software process improvement would not make the same mistakes that these companies made.
The book is a concatenation of chapters by ten different authors, and therein lies its weakness. The level of detail and style of each author was significantly different, so it was difficult to compare the approaches of each company with the others. Although each author had a different emphasis in parts of the software development lifecycle, there was still a large amount of overlap.
One author filled too many pages with a description of their product (which sounded like a sales pitch), while another described their entire methodology. One company listed the titles of everyone at each type of meeting while another just gave the title of their approach. It would have been much more useful if the editors had ensured that each author followed a standard outline and provided approximately the same amount of information and level of detail. The overall impression after reading it is that process improvement is a good thing to do, but most readers would have a difficult time knowing what actual steps to take. This book is a general guide to learn from others’ mistakes, but not for practical help implementing process improvement.