Test-Driven Development
Agile methods are gaining more and more interest both in industry and in research. Many industries are transforming their way of working from traditional waterfall projects with long duration to more incremental, iterative and agile practices. At the same time, the need to evaluate and to obtain evidence for different processes, methods and tools has been emphasized.
Lech Madeyski offers the first in-depth evaluation of agile methods. He presents in detail the results of three different experiments, including concrete examples of how to conduct statistical analysis with meta analysis or the SPSS package, using as evaluation indicators the number of acceptance tests passed (overall and per hour) and design complexity metrics.
The book is appropriate for graduate students, researchers and advanced professionals in software engineering. It proves the real benefits of agile software development, provides readers with in-depth insights into experimental methods in the context of agile development, and discusses various validity threats in empirical studies.
Review By: Joel R. Singh
01/17/2011The agile development methodology has progressed from being ”just another repackaged methodology” when it was popularized roughly ten years ago to the main methodology that companies of all sizes, spanning multiple verticals, have either adopted or are in the process of adopting—60 percent, according to the 2010-2011 World Quality Report published by Cap Gemini and HP. Test-driven development (TDD) is one of the major cornerstones that agile proponents advocate in order for organizations to progress from agile development to agile delivery and, as such, I would consider this book extremely relevant.
The early chapters of the book present a high-level overview of test-first programming along with the fundamentals of conducting scientific research from a software perspective, while the later chapters consist of the actual experiments conducted along with the results for each. I believe this work is really geared toward researchers, software architects, and engineering and QA professionals who are looking for relevant metrics to measure the feasibility of the agile implementation at their respective organizations.
This book is not geared toward novices and is not a light read, but, for the true seeker of what metrics to use to show how agile is impacting case quality but also development efforts, it is definitely worth reading! The author assumes that the user is more than familiar with agile implementations and has experienced the paucity of relevant metrics for determining code coverage, speed of development (not just number of user stories completed), effectiveness of unit testing, and internal and external quality indicators. And, best of all, the author provides scientific, experimental case studies and surveys to show how other companies have fared by using various combinations.
I would only recommend this book to colleagues who are serious about learning more about how to effectively manage agile implementations, and I am looking forward to adding this book to my library. I will recommend it to the software architects and the development and QA leaders that I work closely with, as I believe the findings here are relevant to our organization as well as the technology industry as a whole.