Software engineers encounter tooling for planning, assessment and document management. These systems enable teams to know baseline work products as they evolve. Effective tooling is also appropriate for software developers. What would Henry Ford have achieved if he focused his automation effort only on administrative and clerical activities while ignoring the production line? Automating core software product development presents both challenge and opportunity.
This book provides a practical, systematic and comprehensive Automated Defect Prevention (ADP) based software development process model. ADP builds upon people and technology infrastructure, automation and best practices. As they collaborate, people are assigned certain roles, and various technologies have certain roles. When learning better ways to efficiently produce high quality software related work products, the larger team can also benefit, but only if knowledge gained is effectively shared and used. Experience must be captured in a repository. People must be properly motivated to contribute to and reference a repository. Automation of best practices enables beneficial application and retention of lessons learned.
The book observes that a large measure of overall software engineering effort presently goes towards finding and fixing defects. By contrast, defect prevention, reducing the number of initially occurring defects to be found later, represents genuine opportunity to improve efficiency. Understanding the underlying root cause of a class of defects enables development of preventive action plans, and process improvements to prevent recurrence. Automation of preventive action improves process compliance, predictability and product quality. It is duly noted that automation can itself be a significant challenge. However, improvements contribute to customer satisfaction as well as to job satisfaction and productivity. Successfully automating portions of what our software engineers are presently doing relieves tedium and allows for more creative engineering focus. We also gain opportunities to automate reliable measurement of process performance.
The authors recognize process change challenges, and provide an incremental evolutionary approach to phasing in ADP. They apply ADP to, "initial planning and requirements, expanded planning and design, construction and testing, and deployment." Best practices coverage for each software development phase includes characterization of the problem addressed, identification of team members performing the practice, description of practice implementation, and automation. Measurement and tracking also benefit from automation. These measurements support more effective management decision making, systematically providing value above and beyond the basic contribution of each individual.
Important words of caution are provided. There are no silver bullets. Some human activities do not lend themselves to automation. Examples include requirements elicitation, architectural design, documentation peer review and various activities related to creativity and innovation. The authors emphasize appropriate use of measurement and tracking data, and perhaps more importantly the absolute necessity for management to prohibit inappropriate use of that data. Appropriate use deals with improving process performance, while an inappropriate use of measurement data could involve an individual's performance. To be effective in providing useful measures and support productive management decision making, the dedicated, hardworking individuals must be confident that an automated defect prevention system will be used for the benefit of the entire team.