April 01, 2003
Midterm ImprovementAcme's project was at a standstill, and my job was to revive it. Acme insisted on a rigid process, but the heavy testing phase was cause for concern. Could research get Acme back on track?Ulla Merz
Recently, I was hired as project manager of a software product release that had been suspended with 32 percent of the feature development in the balance, but was ready to resume development. I had to prepare a new schedule planning for the remaining feature development work, the restart activities and, most importantly, the testing activities.
Recently, I was hired as project manager of a software product release that had been suspended with 32 percent of the feature development in the balance, but was ready to resume development. I had to prepare a new schedule planning for the remaining feature development work, the restart activities and, most importantly, the testing activities. I didnt have a lot of elbow room: Acme (a pseudonym) had outsourced this project to my client under the condition that Acmes established software development process be followed. This process stipulates a well-defined sequence of testing activities consisting of functional, interoperability, performance, installation, internalization, online help, regression and re-verification testing. In the development phase, Acmes process calls for reviewing the requirements and test plans, as well as informal code inspections by the lead developer, a daily build and coding standards. While preparing the schedule, I found that Acme spends 55 percent of its total effort in the development phase; the remaining 45 percent is eaten up in testing and verification. This focus on testing gave me pause, as it not only increases the cost of development, but also delays the product release. I was skeptical about the cost-effectiveness of Acmes prescribed process, remembering the adage, Do more with less. Motivated to save money for my client, I went into action.
Seeking Solutions from Research In the same article, Jones remarks that a high level of software quality requires a multifaceted approach, comprising eight to 12 of the following practices:
Acme follows eight of the suggested quality practicesbut do these practices remove 95 percent of the defects? Acmes defect-tracking system classifies flaws as either pre-general availability or failure, but further investigation revealed inconsistent data collection and unreliable information. As a result, Acme doesnt really know what the return on its investment in quality practices is.
Investigating the Process I wondered if a more iterative development process might give Acme the same software quality at a lower cost. In their unpublished report, Flexible Models of Software Development: Must We Trade Off Efficiency and Quality? (www.softwarecenter.cmu.edu/publications.html), researchers Alan MacCormack, Chris Kemerer, Michael Cusumano and Bill Crandall suggest that an iterative development process, including a combination of early prototype releases, design reviews and regression testing, followed by product builds, result in higher-quality software. Armed with this information, Acme may want to consider an iterative development process and incorporate some of these quality practices.
Cutting Costs, Not Quality In their study, Evaluating the Cost of Software Quality (Communications of the ACM, Aug. 1998), Carnegie Mellon and University of Michigan computer science professors Sandra A. Slaughter, Donald E. Harter and Mayuram S. Krishnan propose a common-sense strategy for reducing software quality costs. The primary objective? Avoid reworkincluding design, coding and testing efforts required to fix defectsboth during the product development cycle and while the product is in use. Slaughter and company distinguish between two types of quality activities and their costs: prevention and appraisal. As their names imply, prevention activities attempt to avoid the introduction of defects, whereas appraisal activities aim to detect them. Prevention activitieslike design reviews and trainingoccur prior to programming; appraisal activitiessuch as code inspection and regression testingfollow coding. This strategy suggests that companies invest in prevention activities, especially those that can be applied early in the development cycle, and then adjust appraisal activities as quality improves. Specifically, the authors recommend conducting a root/cause analysis of defects found during initial development and use the 80/20 rule to identify the defects for which prevention and appraisal practices should be implemented. In Acmes development process, appraisal activities (functional testing, interoperability testing, performance testing, installation testing, internationalization testing, regression testing, fixed re-verification period and code inspection) dominate prevention activities (requirements review and test-plan review). These researchers would probably advise Acme to adopt prevention activities and re-evaluate and adjust its appraisal activities. With that in mind, I needed to determine which quality activities, especially prevention activities, are most cost-effective. Studies on open-source software development projects and commercial projects at Internet companies analyze quality practices (prevention and appraisal) and process characteristics. Specifically, in How Internet Companies Build Software (MIT Sloan Management Review, Winter 2001), a study of 29 projects from 17 companies, Harvard Business School professor of technology and operations management Alan MacCormack discovered that three practices significantly contribute to software quality improvements and the ultimate success of software projects. In particular, he found that one practicethe early release of a low-functionality product to the customerexplains more than one third of the variation in product quality across all projects. The successful implementation of this practice correlates with a careful selection of and working relationship with beta customers. A second practice responsible for significant quality improvements is a daily build in conjunction with regression tests providing rapid feedback on design changes. MacCormacks study reveals that regression tests were necessary, but not sufficient in themselves to guarantee software quality. Finally, a third practicehigh-level investment in architecture and designalso shows a strong association with high-quality products. The author argues that an investment in a modular and scalable architecture favors the early-stage release of a low-functionality version of the product. On the other hand, the early-stage release of the product also provides feedback on the investment in the architecture and design. Thus, the combination of a prevention activityinvestment in architecture and designand two appraisal activitiesearly release of a low-functionality product, with daily builds in conjunction with regression testscan significantly improve software quality.
Open Source and Quality
What to Do? If my client decides its advantageous to add prevention and appraisal practices to the development phase, it needs to record the time and effort spent following Acmes traditional quality assurance phase, to determine if the actual time and effort spent is less than the time and effort estimated based on Acmes past schedules for the QA phase. My client should also record data to calculate defect removal efficiency to evaluate the efficacy of the level of software quality achieved by the changes in the software process and quality activities. In turn, my client must convince Acme to do the same.
Update: What Weve Accomplished Ulla Merz is a consultant, managing software projects for software product companies, such as Rational Corp. and providing training in Microsoft Project. She holds a Ph.D. in computer science and is PMP certified. Contact her at ullamerz@aol.com or visit www.ullamerz.com
|
|
||||||||||||||||||||||||||||
|
|
|
|