The software engineering community has begun to examine agile methodologies to judge their impact on the creation of quality software. Such an interest can be seen in the literary, corporate, and academic inclusion of such methodologies as Extreme Programming [Beck2000], Adaptive Software Development [Highsmith1999], Crystal [Cockburn2001], Scrum [Rising+2000], and others. Any software development process has to deal with the inevitable change, to satisfy rapidly evolving requirements and technologies. Recent growth in Internet and entrepreneurial software assets accentuates the need to handle such unavoidable change. The software engineering community has begun to examine and implement lightweight, agile methodologies [Cockburn2001]. Advocates of these methodologies profess that these methods are superior for dealing with change and, therefore, for providing customers with what they want, when they want it, and with acceptable defect rates. As we said, quite a few emerging methodologies can be classified as agile. The creators of these methodologies met in Snowbird, Utah, in February 2001 to find common ground. As a result, they formed the Agile Alliance [Beck+2001]. These individuals state their uniting principles this way.
These principles and the details of the agile methodologies sound promising, particularly given the tumultuous conditions of the software industry. However, the practices of these methodologies diverge significantly from processes that have been viewed as trusted, commendable, predictable processes, such as the Personal Software Process [Humphrey1995] and the Rational Unified Process [Jacobson+1999]. There is a need to quantitatively study the effectiveness of this new class of methodologies to assess whether they are, indeed, improvements over the more traditional practices. Software metrics and models are invaluable for characterizing software processes and assessing their effectiveness and improvement. A well-defined set of product and process metrics can support a quantifiable, objective assessment of the costs and benefits of the agile methodologies. In this chapter, we propose an experimental framework for this assessment. Through industrial use of this framework for empirically investigating the effectiveness of agile methodologies, we, as a software community, can gain valuable information on prudent use of these methodologies. |