A background to agile software development

Agile development methods are examples of apparently major success stories that seem to have run counter to the prevailing wisdom in information systems (IS) and software engineering” (Agerfalk, Fitzgerald, & Slaughter, 2009, p. 317)

Information systems development involves all of the activities for envisioning, designing, and creating a computerised information system, and there are many system development methodologies available to guide the process (Sambamurthy & Kirsch, 2000;Avison & Fitzgerald, 2006). Agile software development is one class of system development methodology that has emerged to cope with persistent problems in software development, not adequately addressed by traditional system development methodologies, or software engineering practices (Beck, 2000; Cockburn, 2002).

Agile software development is a catchall term used when a project is organised using any one of the agile methods[1]. There are currently about 13 agile methods, and Table 1 shows nine of them. Initially agile methods were called ‘lightweight’ to distinguish them from ‘heavyweight’ methods. Heavyweight methods produce many non-software artefacts during development such as documented plans, models, and specifications (e.g. SSADM (Eva, 1994), Information Engineering (Martin & Finkelstein, 1981), Unified Software Development Process (Jacobson, Booch, & Rumbaugh, 1999)). Agile methods were named in 2001, when a group of 17 methodologists met to discuss the common themes underlying their individual methods. They crystallised these themes into a manifesto, and renamed the lightweight methods - agile methods. Each agile method (more or less) follows the philosophy written in the agile manifesto's four values and 12 guiding principles (Beck, et al., 2001). Figure 1 shows the manifesto values.

Initially agile methods were developed for co-located teams of up to 10 developers, creating small internet-based applications, and interface-intensive systems in situations where requirements uncertainty and speed-to-market were overwhelmingly important (Baskerville, Pries-Heje, & Madsen, 2010). Now the approach has been adapted for globally distributed projects, large projects, and to create mission-critical software, and embedded software.

Figure 1 The agile manifesto (Beck et al. 2001)

What is an agile method? One definition is:

An agile method is a software development methodology designed for the management and support of iterative and incremental development of business systems in environments where change is constant. Agile methods use software development techniques that enhance teamwork in small, empowered teams and support active customer involvement. An agile method is designed to produce working software early, using communication, feedback, learning, and frequent meetings in preference to modelling and documentation. Agile methods adapt existing software development techniques to achieve these goals. (Strode, 2006, p. 262)

Although agile methods share these common features, each method has a different purpose. For example, XP is specifically designed for software development in high change environments, for satisfying customer needs, and for maintaining effective teams (Beck, 2000). Scrum focuses on project management of iterative development (Schwaber & Beedle, 2002). DSDM is a framework for Rapid Application Development (RAD) (Stapleton, 1997), and Crystal methods provide techniques for designing a methodology to suit a specific project (Cockburn, 2002).

Table 1: Agile methods - key sources by publication date

-----------------------------------------------------------------------------------------------------------------------------------------------------

Dynamic Systems Development method DSDM DSDM (1995), Stapleton (1997)Crystal methods Crystal Cockburn (1998), Cockburn (2002)Extreme programming XP Beck (1999), Beck (2000) 1st Edition, Beck and Andres (2005) 2nd EditionAdaptive software development ASD Highsmith (2000)Scrum Beedle, Devos, Sharon, Schwaber, & Sutherland (1999), Schwaber & Beedle (2002) Feature Driven Development FDD Palmer and Felsing (2002)Lean Development LD Charette (2002), Poppendiek & Poppendiek (2003)EVO EVO Gilb (2005)AgileUP AgileUP Ambler (2008) First published on-line 2005

------------------------------------------------------------------------------------------------------------------------------------------

Agile software development is now accepted practice amongst the practitioner community, and has been adopted and adapted in a multitude of different project contexts ((Ambler, 2009; Dyba & Dingsoyr, 2008; West & Grant, 2010). However, it is still of intense practical and theoretical interest due to its wide-ranging effects. Agile adoption impacts organisation structure, culture, and roles, contract negotiation, human resourcing, the way customers are involved in projects, how system quality is negotiated, and the way that software is delivered. Agile software development also changes many facets of software project practice, both technical practices and team social interaction. This means that existing theories about software development organisations, project management, system development, and system use may need to be re-evaluated to accommodate this new paradigm (Dingsoyr, Dyba, & Moe, 2010). The field of information systems is where effective research into many of these aspects of agile software development can be carried out.

References

Ambler, S. W. (2008). The AgileUP. Retrieved from http://www.ambysoft.com/unifiedprocess/agileUP.html

Ambler, S. W. (2009). Agile adoption rate survey results: February 2008 Retrieved 20 July, 2011, from http://www.ambysoft.com/surveys/agileFebruary2008.html

Avison, D., & Fitzgerald, G. (2006). Methodologies for developing information systems: a historical perspective. In D. Avison, S. Elliot, J. Krogstie & J. Pries-Heje (Eds.), The past and future of information systems: 1976-2006 and beyond (pp. 27-38). Boston: Springer.

Baskerville, R., Pries-Heje, J., & Madsen, S. (2010). Post-agility: What follows a decade of agility? Information and Software Technology, 53(5), 543-555.

Beck, K. (1999). Embracing change with Extreme Programming. Computer, 32(10), 70-77.

Beck, K. (2000). Extreme programming explained: Embrace change. Boston: Addison-Wesley.

Beck, K., & Andres, C. (2005). Extreme programming explained: embrace change (2 ed.). Boston: Addison-Wesley.

Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., . . . Thomas, D. (2001). Manifesto for agile software development Retrieved 17 February, 2003, from http://www.agilemanifesto.org

Beedle, M., Devos, M., Sharon, Y., Schwaber, K., & Sutherland, J. (1999). Scrum: A pattern language for hyperproductive software development. In N. Harrison, B. Foote & H. Rohnert (Eds.), Pattern languages of program design (pp. 637-651). New York: Addison-Wesley.

Charette, R. N. (2002). Foundations of Lean Development: The Lean Development manager's guide (Vol. 2). Spotsylvania, Va.: ITABHI Corporation.

Cockburn, A. (1998). Surviving object-oriented projects: A manager's guide. Reading MA: Addison Wesley Longman.

Cockburn, A. (2002). Agile software development. Boston: Addison-Wesley.

Dingsoyr, T., Dyba, T., & Moe, N. B. (Eds.). (2010). Agile software development: current research and future directions. Heidelberg: Springer-Verlag.

Dyba, T., & Dingsoyr, T. (2008). Empirical studies of agile software development: a systematic review. Information and Software Technology, 50(9-10), 833-859.

Eva, M. (1994). SSADM Version 4: A user's guide (2 ed.). London: McGraw-Hill Book Company.

Fitzgerald, B. (2000). Systems development methodologies: The problem of tenses. Information Technology and People, 13(3), 174-185.

Gilb, T. (2005). Competitive Engineering: a handbook for systems engineering, requirements engineering, and software. Oxford: Elsevier Butterworth-Heinemann.

Highsmith, J. (2000). Adaptive software development: A collaborative approach to managing complex systems. New York, NY: Dorset House Publishing.

Jacobson, I., Booch, G., & Rumbaugh, J. (1999). The unified software development process. Reading, Massachusetts: Addison-Wesley.

Martin, J., & Finkelstein, C. (1981). Information Engineering. Vol 1 and 2. Englewood Cliffs, New Jersey: Prentice Hall.

Palmer, S. R., & Felsing, J. M. (2002). A practical guide to Feature-Driven Development. Upper Saddle River: Prentice Hall.

Poppendiek, M., & Poppendiek, T. (2003). Lean software development an agile toolkit. Boston: Addison-Wesley.

Sambamurthy, V., & Kirsch, L. J. (2000). An integrative framework of the information systems development process. Decision Sciences, 31(2), 391-411.

Schwaber, K., & Beedle, M. (2002). Agile software development with Scrum. Upper Saddle River, New Jersey: Prentice Hall.

Stapleton, J. (1997). DSDM Dynamic Systems Development Method. Harlow, England: Addison-Wesley.

Strode, D. E. (2006). Agile methods: a comparative analysis. In S. Mann & N. Bridgeman (Eds.), 19th Annual Conference of the National Advisory Committee on Computing Qualifications (NACCQ 2006) (pp. 257-264). Wellington: NACCQ.

Unknown. (1995). Dynamic Systems Development Method, Version 2 (2 ed.). Ashford: Tesseract Publishing.

West, D., & Grant, T. (2010). Agile development: mainstream adoption has changed agility. 1-20. Retrieved from http://www.osp.ru/netcat_files/18/10/h_d8eddd303b6cf0c38c23601c4363bee4

[1] Method and methodology are used interchangeably in this field, that is, an ‘agile method’ can also be called an ‘agile methodology’. Europeans tend to use ‘methodology’; Americans tend to use ‘method’.