An agile process replaces upfront design with the focus on the ability to react and to decide based on the current situation. But, to take the right decision we need to be able to assess the situation accurately at all times, and given the fast development pace, we need to do it in a timely fashion, too.
Effective assessment requires the relevant information to be available as fast as possible. However, software systems are large and complex and they handle large amounts of data. Thus, they present many details that make difficult the identification of the relevant information.
Approaching the problem in an ad-hoc manner does not benefit us. For example, when it comes to assessing software systems we mostly rely on code reading. Granted, modern IDEs do provide some help, but this solution does not scale when we want to reason about a system as a whole. To put it in perspective, a person that reads one line in two-seconds would require approximately one month of work to read a quarter of a million lines of code. And this is just for reading the code.
Various studies report assessment to account for as much as 50% of the total development effort. Assessment is an important activity and it should be addressed explicitly in the development process. Especially in an agile development process.
This talk proposes a fresh perspective on software assessment. First, I assert that software assessment is a critical activity. Second, I provide an overview of techniques and tools that can extend the arsenal of a development team. And third, I discuss the implications of integrating these in an agile development process.
The talk can be accompanied by demos using the Moose analysis platform (http://moosetechnology.org).