Sunday, March 2, 2014

In the business and software engineering literature the word agile is more a common adjective and the word agility is more a common noun than the name of an accurately defined set of principles, let alone the name of a methodology with well defend set of methods and techniques. Consequently it is easy to find substantial number of definitions of these terms in different contexts. Kettunen (2009) lists seventeen different definitions for the agility in the business literature from years 1995-2008. Further he points out definitions for the strategic, business, enterprise, organization, workforce, IT, manufacturing and supply chain agility and indicates that there are several definitions of agility in the business specific areas as well.

As a summary those 17 different definitions of agility contain the change or the response to change as a key characteristic. Nearly all of them indicate the customer value or the customer involvement as a key characteristic. High quality is expressed in 5 definitions. Also innovation, effectiveness, high performance, nimbleness, competitive capabilities, profitability, simplicity of practices, dexterity of performance, cost efficiency, quickness, resiliency, robustness, adaptive, and lightness are mentioned in some definitions.

Agility in the software development is no exception to this diversity. Kettunen (2009) lists these:

- Iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams with "just enough" ceremony that produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders (Ambler, 2007);

- Capability to accommodate uncertain or changing needs up to a late stage of the development (until the start of the last iterative development cycle of the release) (IEEE, 2007);

- Conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project Wikipedia (2007);

When the basic terminology offers such variability in definition, it is no wonder that the diversity can be found in understanding of the agile principles as well. The similar variation is also visible in the large number of agile methodologies. In this text agile is a common adjective characterizing any word it is connected with. Agile approach is common name of the agile way of developing software, complying with the agile principles. Agile methodology means some defined and named way of doing agile development, for example XP (Beck, 2000) is called a methodology.

Originally the agile approach in the software development was considered to be a team practice, which is discussed in this chapter first. Then the two dominant ways of expanding the agile approach to cover a wider scope of the software development life cycle in larger organizations are presented.

When the agile manifesto was published in 2001 it marked the start of the avalanche of the agile approach in the software development.