| You are here: ADP book | ||||||||||||||||||
![]()
|
Why this book is important? Whether you are working on the software production line or managing it, this book can help you deliver applications on time - with the expected quality and functionality - as painlessly as possible. It can also help your team improve productivity by a factor or 10. Moreover, if your team is required to participate in quality initiatives such as CMMI or Six Sigma, this book shows how to support them in a way that actually makes them valuable for you... as opposed to yet more busywork that doesn't provide you any direct benefit. The Automated Defect Prevention (ADP) methodology described in the book can be applied to any project and any software development model. It is based on Parasoft's extensive experience helping organizations such as Cisco, Boeing, Disney, Ericsson, Fidelity, IBM, Lehman Brothers, Lockheed, Lexis-Nexis, Sabre Holdings, AT&T and Yahoo to control and improve their development process - not academic theories dreamed up in an ivory tower. How this book can help you? This book introduces ADP: a practical approach to software management through process improvement. This strategy is enabled by an infrastructure that automates repetitive tasks, tracks project status, and provides instant access to the information needed for informed decision making and process improvement. Applying ADP, you can evolve a sustainable quality process that delivers predictable outcomes. ADP stands out from the current software landscape as a result of two unique features:
It can be applied to any team, regardless of its structure, projects, or development method. The overall goal of this book is to provide practical advice on how to implement ADP in a modern software development process. This is not a theoretical book on how to build software under ideal circumstances. Rather, it is a hands-on guide to solving real-world software project problems. We recognize that most readers will not have the luxury of starting a new software process from scratch, so throughout the book, we pay special attention to phasing in ADP to existing projects and processes, and applying it to large complex code bases without overwhelming the team. The focus throughout is on evolution, not revolution. We do not expect the readers to abandon current processes and workflows in search of a silver bullet solution that will solve all current problems. There is no such perfect development environment or development process that will be a panacea for all software development groups and projects. Consequently, rather than offer step-by-step implementation details for a one-size-fits-all solution, we describe the key practices that have helped many different teams improve their processes. Reading this book, you will learn how to:
What's in the book In Chapter 1, we begin the book by describing ADP and its goals as a response to the complexities of modern software development. We categorize the goals into those affecting people, product, organization, process, and project (PPOPP). We then give an overview of ADP's principles, practices and policies, and we elaborate on the role of defect prevention and automation. The last section briefly describes the evolution of software development process models from waterfall to iterative and agile. The objective is not to convince the readers to adopt a new development process, but rather to propose ideas for making existing processes more effective. In Chapter 2, we introduce the ADP principles: establishment of the infrastructure, application of general best practices, customization of best practices, measurement and tracking of project status, automation, and incremental implementation of ADP's practices. We explain these principles and validate them with research studies and realistic examples. In Chapters 3 and 5, we discuss initial and extended planning together with the minimum and expanded infrastructure required for ADP. Supporting infrastructure is essential for ensuring that ADP practices can be properly measured, tracked, and automated, and thus can be implemented and sustained. We identify the four core infrastructure elements that we have found to be critical to making software work: source control system, automated build system, problem tracking system, and automated reporting system. These four integrated elements form the backbone that allows the teams to maintain and improve their software development process. We also define the roles of people, describe basic and extended plan, and elaborate on parametric cost and schedule estimation models. Chapter 4 addresses the requirements phase. Software defects that originate in the requirements phase and propagate further into the process are often the most costly to remove. Even issues that do not seem to be related to requirements can often be traced back to this phase of the software lifecycle - be it a poorly conceived requirement, an incorrectly implemented requirement, or a missing/incomplete requirement. A key point stressed in this chapter is the importance of determining which requirements will be most difficult to implement, prioritizing them, and building a prototype architecture. In Chapter 6, we discuss architecture and design. The final product of this phase is a blueprint for implementing requirements with the focus on the most critical features. We discuss design policies, patterns and architectures, which are different ways of achieving these goals. Along the way, we try to point out how design mistakes can be prevented and how they relate to requirements. Chapter 7 covers construction, with a focus on the many practices that can prevent defects during this extremely error-prone phase. We describe best practices starting from coding standards, through test-driven development for modules and algorithmically complex units, to conducting unit tests before adding the code to the source control system. In addition, basic policies for use of the source control system and automated build system are outlined in this chapter. Chapter 8 discusses how testing should be used to verify application quality at the various stages of its construction. We describe our recommended practices for testing together with the test progression criteria that help determine when development and testing should progress from level to level: from unit, through integration, system, and acceptance testing. We also depict a defect life cycle in the context of root cause analysis and prevention, and we describe basic policies for use of the problem tracking system and automatic regression testing system. The first part of Chapter 9 explains how measures introduced throughout the book can be used to identify emerging problems in the software product and/or process, and how these measurements should be used to help identify the root cause of the problem in question. The second part of this chapter discusses deployment to the staging system and then to the production system. Deployment of today's complex applications is an inherently difficult process. After discussing preventive strategies for making the deployment process less error-prone, we offer guidance on automating it for different types of projects and environments. Chapter 10 discusses how ADP supports industry initiatives that modern development teams commonly face. It describes the infrastructure and practices put in place for ADP that can be leveraged to support outsourcing initiatives and to address regulatory compliance requirements such as Sarbanes Oxley (SOX). It also shows how the ADP practices, paired with its automation and supporting infrastructure, makes quality improvement initiatives such as SEI - CMMI® practical and sustainable. Finally, in Chapter 11, the book concludes with a case study that shows how industry leaders were able to apply some of the ADP concepts to improve their software development processes. Table of Contents
1. The Case for Automated Defect Prevention About the Authors Dorota Huizinga, PhD, is the Associate Dean for the College of Engineering and Computer Science and Professor of Computer Science at California State University, Fullerton. Her publication record spans a wide range of computer science disciplines and her research was sponsored by the National Science Foundation, California State University System, and private industry. Adam Kolawa is the co-founder and CEO of Parasoft, leading provider of solutions and services that deliver quality as a continuous process throughout the SDLC. He is considered an authority on the topic of software development and the leading innovator in promoting proven methods for enabling a continuous process for software quality. Kolawa has co-authored two books: Automated Defect Prevention: Best Practices in Software Management (Wiley, 2007) and Bulletproofing Web Applications (Wiley, 2001). He has also written or contributed to hundreds of commentary pieces and technical articles. In 2007, eWeek recognized him as one of the 100 Most Influential People in IT. Kolawa holds a Ph.D. in theoretical physics from the California Institute of Technology. Learning More To learn more about the ADP book or read a sample chapter, visit http://www.parasoft.com/adp_book.
|
|||||||||||||||||
| © ADPQB adpqb@adpqb.org | ||||||||||||||||||