Edit filter log

Details for log entry 24,170,801

17:21, 8 June 2019: Headbomb (talk | contribs) triggered filter 891, performing the action "edit" on Agile software development. Actions taken: Warn; Filter description: Predatory open access journals (examine)

Changes made in edit

'''Agile software development''' is an approach to [[software development]] under which requirements and solutions evolve through the collaborative effort of [[Self-organizing communities|self-organizing]] and [[cross-functional team|cross-functional]] teams and their [[Customer|customer(s)]]/[[End user|end user(s)]].<ref name="Collier 2011">{{cite book |title= Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing |last=Collier|first=Ken W. |year=2011 |publisher= Pearson Education |isbn=9780321669544 | pages= 121 ff|quote=What is a self-organizing team?}}</ref> It advocates adaptive planning, evolutionary development, early delivery, and [[Continual improvement process|continual improvement]], and it encourages rapid and flexible response to change.<ref name="WhatIsAgile">{{cite web|url = http://www.agilealliance.org/the-alliance/what-is-agile/|title = What is Agile Software Development?|date = 8 June 2013|accessdate = 4 April 2015|publisher = Agile Alliance}}</ref>{{Explain|date=February 2019}}
'''Agile software development''' is an approach to [[software development]] under which requirements and solutions evolve through the collaborative effort of [[Self-organizing communities|self-organizing]] and [[cross-functional team|cross-functional]] teams and their [[Customer|customer(s)]]/[[End user|end user(s)]].<ref name="Collier 2011">{{cite book |title= Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing |last=Collier|first=Ken W. |year=2011 |publisher= Pearson Education |isbn=9780321669544 | pages= 121 ff|quote=What is a self-organizing team?}}</ref> It advocates adaptive planning, evolutionary development, early delivery, and [[Continual improvement process|continual improvement]], and it encourages rapid and flexible response to change.<ref name="WhatIsAgile">{{cite web|url = http://www.agilealliance.org/the-alliance/what-is-agile/|title = What is Agile Software Development?|date = 8 June 2013|accessdate = 4 April 2015|publisher = Agile Alliance}}</ref>{{Explain|date=February 2019}}


The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=}}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{cite |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?}}</ref><ref name="LarmanGuide" />
The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin |author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith |author5=Jim Highsmith |author6-link=Stephen J. Mellor |author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author) |author8=Andrew Hunt |author9-link=Ken Schwaber |author9=Ken Schwaber |author10-link=Alistair Cockburn |author10=Alistair Cockburn |author11-link=Ron Jeffries |author11=Ron Jeffries |author12-link=Jeff Sutherland |author12=Jeff Sutherland |author13-link=Ward Cunningham |author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer) |author15=Dave Thomas |author16-link=Martin Fowler (software engineer) |author16=Martin Fowler |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=|author-link=Kent Beck }}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{citation |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?|date=4 March 2016}}</ref><ref name="LarmanGuide" />


There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|via=|jstor=20721416}}</ref>
There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|jstor=20721416}}</ref>


{{TOC limit}}
{{TOC limit}}
|journal=General Systems
|journal=General Systems
|volume=19
|volume=19
|pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|url=http://portal.acm.org/citation.cfm?doid=1010865.1010868|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17–17|doi=10.1145/1010865.1010868}}</ref>.
|pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17|doi=10.1145/1010865.1010868}}</ref>.


During the 1990s, a number of ''lightweight'' software development methods evolved in reaction to the prevailing ''heavyweight'' methods that critics described as overly regulated, planned, and [[Micromanagement|micro-managed]]. These included: [[rapid application development]] (RAD), from 1991;<ref>{{cite book | title=Rapid Application Development | publisher=Macmillan | author=Martin, James | year=1991 | isbn=978-0-02-376775-3}}</ref><ref>{{cite book | title=Inside RAD: How to Build a Fully Functional System in 90 Days or Less | publisher=McGraw-Hill |author1=Kerr, James M. |author2=Hunter, Richard | year=1993 | page=3 | isbn=978-0-07-034223-1}}</ref> the [[Unified Process|unified process]] (UP) and [[dynamic systems development method]] (DSDM), both from 1994; [[Scrum (software development)|Scrum]], from 1995; Crystal Clear and [[extreme programming]] (XP), both from 1996; and [[feature-driven development]], from 1997. Although these all originated before the publication of the ''Agile Manifesto'', they are now collectively referred to as agile software development methods.<ref name="LarmanGuide">{{Cite book
During the 1990s, a number of ''lightweight'' software development methods evolved in reaction to the prevailing ''heavyweight'' methods that critics described as overly regulated, planned, and [[Micromanagement|micro-managed]]. These included: [[rapid application development]] (RAD), from 1991;<ref>{{cite book | title=Rapid Application Development | publisher=Macmillan | author=Martin, James | year=1991 | isbn=978-0-02-376775-3}}</ref><ref>{{cite book | title=Inside RAD: How to Build a Fully Functional System in 90 Days or Less | publisher=McGraw-Hill |author1=Kerr, James M. |author2=Hunter, Richard | year=1993 | page=3 | isbn=978-0-07-034223-1}}</ref> the [[Unified Process|unified process]] (UP) and [[dynamic systems development method]] (DSDM), both from 1994; [[Scrum (software development)|Scrum]], from 1995; Crystal Clear and [[extreme programming]] (XP), both from 1996; and [[feature-driven development]], from 1997. Although these all originated before the publication of the ''Agile Manifesto'', they are now collectively referred to as agile software development methods.<ref name="LarmanGuide">{{Cite book
|year=2001
|year=2001
|publisher=Agile Alliance
|publisher=Agile Alliance
|author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin
|author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=[[Brian Marick]]
|author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith
|author5=Jim Highsmith |author6-link=Stephen J. Mellor
|author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author)
|author8=Andrew Hunt |author9-link=Ken Schwaber
|author9=Ken Schwaber |author10-link=Alistair Cockburn
|author10=Alistair Cockburn |author11-link=Ron Jeffries
|author11=Ron Jeffries |author12-link=Jeff Sutherland
|author12=Jeff Sutherland |author13-link=Ward Cunningham
|author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer)
|author15=Dave Thomas |author16-link=Martin Fowler (software engineer)
|author16=Martin Fowler |author17-link=Brian Marick
|author17=Brian Marick
|accessdate=6 June 2010
|accessdate=6 June 2010
|archiveurl=https://web.archive.org/web/20100614043008/http://www.agilemanifesto.org/principles.html
|archiveurl=https://web.archive.org/web/20100614043008/http://www.agilemanifesto.org/principles.html
|archivedate=14 June 2010
|archivedate=14 June 2010
|deadurl=no
|deadurl=no
|df=dmy }}</ref>
|df=dmy |author-link=Kent Beck
}}</ref>
# Customer satisfaction by early and continuous delivery of valuable software.
# Customer satisfaction by early and continuous delivery of valuable software.
# Welcome changing requirements, even in late development.
# Welcome changing requirements, even in late development.
=== Adaptive vs. predictive ===
=== Adaptive vs. predictive ===


Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref>
Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|author2-link=Richard Turner (software)}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref>


''Adaptive'' methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team has difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method is about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost.
''Adaptive'' methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team has difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method is about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost.
|source=An Agile Information Systems Development Method in use<ref name="Aydin2004">{{cite journal | last1 = Aydin | first1 = M.N. | last2 = Harmsen | first2 = F. | last3 = Slooten | last4 = Stagwee | first4 = R. A. | year = 2004 | title = An Agile Information Systems Development Method in use | url = | journal = Turk J Elec Engin | volume = 12 | issue = 2| pages = 127–138 }}</ref>}}
|source=An Agile Information Systems Development Method in use<ref name="Aydin2004">{{cite journal | last1 = Aydin | first1 = M.N. | last2 = Harmsen | first2 = F. | last3 = Slooten | last4 = Stagwee | first4 = R. A. | year = 2004 | title = An Agile Information Systems Development Method in use | url = | journal = Turk J Elec Engin | volume = 12 | issue = 2| pages = 127–138 }}</ref>}}


Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management Special Issue on Agile Analysis, Design, and Implementation|volume=16|issue=4|pages=20–24}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref>
Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management |volume=16|issue=4|pages=20–24|doi=10.4018/jdm.2005100102}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref>


In practice, methods can be tailored using various tools. Generic process modeling languages such as [[Unified Modeling Language]] can be used to tailor software development methods. However, dedicated tools for method engineering such as the Essence Theory of Software Engineering of [[SEMAT]] also exist.<ref>Park, J. S., McMahon, P. E., and Myburgh, B. (2016). Scrum Powered by Essence. ACM SIGSOFT Software Engineering Notes, 41(1), pp. 1-8.</ref>
In practice, methods can be tailored using various tools. Generic process modeling languages such as [[Unified Modeling Language]] can be used to tailor software development methods. However, dedicated tools for method engineering such as the Essence Theory of Software Engineering of [[SEMAT]] also exist.<ref>Park, J. S., McMahon, P. E., and Myburgh, B. (2016). Scrum Powered by Essence. ACM SIGSOFT Software Engineering Notes, 41(1), pp. 1-8.</ref>
=== Large-scale, offshore and distributed ===
=== Large-scale, offshore and distributed ===


Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref>
Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57|author2-link=Richard Turner (software)}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref>


In response, a range of strategies and patterns has evolved for overcoming challenges with large-scale development efforts (>20 developers)<ref name="ambler2006"/><ref name="sstc2007">Schaaf, R.J. (2007). Agility XL [http://www.sstc-online.org/Proceedings/2007/pdfs/RJS1722.pdf Systems and Software Technology Conference 2007] {{webarchive|url=https://web.archive.org/web/20160313105019/http://sstc-online.org/proceedings/2007/pdfs/rjs1722.pdf |date=13 March 2016 }}, Tampa, FL</ref> or distributed (non-colocated) development teams,<ref name="BridgingTheDistance">{{cite web|url=http://www.drdobbs.com/architecture-and-design/184414899 |title=Bridging the Distance |publisher=Sdmagazine.com |date= |accessdate=1 February 2011}}</ref><ref name="AgileOffshore">{{cite web|first=Martin |last=Fowler |url=http://www.martinfowler.com/articles/agileOffshore.html |title=Using an Agile Software Process with Offshore Development |publisher=Martinfowler.com |date= |accessdate=6 June 2010}}</ref> amongst other challenges; and there are now several recognised frameworks that seek to mitigate or avoid these challenges.
In response, a range of strategies and patterns has evolved for overcoming challenges with large-scale development efforts (>20 developers)<ref name="ambler2006"/><ref name="sstc2007">Schaaf, R.J. (2007). Agility XL [http://www.sstc-online.org/Proceedings/2007/pdfs/RJS1722.pdf Systems and Software Technology Conference 2007] {{webarchive|url=https://web.archive.org/web/20160313105019/http://sstc-online.org/proceedings/2007/pdfs/rjs1722.pdf |date=13 March 2016 }}, Tampa, FL</ref> or distributed (non-colocated) development teams,<ref name="BridgingTheDistance">{{cite web|url=http://www.drdobbs.com/architecture-and-design/184414899 |title=Bridging the Distance |publisher=Sdmagazine.com |date= |accessdate=1 February 2011}}</ref><ref name="AgileOffshore">{{cite web|first=Martin |last=Fowler |url=http://www.martinfowler.com/articles/agileOffshore.html |title=Using an Agile Software Process with Offshore Development |publisher=Martinfowler.com |date= |accessdate=6 June 2010}}</ref> amongst other challenges; and there are now several recognised frameworks that seek to mitigate or avoid these challenges.
* [[Large-Scale Scrum|Large-scale scrum]] (LeSS), [[Craig Larman]] and Bas Vodde
* [[Large-Scale Scrum|Large-scale scrum]] (LeSS), [[Craig Larman]] and Bas Vodde
* Nexus (scaled professional Scrum),<ref>{{cite web|last1=Schwaber|first1=Ken|url=https://www.scrum.org/Portals/0/NexusGuide%20v1.1.pdf|website=scrum.org|accessdate=14 September 2015|title=Nexus Guide: The Definitive Guide to Nexus: The exoskeleton of scaled Scrum development}}</ref> [[Ken Schwaber]]
* Nexus (scaled professional Scrum),<ref>{{cite web|last1=Schwaber|first1=Ken|url=https://www.scrum.org/Portals/0/NexusGuide%20v1.1.pdf|website=scrum.org|accessdate=14 September 2015|title=Nexus Guide: The Definitive Guide to Nexus: The exoskeleton of scaled Scrum development}}</ref> [[Ken Schwaber]]
* Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015}}</ref> [[Jeff Sutherland]], Alex Brown
* Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015|date=23 July 2014}}</ref> [[Jeff Sutherland]], Alex Brown
* Enterprise Scrum,<ref>{{cite web|last1=Beedle|first1=Mike|title=Enterprise Scrum|url=http://www.enterprisescrum.com/|accessdate=25 September 2015}}</ref> [[Mike Beedle]]
* Enterprise Scrum,<ref>{{cite web|last1=Beedle|first1=Mike|title=Enterprise Scrum|url=http://www.enterprisescrum.com/|accessdate=25 September 2015}}</ref> [[Mike Beedle]]
* Setchu (Scrum-based lightweight framework),<ref>{{cite web|last1=Ebbage|first1=Michael|title=Setchu – Agile at Scale|url=http://agile-setchu.org/|accessdate=30 September 2015}}</ref> Michael Ebbage
* Setchu (Scrum-based lightweight framework),<ref>{{cite web|last1=Ebbage|first1=Michael|title=Setchu – Agile at Scale|url=http://agile-setchu.org/|accessdate=30 September 2015}}</ref> Michael Ebbage
====Adding stories to an iteration in progress====
====Adding stories to an iteration in progress====


In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08}}</ref>
In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08|date=11 October 2011}}</ref>


This does not mean that a story cannot expand. Teams must deal with new information, which may produce additional tasks for a story. If the new information prevents the story from being completed during the iteration, then it should be carried over to a subsequent iteration. However, it should be prioritized against all remaining stories, as the new information may have changed the story's original priority.
This does not mean that a story cannot expand. Teams must deal with new information, which may produce additional tasks for a story. If the new information prevents the story from being completed during the iteration, then it should be carried over to a subsequent iteration. However, it should be prioritized against all remaining stories, as the new information may have changed the story's original priority.
The [[product owner]] is responsible for representing the business in the development activity and is often the most demanding role.<ref>{{cite book|author1=Sims, Chris |author2=Johnson, Hillary Louise |title=The Elements of Scrum|date=2011-02-15|publisher=Dymaxicon|page=73|edition=Kindle}}</ref>
The [[product owner]] is responsible for representing the business in the development activity and is often the most demanding role.<ref>{{cite book|author1=Sims, Chris |author2=Johnson, Hillary Louise |title=The Elements of Scrum|date=2011-02-15|publisher=Dymaxicon|page=73|edition=Kindle}}</ref>


A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08}}</ref>
A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08|date=25 August 2011}}</ref>


====Teams are not focused====
====Teams are not focused====


Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14}}</ref>
Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14|date=8 April 2014}}</ref>


====Excessive preparation/planning====
====Excessive preparation/planning====
====Allowing technical debt to build up====
====Allowing technical debt to build up====


Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014}}</ref>
Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014|date = 22 March 2014}}</ref>


As the system evolves it is important to [[Code refactoring|refactor]] as entropy of the system naturally increases.<ref>{{cite web|last1=Shore|first1=James|title=The Art of Agile Development: Refactoring|url=http://www.jamesshore.com/Agile-Book/refactoring.html|website=www.jamesshore.com|accessdate=2014-06-14}}</ref> Over time the lack of constant maintenance causes increasing defects and development costs.<ref name="Technical Debt + Red October"/>
As the system evolves it is important to [[Code refactoring|refactor]] as entropy of the system naturally increases.<ref>{{cite web|last1=Shore|first1=James|title=The Art of Agile Development: Refactoring|url=http://www.jamesshore.com/Agile-Book/refactoring.html|website=www.jamesshore.com|accessdate=2014-06-14}}</ref> Over time the lack of constant maintenance causes increasing defects and development costs.<ref name="Technical Debt + Red October"/>


====Developer burnout====
====Developer burnout====
Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite web|url=https://ac.els-cdn.com/S1877050916000582/1-s2.0-S1877050916000582-main.pdf?_tid=c457f048-fb52-11e7-898a-00000aacb35e&acdnat=1516172036_b8b055d4f50de7743058b83879f35f74//|title=Current study on limitations of Agile|last=|first=|date=|website=|access-date=}}</ref>
Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite journal|title=Current study on limitations of Agile|journal=Procedia Computer Science|volume=78|pages=291–297|last=|first=|date=January 2016|doi=10.1016/j.procs.2016.02.056}}</ref>


== Agile management ==
== Agile management ==


== Criticism ==
== Criticism ==
Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite web|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|url=http://aisel.aisnet.org/cais/vol29/iss1/2/|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles.
Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite book|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=20 July 2016|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles.


The increasing adoption of agile practices has also been criticized as being a [[management fad]] that simply describes existing good practices under new jargon, promotes a ''one size fits all'' mindset towards development strategies, and wrongly emphasizes method over results.<ref>{{cite web|url = http://www.batimes.com/kupe-kupersmith/agile-is-a-fad.html|title = Agile is a Fad|last = Kupersmith|first = Kupe}}</ref>
The increasing adoption of agile practices has also been criticized as being a [[management fad]] that simply describes existing good practices under new jargon, promotes a ''one size fits all'' mindset towards development strategies, and wrongly emphasizes method over results.<ref>{{cite web|url = http://www.batimes.com/kupe-kupersmith/agile-is-a-fad.html|title = Agile is a Fad|last = Kupersmith|first = Kupe}}</ref>
*{{cite book|last=Fowler|first=Martin|chapter=Is Design Dead?|chapterurl=http://www.martinfowler.com/articles/designDead.html|pages=3–18|editor-first=Giancarlo|editor-last=Succi|editor2-first=Michele|editor2-last=Marchesi|title=Extreme Programming Examined|year=2001|publisher=Addison-Wesley|isbn=978-0-201-71040-3|ref={{harvid|Succi|Marchesi|2001}}}}
*{{cite book|last=Fowler|first=Martin|chapter=Is Design Dead?|chapterurl=http://www.martinfowler.com/articles/designDead.html|pages=3–18|editor-first=Giancarlo|editor-last=Succi|editor2-first=Michele|editor2-last=Marchesi|title=Extreme Programming Examined|year=2001|publisher=Addison-Wesley|isbn=978-0-201-71040-3|ref={{harvid|Succi|Marchesi|2001}}}}
*{{cite journal |first=Craig |last=Larman |last2=Basili |first2=Victor R. |title=Iterative and Incremental Development: A Brief History |journal=IEEE Computer |volume=36 |issue=3 |pages=47–56 |date=June 2003 |doi=10.1109/MC.2003.1204375 |url=https://pdfs.semanticscholar.org/f9b3/ca89c69bacfade039c8be40762c6857bda11.pdf |ref=harv}}
*{{cite journal |first=Craig |last=Larman |last2=Basili |first2=Victor R. |title=Iterative and Incremental Development: A Brief History |journal=IEEE Computer |volume=36 |issue=3 |pages=47–56 |date=June 2003 |doi=10.1109/MC.2003.1204375 |url=https://pdfs.semanticscholar.org/f9b3/ca89c69bacfade039c8be40762c6857bda11.pdf |ref=harv}}
*{{cite web | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition}}
*{{cite journal | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | journal =The Mitre Corporation | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition| date =8 September 2013 | last1 =Casagni | first1 =Michelle | last2 =Benito | first2 =Robert | last3 =Mayfield | first3 =Dr Kathleen M. | last4 =Northern | first4 =Carlton }}
*{{cite book|first=Alan|last=Moran|title=Managing Agile: Strategy, Implementation, Organisation and People|url=https://books.google.com/books?id=I6l_BwAAQBAJ|date=2015|publisher=Springer|isbn=978-3-319-16262-1}}
*{{cite book|first=Alan|last=Moran|title=Managing Agile: Strategy, Implementation, Organisation and People|url=https://books.google.com/books?id=I6l_BwAAQBAJ|date=2015|publisher=Springer|isbn=978-3-319-16262-1}}
*{{cite web|first=Dirk|last=Riehle|title=A Comparison of the Value Systems of Adaptive Software Development and Extreme Programming: How Methodologies May Learn From Each Other|url=http://www.riehle.org/computer-science/research/2000/xp-2000.html}} In {{harvnb|Succi|Marchesi|2001}}
*{{cite web|first=Dirk|last=Riehle|title=A Comparison of the Value Systems of Adaptive Software Development and Extreme Programming: How Methodologies May Learn From Each Other|url=http://www.riehle.org/computer-science/research/2000/xp-2000.html}} In {{harvnb|Succi|Marchesi|2001}}

Action parameters

VariableValue
Edit count of the user (user_editcount)
266803
Name of the user account (user_name)
'Headbomb'
Age of the user account (user_age)
412051038
Groups (including implicit) the user is in (user_groups)
[ 0 => 'autoreviewer', 1 => 'extendedconfirmed', 2 => 'extendedmover', 3 => 'filemover', 4 => 'patroller', 5 => 'reviewer', 6 => 'rollbacker', 7 => 'templateeditor', 8 => '*', 9 => 'user', 10 => 'autoconfirmed' ]
Rights that the user has (user_rights)
[ 0 => 'autopatrol', 1 => 'extendedconfirmed', 2 => 'suppressredirect', 3 => 'move-subpages', 4 => 'move', 5 => 'tboverride', 6 => 'move-categorypages', 7 => 'movefile', 8 => 'patrol', 9 => 'review', 10 => 'autoreview', 11 => 'autoconfirmed', 12 => 'editsemiprotected', 13 => 'rollback', 14 => 'templateeditor', 15 => 'oathauth-enable', 16 => 'createaccount', 17 => 'read', 18 => 'edit', 19 => 'createtalk', 20 => 'writeapi', 21 => 'viewmywatchlist', 22 => 'editmywatchlist', 23 => 'viewmyprivateinfo', 24 => 'editmyprivateinfo', 25 => 'editmyoptions', 26 => 'abusefilter-log-detail', 27 => 'centralauth-merge', 28 => 'abusefilter-view', 29 => 'abusefilter-log', 30 => 'vipsscaler-test', 31 => 'collectionsaveasuserpage', 32 => 'reupload-own', 33 => 'move-rootuserpages', 34 => 'createpage', 35 => 'minoredit', 36 => 'editmyusercss', 37 => 'editmyuserjson', 38 => 'editmyuserjs', 39 => 'purge', 40 => 'sendemail', 41 => 'applychangetags', 42 => 'spamblacklistlog', 43 => 'mwoauthmanagemygrants', 44 => 'reupload', 45 => 'upload', 46 => 'collectionsaveascommunitypage', 47 => 'movestable', 48 => 'skipcaptcha', 49 => 'transcode-reset', 50 => 'createpagemainns' ]
Whether the user is editing from mobile app (user_app)
false
Whether or not a user is editing through the mobile interface (user_mobile)
false
user_wpzero
false
Page ID (page_id)
639009
Page namespace (page_namespace)
0
Page title without namespace (page_title)
'Agile software development'
Full page title (page_prefixedtitle)
'Agile software development'
Action (action)
'edit'
Edit summary/reason (summary)
'Alter: author, author3, author5, author6, author8, author9, author10, author11, author12, author13, author15, author16, template type, pages, author17, author2, date. Add: pages, volume, journal, doi, date, author-link, author pars. 1-17. Removed URL that duplicated unique identifier. Removed parameters. Formatted [[WP:ENDASH|dashes]]. | You can [[WP:UCB|use this tool]] yourself. [[WP:DBUG|Report bugs here]]. '
Old content model (old_content_model)
'wikitext'
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
'{{short description|group of iterative and incremental development methods}} {{Software development process}} '''Agile software development''' is an approach to [[software development]] under which requirements and solutions evolve through the collaborative effort of [[Self-organizing communities|self-organizing]] and [[cross-functional team|cross-functional]] teams and their [[Customer|customer(s)]]/[[End user|end user(s)]].<ref name="Collier 2011">{{cite book |title= Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing |last=Collier|first=Ken W. |year=2011 |publisher= Pearson Education |isbn=9780321669544 | pages= 121 ff|quote=What is a self-organizing team?}}</ref> It advocates adaptive planning, evolutionary development, early delivery, and [[Continual improvement process|continual improvement]], and it encourages rapid and flexible response to change.<ref name="WhatIsAgile">{{cite web|url = http://www.agilealliance.org/the-alliance/what-is-agile/|title = What is Agile Software Development?|date = 8 June 2013|accessdate = 4 April 2015|publisher = Agile Alliance}}</ref>{{Explain|date=February 2019}} The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=}}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{cite |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?}}</ref><ref name="LarmanGuide" /> There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|via=|jstor=20721416}}</ref> {{TOC limit}} ==History== [[Iterative and incremental development|Iterative and incremental development methods]] can be traced back as early as 1957,<ref name="craig2003">[[Gerald M. Weinberg]], as quoted in {{harvnb|Larman|Basili|2003|pp=47–56}} "We were doing incremental development as early as 1957, in Los Angeles, under the direction of Bernie Dimsdale at [[Service Bureau Corporation|IBM's Service Bureau Corporation]]. He was a colleague of [[John von Neumann]], so perhaps he learned it there, or assumed it as totally natural. I do remember Herb Jacobs (primarily, though we all participated) developing a large simulation for Motorola, where the technique used was, as far as I can tell&nbsp;... All of us, as far as I can remember, thought waterfalling of a huge project was rather stupid, or at least ignorant of the realities. I think what the waterfall description did for us was make us realize that we were doing something else, something unnamed except for 'software development.'"</ref> with evolutionary project management<ref name="EvolutionaryProjectManagement">{{cite web |url=https://www.gilb.com/Project-Management |accessdate=2017-04-30 |deadurl=yes |archiveurl=https://web.archive.org/web/20160327214807/http://www.gilb.com/Project-Management |title=Evolutionary Project Management (Original page, external archive) |archivedate=27 March 2016 |publisher=Gilb |df= }}</ref><ref>{{cite web |url=http://concepts.gilb.com/tiki-page.php?pageName=Evolutionary-Project-Management |title=Evolutionary Project Management (New page) |accessdate=2017-04-30 |publisher=Gilb}}</ref> and [[adaptive software development]]<ref name="edmonds1974">{{Cite journal |last=Edmonds |first=E. A. |year=1974 |title=A Process for the Development of Software for Nontechnical Users as an Adaptive System |journal=General Systems |volume=19 |pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|url=http://portal.acm.org/citation.cfm?doid=1010865.1010868|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17–17|doi=10.1145/1010865.1010868}}</ref>. During the 1990s, a number of ''lightweight'' software development methods evolved in reaction to the prevailing ''heavyweight'' methods that critics described as overly regulated, planned, and [[Micromanagement|micro-managed]]. These included: [[rapid application development]] (RAD), from 1991;<ref>{{cite book | title=Rapid Application Development | publisher=Macmillan | author=Martin, James | year=1991 | isbn=978-0-02-376775-3}}</ref><ref>{{cite book | title=Inside RAD: How to Build a Fully Functional System in 90 Days or Less | publisher=McGraw-Hill |author1=Kerr, James M. |author2=Hunter, Richard | year=1993 | page=3 | isbn=978-0-07-034223-1}}</ref> the [[Unified Process|unified process]] (UP) and [[dynamic systems development method]] (DSDM), both from 1994; [[Scrum (software development)|Scrum]], from 1995; Crystal Clear and [[extreme programming]] (XP), both from 1996; and [[feature-driven development]], from 1997. Although these all originated before the publication of the ''Agile Manifesto'', they are now collectively referred to as agile software development methods.<ref name="LarmanGuide">{{Cite book |last=Larman |first=Craig |year=2004 |title=Agile and Iterative Development: A Manager's Guide |publisher=Addison-Wesley |isbn=978-0-13-111155-4 |page=27 |postscript=<!--None--> }}</ref> At the same time, similar changes were underway in manufacturing<ref>Iacocca Institute (1991). "21st Century Manufacturing Enterprise Strategy: An Industry Led View". Iacocca Institute, Lehigh University, Bethlehem, PA.</ref> and aerospace.<ref>Presley, A., J. Mills and D. Liles (1995). "Agile Aerospace Manufacturing". Nepcon East 1995, Boston.</ref> In 2001, seventeen software developers met at a resort in [[Snowbird, Utah|Snowbird]], [[Utah]] to discuss these lightweight development methods, including among others [[Kent Beck]], [[Ward Cunningham]], [[Dave Thomas (programmer)|Dave Thomas]], [[Jeff Sutherland]], [[Ken Schwaber]], [[Jim Highsmith]], [[Alistair Cockburn]], and [[Robert C. Martin]]. Together they published the ''Manifesto for Agile Software Development''.<ref name="AgileManifesto" /> In 2005, a group headed by Cockburn and Highsmith wrote an addendum of [[project management]] principles, the [[PM Declaration of Interdependence]],<ref>{{cite web|url=http://pmdoi.org|title=Declaration of Interdependence|last=Anderson|first=David|year=2005|website=|archive-url=https://web.archive.org/web/20180127094805/http://www.pmdoi.org/|archive-date=27 January 2018|dead-url=true|access-date=4 October 2018|df=dmy-all}}</ref> to guide software project management according to agile software development methods. In 2009, a group working with Martin wrote an extension of [[software development]] principles, the [[Software craftsmanship|Software Craftsmanship Manifesto]], to guide agile software development according to [[professional]] conduct and mastery. In 2011, the Agile Alliance created the ''Guide to Agile Practices'' (renamed the ''Agile Glossary'' in 2016),<ref>{{Cite news|url=https://www.agilealliance.org/how-you-can-help-the-agile-alliance-help-you/|title=How You Can Help Agile Alliance Help You|last=McDonald|first=Kent|date=1 November 2016|work=Agile Alliance Blog|access-date=4 July 2017}}</ref> an evolving open-source compendium of the working definitions of agile practices, terms, and elements, along with interpretations and experience guidelines from the worldwide community of agile practitioners. == {{anchor|The Agile Manifesto}} The Manifesto for Agile Software Development == === Agile software development values === Based on their combined experience of developing software and helping others do that, the seventeen signatories to the manifesto proclaimed that they value:<ref name="AgileManifesto" /> * {{em | {{strong | Individuals and Interactions}} over processes and tools }} * {{em | {{strong | Working Software}} over comprehensive documentation }} * {{em | {{strong | Customer Collaboration}} over contract negotiation }} * {{em | {{strong | Responding to Change}} over following a plan }} That is to say, the items on the left are valued more than the items on the right. As [[Scott Ambler]] elucidated:<ref name="abmmw"> {{cite web |url=http://www.ambysoft.com/essays/agileManifesto.html |title=Examining the Agile Manifesto |publisher=Ambysoft Inc. |accessdate=6 April 2011}}</ref> * Tools and processes are important, but it is more important to have competent people working together effectively. *Good documentation is useful in helping people to understand how the software is built and how to use it, but the main point of development is to create software, not documentation. *A contract is important but is no substitute for working closely with customers to discover what they need. *A project plan is important, but it must not be too rigid to accommodate changes in technology or the environment, stakeholders' priorities, and people's understanding of the problem and its solution. Some of the authors formed the Agile Alliance, a non-profit organization that promotes software development according to the manifesto's values and principles. Introducing the manifesto on behalf of the Agile Alliance, [[Jim Highsmith]] said, {{Quote |text=The Agile movement is not anti-methodology, in fact many of us want to restore credibility to the word methodology. We want to restore a balance. We embrace modeling, but not in order to file some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a turbulent environment. Those who would brand proponents of XP or SCRUM or any of the other Agile Methodologies as "hackers" are ignorant of both the methodologies and the original definition of the term hacker.|sign=Jim Highsmith |author=Jim Highsmith |source=History: The Agile Manifesto<ref> {{cite web | url=http://agilemanifesto.org/history.html | title=History: The Agile Manifesto |year=2001 |author=Jim Highsmith |publisher=agilemanifesto.org}} </ref>}} === Agile software development principles === The ''Manifesto for Agile Software Development'' is based on twelve principles:<ref name="ManifestoPrinciples"> {{cite web |url=http://www.agilemanifesto.org/principles.html |title=Principles behind the Agile Manifesto |year=2001 |publisher=Agile Alliance |author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=[[Brian Marick]] |accessdate=6 June 2010 |archiveurl=https://web.archive.org/web/20100614043008/http://www.agilemanifesto.org/principles.html |archivedate=14 June 2010 |deadurl=no |df=dmy }}</ref> # Customer satisfaction by early and continuous delivery of valuable software. # Welcome changing requirements, even in late development. # Deliver working software frequently (weeks rather than months) # Close, daily cooperation between business people and developers # Projects are built around motivated individuals, who should be trusted # Face-to-face conversation is the best form of communication (co-location) # Working software is the primary measure of progress # Sustainable development, able to maintain a constant pace # Continuous attention to technical excellence and good design # Simplicity&mdash;the art of maximizing the amount of work {{Not a typo|not}} done&mdash;is essential # Best architectures, requirements, and designs emerge from self-organizing teams # Regularly, the team reflects on how to become more effective, and adjusts accordingly ==Overview== [[File:Pair programming 1.jpg|200px|thumb|right|[[Pair programming]], an agile development technique used by [[Extreme Programming|XP]].]] ===Iterative, incremental and evolutionary=== Most agile development methods break product development work into small increments that minimize the amount of up-front planning and design. Iterations, or sprints, are short time frames ([[timeboxing|timeboxes]]) that typically last from one to four weeks. Each iteration involves a [[cross-functional team]] working in all functions: [[Project planning|planning]], [[requirements analysis|analysis]], [[Software design|design]], [[Computer programming|coding]], [[unit testing]], and [[acceptance testing]]. At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the product to adapt to changes quickly.<ref name="auto">{{cite book | author=Moran, A.|title=Agile Risk Management |publisher=Springer Verlag|year=2014|isbn=978-3319050072}}</ref> An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal [[Software bug|bugs]]) at the end of each iteration.<ref name="embracing change">{{cite journal| last=Beck|first=Kent| year=1999|title=Embracing Change with Extreme Programming| journal=Computer|volume=32|issue=10| pages=70–77| doi=10.1109/2.796139}}</ref> Multiple iterations might be required to release a product or new features. Working software is the primary measure of progress.<ref name="ManifestoPrinciples" /> ===Efficient and face-to-face communication=== The principle of [[Colocation (business)|co-location]] is that co-workers on the same team should be situated together to better establish the identity as a team and to improve communication.<ref>{{cite web|url=https://www.infoq.com/news/collaborative-team-space-study|title=Study: Co-Located Teams vs. the Cubicle Farm|last=Preuss|first=Deborah Hartmann|date=13 October 2006|website=InfoQ|access-date=2018-10-23}}</ref> This enables [[face-to-face interaction]], ideally in front of a whiteboard, that reduces the cycle time typically taken when questions and answers are mediated through phone, persistent chat, wiki, or email.<ref>{{cite web|url=https://www.pearson.com/us/higher-education/program/Cockburn-Agile-Software-Development-The-Cooperative-Game-2nd-Edition/PGM38838.html|title=Agile Software Development: The Cooperative Game|last=Cockburn|first=Alistair|date=2007|website=www.pearson.com|publisher=Addison-Wesley Professional|language=en|access-date=2018-10-23|edition=2nd}}</ref> No matter which development method is followed, every team should include a [[customer representative]] ("Product Owner" in [[Scrum (software development)|Scrum]]). This person is agreed by stakeholders to act on their behalf and makes a personal commitment to being available for developers to answer questions throughout the iteration. At the end of each iteration, stakeholders and the customer representative review progress and re-evaluate priorities with a view to optimizing the [[Rate of return|return on investment]] (ROI) and ensuring alignment with customer needs and company goals. In agile software development, an '''information radiator''' is a (normally large) physical display located prominently near the development team, where passers-by can see it. It presents an up-to-date summary of the product development status.<ref name="Cockburn, Information radiator">{{cite web|url=http://alistair.cockburn.us/Information+radiator|title=Information radiator|last=Cockburn|first=Alistair|authorlink=Alistair Cockburn|date=19 June 2008|access-date=}}</ref><ref name=Ambler>{{cite book |title=Agile Modeling: Effective Practices for EXtreme Programming and the Unified Process |first=Scott |last=Ambler |date=12 April 2002 |isbn=978-0-471-20282-0 |publisher=John Wiley & Sons |pages=12, 164, 363}}</ref> A [[build light indicator]] may also be used to inform a team about the current status of their product development. ===Very short feedback loop and adaptation cycle=== A common characteristic in agile software development is the [[Stand-up meeting|daily stand-up]] (also known as the ''daily scrum)''. In a brief session, team members report to each other what they did the previous day toward their team's iteration goal, what they intend to do today toward the goal, and any roadblocks or impediments they can see to the goal.<ref>{{cite web |url=http://www.eylean.com/Publications/DownloadPublication/3443705e-1697-4557-8327-ff8644fab40b?name=Whitepaper---Developing-agile-project-task-and-team-management-practices |title=Developing agile project task and team management practices |publisher=Eylean |first=Vidas |last=Vasiliauskas |date=2014 |access-date=15 September 2014 |archive-url=https://web.archive.org/web/20140915141234/http://www.eylean.com/Publications/DownloadPublication/3443705e-1697-4557-8327-ff8644fab40b?name=Whitepaper---Developing-agile-project-task-and-team-management-practices |archive-date=15 September 2014 |dead-url=yes |df=dmy-all }}</ref> ===Quality focus=== Specific tools and techniques, such as [[continuous integration]], automated [[unit testing]], [[pair programming]], [[test-driven development]], [[Software design pattern|design patterns]], [[behavior-driven development]], [[domain-driven design]], [[code refactoring]] and other techniques are often used to improve quality and enhance product development agility.<ref>{{cite book|last1=Jeffries|first1=Ron|last2=Anderson|first2=Ann|last3=Hendrickson|first3=Chet|title=Extreme Programming installed|date=2001|publisher=Addison-Weslsy|isbn=978-0201-70842-4|pages=72–147}}</ref> This is predicated on designing and building quality in from the beginning and being able to demonstrate software for customers at any point, or at least at the end of every iteration.<ref>{{cite book|title=Agile Testing: A Practical Guide for Testers and Agile Teams|author=Lisa Crispin|author2=Janet Gregory|publisher=Addison-Wesley|year=2009|isbn=|location=|pages=}}</ref> ==Philosophy== Compared to traditional software engineering, agile software development mainly targets complex systems and product development with dynamic, non-deterministic and non-linear characteristics. Accurate estimates, stable plans, and predictions are often hard to get in early stages, and confidence in them is likely to be low. Agile practitioners will seek to reduce the ''leap-of-faith'' that is needed before any evidence of value can be obtained.<ref name=Mitchell2016>{{Cite book | last=Mitchell | first=Ian | year=2016 | title=Agile Development in Practice | publisher= Tamare House | isbn=978-1-908552-49-5| page=11 | postscript=<!--None--> }}</ref> Requirements and design are held to be emergent. Big up-front specifications would probably cause a lot of waste in such cases, i.e., are not economically sound. These basic arguments and previous industry experiences, learned from years of successes and failures, have helped shape agile development's favor of adaptive, iterative and evolutionary development.<ref name=Larman2004>{{Cite book | last=Larman | first=Craig | year=2004 | title=Agile and Iterative Development: A Manager's Guide | publisher=Addison-Wesley | isbn=978-0-13-111155-4 | page=27 | postscript=<!--None--> }}</ref> === Adaptive vs. predictive === Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref> ''Adaptive'' methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team has difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method is about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost. ''Predictive'' methods, in contrast, focus on analysing and planning the future in detail and cater for known risks. In the extremes, a predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive methods rely on effective early phase analysis and if this goes very wrong, the project may have difficulty changing direction. Predictive teams often institute a [[change control board]] to ensure they consider only the most valuable changes. [[Risk analysis (engineering)|Risk analysis]] can be used to choose between adaptive (''agile'' or ''value-driven'') and predictive (''plan-driven'') methods.<ref name="PMBridgeToAgility">{{Cite book |last1=Sliger |first1=Michele |last2=Broderick |first2=Stacia |title=The Software Project Manager's Bridge to Agility |publisher=Addison-Wesley |year=2008 |isbn=978-0-321-50275-9 |page=46 }}</ref> [[Barry Boehm]] and [[Richard Turner (computer scientist)|Richard Turner]] suggest that each side of the continuum has its own ''home ground'', as follows:<ref name="boehm2004"/> {| class="wikitable" |+ Home grounds of different development methods |- ! style="width: 33%" | Value-driven methods ! style="width: 33%" | Plan-driven methods ! Formal methods |- | Low criticality | High criticality | Extreme criticality |- | Senior developers | Junior developers(?) | Senior developers |- | Requirements change often | Requirements do not change often | Limited requirements, limited features see [[Wirth's law]]{{Clarify|date=December 2015}} |- | Small number of developers | Large number of developers | Requirements that can be modeled |- | Culture that responds to change | Culture that demands order | Extreme quality |} === Agile vs. waterfall === One of the differences between agile software development methods and waterfall is the approach to quality and testing. In the [[waterfall model]], there is always a separate ''testing phase'' after a ''build phase''; however, in agile software development testing is completed in the same iteration as programming. Another difference is that traditional "waterfall" software development moves a project through various Software Development Lifecycle (SDLC) phases. One phase is completed in its entirety before moving on to the next phase. Because testing is done in every iteration—which develops a small piece of the software—users can frequently use those new pieces of software and validate the value. After the users know the real value of the updated piece of software, they can make better decisions about the software's future. Having a value retrospective and software re-planning session in each iteration—[[Scrum (software development)|Scrum]] typically has iterations of just two weeks—helps the team continuously adapt its plans so as to maximize the value it delivers. This follows a pattern similar to the [[PDCA]] cycle, as the work is ''planned'', ''done'', ''checked'' (in the review and retrospective), and any changes agreed are ''acted'' upon. This iterative approach supports a ''product'' rather than a ''project'' mindset. This provides greater flexibility throughout the development process; whereas on projects the requirements are defined and locked down from the very beginning, making it difficult to change them later. Iterative product development allows the software to evolve in response to changes in business environment or market requirements.<ref>{{cite web|url=https://www.altexsoft.com/blog/business/at-the-kickoff-project-development-vs-product-development/|title=At the Kickoff: Project Development vs Product Development|date=12 February 2016|website=AltexSoft Inc.|access-date=31 May 2016}}</ref> Because of the short iteration style of agile software development, it also has strong connections with the [[lean startup]] concept. === Code vs. documentation === In a letter to ''[[Computer (magazine)|IEEE Computer]]'', Steven Rakitin expressed cynicism about agile software development, calling it "yet another attempt to undermine the discipline of software engineering" and translating "working software over comprehensive documentation" as "we want to spend all our time coding. Remember, real programmers don't write documentation."<ref name="rakitin2001">{{Cite journal| last=Rakitin| first=Steven R.| title= Manifesto Elicits Cynicism: Reader's letter to the editor by Steven R. Rakitin|journal=IEEE Computer| volume=34| year=2001| page=4|quote=The article titled 'Agile Software Development: The Business of Innovation' ... is yet another attempt to undermine the discipline of software engineering ... We want to spend all our time coding. Remember, real programmers don't write documentation.}}</ref> This is disputed by proponents of agile software development, who state that developers should write documentation if that is the best way to achieve the relevant goals, but that there are often better ways to achieve those goals than writing static documentation.<ref name="agiledoc">{{cite web|url=http://www.agilemodeling.com/essays/agileDocumentation.htm|author=Scott Ambler|title=Agile/Lean Documentation: Strategies for Agile Software Development}}</ref> [[Scott Ambler]] states that documentation should be "just barely good enough" (JBGE),<ref>{{cite web|author=Scott Ambler|url=http://www.agilemodeling.com/essays/barelyGoodEnough.html|title=Just Barely Good Enough Models and Documents: An Agile Best Practice}}</ref> that too much or comprehensive documentation would usually cause waste, and developers rarely trust detailed documentation because it's usually out of sync with code,<ref name="agiledoc"/> while too little documentation may also cause problems for maintenance, communication, learning and knowledge sharing. [[Alistair Cockburn]] wrote of the ''Crystal Clear'' method: {{Quote|text=Crystal considers development a series of co-operative games, and intends that the documentation is enough to help the next win at the next game. The work products for Crystal include use cases, risk list, iteration plan, core domain models, and design notes to inform on choices...however there are no templates for these documents and descriptions are necessarily vague, but the objective is clear, '''just enough documentation''' for the next game. I always tend to characterize this to my team as: what would you want to know if you joined the team tomorrow.|sign=Alistair Cockburn.<ref>{{cite web|author=Geoffrey Wiseman|date=July 18, 2007|title=Do Agile Methods Require Documentation?|url=http://www.infoq.com/news/2007/07/agile-methods-documentation|publisher=InfoQ}} quoting {{cite web |last=Cooper |first=Ian |date=6 July 2007 |url=https://ianhammondcooper.wordpress.com/2007/07/06/agile-and-documentation/ |title=Staccato Signals:Agile and Documentation|work=WordPress.com}}</ref>}} ==Agile software development methods== [[File:SoftwareDevelopmentLifeCycle.jpg|thumb|right|Software development life-cycle support<ref name="Abrahamsson2002">{{cite techreport|first=Pekka|last=Abrahamson|first2=Outi|last2=Salo|first3=Jussi|last3=Ronkainen|first4=Juhani|last4=Warsta|name-list-format=vanc|title=Agile software development methods: Review and analysis|number=478|institution=[[VTT]]|year=2002|url=http://www.vtt.fi/inf/pdf/publications/2002/P478.pdf}}</ref>]] Agile software development methods support a broad range of the [[software development life cycle]].<ref name="Abrahamsson2002" /> Some focus on the practices (e.g., XP, pragmatic programming, agile modeling), while some focus on managing the flow of work (e.g., Scrum, Kanban). Some support activities for requirements specification and development (e.g., FDD), while some seek to cover the full development life cycle (e.g., DSDM, [[Rational Unified Process|RUP]]). Notable agile software development frameworks include: {| class="wikitable" ! Framework ! Main contributor(s) |- | [[Adaptive software development]] (ASD) || [[Jim Highsmith]], Sam Bayer |- | [[Agile modeling]] || [[Scott Ambler]], [[Robert Cecil Martin]] |- | [[Agile Unified Process|Agile unified process]] (AUP) || [[Scott Ambler]] |- | [[Disciplined agile delivery]] || [[Scott Ambler]] |- | [[Dynamic systems development method]] (DSDM) || |- | [[Extreme programming]] (XP) || [[Kent Beck]], [[Robert Cecil Martin]] |- | [[Feature-driven development]] (FDD) || [[Jeff De Luca]] |- | [[Lean software development]] || Mary Poppendieck, Tom Poppendieck |- | [[Kanban (development)|Kanban]] || [[Taiichi Ohno]] |- | [[Rapid application development]] (RAD) || [[James Martin (author)|James Martin]] |- | [[Scrum (software development)|Scrum]] || [[Ken Schwaber]], [[ Jeff Sutherland]] |- | [[Scrumban]] || |} === Agile software development practices === Agile software development is supported by a number of concrete practices, covering areas like requirements, design, modeling, coding, testing, planning, risk management, process, quality, etc. Some notable agile software development practices include:<ref name="Agile Practices Guide">{{cite web|url=http://guide.agilealliance.org/ |title=Guide to Agile Practices |publisher=the Agile Alliance |deadurl=yes |archiveurl=https://web.archive.org/web/20140209152034/http://guide.agilealliance.org/ |archivedate=9 February 2014 |df=dmy }}</ref> {| class="wikitable" ! Practice ! Main contributor(s) |- |[[Acceptance test-driven development]] (ATDD) || [[Kent Beck]] |- | [[Agile modeling]] || |- | [[Agile testing]] || |- |[[Scrum (development)#Product backlog|Backlogs]] (Product and Sprint)|| [[Ken Schwaber]] |- |[[Behavior-driven development]] (BDD) || [[Dan North]], Liz Keogh |- |[[Continuous integration]] (CI) || [[Grady Booch ]] |- |[[Cross-functional team]] || |- |[[Domain-driven design]] (DDD) || [[Eric Evans]] |- | [[Iterative and incremental development]] (IID) || |- |[[Low-code development platforms]] || |- |[[Pair programming]] || [[Kent Beck]] |- |[[Planning poker]] || James Grenning, [[Mike Cohn]] |- |[[Refactoring]] || |- |[[Retrospective]] || |- |[[Scrum (development)|Scrum events]] (sprint planning, daily scrum, sprint review and retrospective) || |- | [[Specification by example]] || |- |[[Story-driven modeling]] || Albert Zündorf |- | [[Test-driven development]] (TDD) || [[Kent Beck]] |- |[[Timeboxing]] || |- | [[User story]] || [[Alistair Cockburn]] |- | [[Velocity (software development)|Velocity tracking]] || |} ===Method tailoring=== In the literature, different terms refer to the notion of method adaptation, including 'method tailoring', 'method fragment adaptation' and 'situational method engineering'. Method tailoring is defined as: {{Quote |text=A process or capability in which human agents determine a system development approach for a specific project situation through responsive changes in, and dynamic interplays between contexts, intentions, and method fragments. |author=Mehmet Nafiz Aydin et al. |source=An Agile Information Systems Development Method in use<ref name="Aydin2004">{{cite journal | last1 = Aydin | first1 = M.N. | last2 = Harmsen | first2 = F. | last3 = Slooten | last4 = Stagwee | first4 = R. A. | year = 2004 | title = An Agile Information Systems Development Method in use | url = | journal = Turk J Elec Engin | volume = 12 | issue = 2| pages = 127–138 }}</ref>}} Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management Special Issue on Agile Analysis, Design, and Implementation|volume=16|issue=4|pages=20–24}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref> In practice, methods can be tailored using various tools. Generic process modeling languages such as [[Unified Modeling Language]] can be used to tailor software development methods. However, dedicated tools for method engineering such as the Essence Theory of Software Engineering of [[SEMAT]] also exist.<ref>Park, J. S., McMahon, P. E., and Myburgh, B. (2016). Scrum Powered by Essence. ACM SIGSOFT Software Engineering Notes, 41(1), pp. 1-8.</ref> === Large-scale, offshore and distributed === Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref> In response, a range of strategies and patterns has evolved for overcoming challenges with large-scale development efforts (>20 developers)<ref name="ambler2006"/><ref name="sstc2007">Schaaf, R.J. (2007). Agility XL [http://www.sstc-online.org/Proceedings/2007/pdfs/RJS1722.pdf Systems and Software Technology Conference 2007] {{webarchive|url=https://web.archive.org/web/20160313105019/http://sstc-online.org/proceedings/2007/pdfs/rjs1722.pdf |date=13 March 2016 }}, Tampa, FL</ref> or distributed (non-colocated) development teams,<ref name="BridgingTheDistance">{{cite web|url=http://www.drdobbs.com/architecture-and-design/184414899 |title=Bridging the Distance |publisher=Sdmagazine.com |date= |accessdate=1 February 2011}}</ref><ref name="AgileOffshore">{{cite web|first=Martin |last=Fowler |url=http://www.martinfowler.com/articles/agileOffshore.html |title=Using an Agile Software Process with Offshore Development |publisher=Martinfowler.com |date= |accessdate=6 June 2010}}</ref> amongst other challenges; and there are now several recognised frameworks that seek to mitigate or avoid these challenges. * [[Scaled Agile Framework|Scaled agile framework]] (SAFe),<ref>{{cite web|url=http://www.scaledagileframework.com/|title=Scaled Agile Framework|last=Leffingwell|first=Dean|website=Scaled Agile Framework}}</ref> Dean Leffingwell ''inter alia'' * [[Disciplined agile delivery]] (DAD), [[Scott Ambler]] ''inter alia'' * [[Large-Scale Scrum|Large-scale scrum]] (LeSS), [[Craig Larman]] and Bas Vodde * Nexus (scaled professional Scrum),<ref>{{cite web|last1=Schwaber|first1=Ken|url=https://www.scrum.org/Portals/0/NexusGuide%20v1.1.pdf|website=scrum.org|accessdate=14 September 2015|title=Nexus Guide: The Definitive Guide to Nexus: The exoskeleton of scaled Scrum development}}</ref> [[Ken Schwaber]] * Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015}}</ref> [[Jeff Sutherland]], Alex Brown * Enterprise Scrum,<ref>{{cite web|last1=Beedle|first1=Mike|title=Enterprise Scrum|url=http://www.enterprisescrum.com/|accessdate=25 September 2015}}</ref> [[Mike Beedle]] * Setchu (Scrum-based lightweight framework),<ref>{{cite web|last1=Ebbage|first1=Michael|title=Setchu – Agile at Scale|url=http://agile-setchu.org/|accessdate=30 September 2015}}</ref> Michael Ebbage * Xscale<ref>{{cite web|url=http://agiletng.org/2014/04/21/xscale/ |title=XSCALE Alliance |publisher=Agiletng.org |date= |accessdate=2019-03-26}}</ref> * Agile path<ref>{{cite web|url=http://www.agile-path.com/ |title=Agilepath – Collaborate.Innovate.Succeed |publisher=Agile-path.com |date=2019-01-18 |accessdate=2019-03-26}}</ref> * Holistic Software Development <ref>http://www.holistic-software.com</ref> There are many conflicting viewpoints on whether all of these are effective or indeed fit the definition of agile development, and this remains an active and ongoing area of research.<ref name="ambler2006">W. Scott Ambler (2006) [http://www.drdobbs.com/184415491 Supersize Me] in Dr. Dobb's Journal, 15 February 2006.</ref><ref name="oopsla2002">Agile Processes Workshop II Managing Multiple Concurrent Agile Projects. Washington: OOPSLA 2002</ref> When agile software development is applied in a distributed setting (with teams dispersed across multiple business locations), it is commonly referred to as distributed agile development. The goal is to leverage the unique benefits offered by each approach. Distributed development allow organizations to build software by strategically setting up teams in different parts of the globe, virtually building software round-the-clock (more commonly referred to as follow-the-sun model). On the other hand, agile development provides increased transparency, continuous feedback and more flexibility when responding to changes. === Regulated domains === Agile software development methods were initially seen as best suitable for non-critical product developments, thereby excluded from use in regulated domains such as medical devices, pharmaceutical, financial, nuclear systems, automotive, and avionics sectors, etc. However, in the last several years, there have been several initiatives for the adaptation of agile methods for these domains.<ref name="Cawley2010">{{Cite book|title = Lean/Agile Software Development Methodologies in Regulated Environments – State of the Art|journal = Lean Enterprise Software and Systems|date = 2010|isbn = 978-3-642-16415-6|pages = 31–36|series = Lecture Notes in Business Information Processing|volume = 65|first = Oisín|last = Cawley|first2 = Xiaofeng|last2 = Wang|first3 = Ita|last3 = Richardson|editor-first = Pekka|editor-last = Abrahamsson|editor2-first = Nilay|editor2-last = Oza|doi=10.1007/978-3-642-16416-3_4|hdl = 10344/683}}</ref><ref name="McHugh2014">{{Cite book|title = An Agile Implementation within a Medical Device Software Organisation|journal = Software Process Improvement and Capability Determination|date = 2014-11-04|isbn = 978-3-319-13035-4|pages = 190–201|series = Communications in Computer and Information Science|volume = 477|first = Martin|last = McHugh|first2 = Fergal|last2 = McCaffery|first3 = Garret|last3 = Coady|editor-first = Antanas|editor-last = Mitasiunas|editor2-first = Terry|editor2-last = Rout|editor3-first = Rory V.|editor3-last = O'Connor|editor4-first = Alec|editor4-last = Dorling| display-editors = 3|doi=10.1007/978-3-319-13036-1_17}}</ref><ref>{{Cite book|last=Wang|first=Yang|last2=Ramadani|first2=Jasmin|last3=Wagner|first3=Stefan|date=2017-11-29|title=An Exploratory Study on Applying a Scrum Development Process for Safety-Critical Systems|journal=Product-Focused Software Process Improvement|series=Lecture Notes in Computer Science|language=en|volume=10611|pages=324–340|arxiv=1703.05375|doi=10.1007/978-3-319-69926-4_23|isbn=9783319699257}}</ref><ref name="SafeScrum">{{cite web|url=http://www.sintef.no/safescrum |title=SafeScrum - SINTEF |publisher=Sintef.no |date= |accessdate=2019-03-26}}</ref><ref>Thor Myklebust, Tor Stålhane, Geir Kjetil Hanssen, Tormod Wien and Børge Haugset: Scrum, documentation and the IEC 61508-3:2010 software standard, http://www.sintef.no/globalassets/ec-61508-documentation-and-safescrum-psam12.pdf</ref> There are numerous standards that may apply in regulated domains, including [[ISO 26262]], [[ISO 9000]], [[ISO 9001]], and [[ISO/IEC 15504]]. A number of key concerns are of particular importance in regulated domains:<ref name="Fitzgerald2013">{{Cite book|title = Scaling agile methods to regulated environments: An industry case study|journal = 2013 35th International Conference on Software Engineering (ICSE)|date = May 2013|pages = 863–872|doi = 10.1109/ICSE.2013.6606635|first = B.|last = Fitzgerald|first2 = K.-J.|last2 = Stol|first3 = R.|last3 = O'Sullivan|first4 = D.|last4 = O'Brien|isbn = 978-1-4673-3076-3|hdl = 10344/3055}}</ref> * [[Quality assurance]] (QA): Systematic and inherent quality management underpinning a controlled professional process and reliability and correctness of product. * Safety and security: Formal planning and risk management to mitigate safety risks for users and securely protecting users from unintentional and malicious misuse. *[[Traceability]]: Documentation providing auditable evidence of regulatory compliance and facilitating traceability and investigation of problems. * [[Verification and Validation]] (V&V): Embedded throughout the software development process (e.g. user requirements specification, functional specification, design specification, code review, unit tests, integration tests, system tests). ==Experience and adoption== Although agile software development methods can be used with any programming paradigm or language in practice, they were originally closely associated with object-oriented environments such as Smalltalk and Lisp and later Java. The initial adopters of agile methods were usually small to medium-sized teams working on unprecedented systems with requirements that were difficult to finalize and likely to change as the system was being developed. This section describes common problems that organizations encounter when they try to adopt agile software development methods as well as various techniques to measure the quality and performance of agile teams.<ref>{{cite book|last1=Beck|first1=Kent|title=Extreme Programming Explained|date=2000|publisher=Addison-Wesley|isbn=978-0201616415|pages=1–24}}</ref> ===Measuring agility=== The best agile practitioners have always emphasized thorough engineering principles. As a result, there are a number of best practices and tools for measuring the performance of agile software development and teams. ==== Internal assessments ==== The ''Agility measurement index'', amongst others, rates developments against five dimensions of product development (duration, risk, novelty, effort, and interaction).<ref>{{cite conference |date=|doi=10.1145/1185448.1185509|book-title=ACM-SE 44 Proceedings of the 44th annual Southeast regional conference |page=271 |year=2006 |last=Datta |first=Subhajit |isbn=1595933158 |title=Agility measurement index: a metric for the crossroads of software development methodologies}}</ref><ref>{{cite web|url=http://jroller.com/page/bokmann?entry=improving_your_processes_aim_high|title=David Bock's Weblog : Weblog|publisher=Jroller.com|accessdate=2 April 2010|archive-url=https://web.archive.org/web/20060111041831/http://jroller.com/page/bokmann?entry=improving_your_processes_aim_high|archive-date=11 January 2006|dead-url=yes|df=dmy-all}}</ref> Other techniques are based on measurable goals<ref>{{cite web|url=http://www.smr.co.uk/presentations/measure.pdf|title=Assessing Agility|author=Peter Lappo|author2=Henry C.T. Andrew|date=|accessdate=6 June 2010}}</ref> and one study suggests that [[Velocity (software development)|velocity]] can be used as a metric of agility.<ref name="Kurian 2006">Kurian, Tisni (2006). Agility Metrics: A Quantitative Fuzzy Based Approach for Measuring Agility of a Software Process, ''ISAM-Proceedings of International Conference on Agile Manufacturing'06(ICAM-2006)'', Norfolk, U.S.</ref> There are also agile self-assessments to determine whether a team is using agile software development practices (Nokia test,<ref>{{cite web|url=http://agileconsortium.blogspot.com/2007/12/nokia-test.html|title=Nokia test, A scrum-specific test|author=Joe Little|date=2 December 2007|publisher=Agileconsortium.blogspot.com|accessdate=6 June 2010}}</ref> Karlskrona test,<ref>{{cite web|url=http://mayberg.se/learning/karlskrona-test|title=Karlskrona test, A generic agile adoption test|author=Mark Seuffert|author2=Mayberg, Sweden|date=|publisher=Mayberg.se|accessdate=5 Apr 2014}}</ref> 42 points test).<ref>{{cite web|url=http://www.allaboutagile.com/how-agile-are-you-take-this-42-point-test/|title=How Agile Are You? (Take This 42 Point Test)|date=|publisher=allaboutagile.com/|accessdate=3 April 2014|archive-url=https://web.archive.org/web/20140505223335/http://www.allaboutagile.com/how-agile-are-you-take-this-42-point-test/|archive-date=5 May 2014|dead-url=yes|df=dmy-all}}</ref> ====Public surveys==== One of the early studies reporting gains in quality, productivity, and business satisfaction by using agile software developments methods was a survey conducted by Shine Technologies from November 2002 to January 2003.<ref>{{cite web|url=http://www.shinetech.com/attachments/104_ShineTechAgileSurvey2003-01-17.pdf|title=Agile Methodologies Survey Results|date=January 2003|publisher=Shine Technologies|archiveurl=https://web.archive.org/web/20100821225423/http://www.shinetech.com/attachments/104_ShineTechAgileSurvey2003-01-17.pdf|archivedate=21 August 2010|deadurl=yes|accessdate=3 June 2010|quote=95% stated that there was either no effect or a cost reduction&nbsp;... 93% stated that productivity was better or significantly better&nbsp;... 88% stated that quality was better or significantly better&nbsp;... 83% stated that business satisfaction was better or significantly better|df=}}</ref> A similar survey, the ''State of Agile'', is conducted every year starting in 2006 with thousands of participants from around the software development community. This tracks trends on the benefits of agility, lessons learned, and good practices. Each survey has reported increasing numbers saying that agile software development helps them deliver software faster; improves their ability to manage changing customer priorities; and increases their productivity.<ref>{{cite web|url=http://stateofagile.versionone.com/why-agile/|title=2013 State of Agile report: Why Agile?|date=27 January 2014|publisher=stateofagile.com|archiveurl=https://web.archive.org/web/20140828012224/http://stateofagile.versionone.com/why-agile/|archivedate=28 August 2014|deadurl=yes|accessdate=13 August 2014|df=}}</ref> Surveys have also consistently shown better results with agile product development methods compared to classical project management.<ref>[http://www.status-quo-agile.net Status Quo Agile], Second study on success and forms of usage of agile methods. Retrieved 1 July 2015</ref><ref>{{cite web|url=http://www.drdobbs.com/architecture-and-design/191800169;jsessionid=2QJ23QRYM3H4PQE1GHPCKH4ATMY32JVN?queryText=agile+survey|title=Survey Says: Agile Works in Practice|last=Ambler|first=Scott|authorlink=Scott Ambler|date=3 August 2006|work=Dr. Dobb's|accessdate=3 June 2010|quote=Only 6% indicated that their productivity was lowered&nbsp;... No change in productivity was reported by 34% of respondents and 60% reported increased productivity&nbsp;... 66% [responded] that the quality is higher&nbsp;... 58% of organizations report improved satisfaction, whereas only 3% report reduced satisfaction.}}</ref> In balance, there are reports that some feel that agile development methods are still too young to enable extensive academic research of their success.<ref>{{cite web|url=http://www.agilemodeling.com/essays/proof.htm|title=Answering the "Where is the Proof That Agile Methods Work" Question|date=19 January 2007|publisher=Agilemodeling.com|accessdate=2 April 2010}}</ref> ===Common agile software development pitfalls=== Organizations and teams implementing agile software development often face difficulties transitioning from more traditional methods such as [[waterfall development]], such as teams having an agile process forced on them.<ref name="The Art of Agile Development">{{harvnb|Shore|Warden|2008|p=47}}</ref> These are often termed ''agile anti-patterns'' or more commonly ''agile smells''. Below are some common examples: ====Lack of overall product design==== A goal of agile software development is to focus more on producing working software and less on documentation. This is in contrast to waterfall models where the process is often highly controlled and minor changes to the system require significant revision of supporting documentation. However, this does not justify completely doing without any analysis or design at all. Failure to pay attention to design can cause a team to proceed rapidly at first but then to have significant rework required as they attempt to scale up the system. One of the key features of agile software development is that it is iterative. When done correctly design emerges as the system is developed and commonalities and opportunities for re-use are discovered.<ref>{{cite book|last1=Beck|first1=Kent|title=Extreme Programming Explained|date=2000|publisher=Addison-Wesley|isbn=978-0201616415|pages=48–49}}</ref> ====Adding stories to an iteration in progress==== In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08}}</ref> This does not mean that a story cannot expand. Teams must deal with new information, which may produce additional tasks for a story. If the new information prevents the story from being completed during the iteration, then it should be carried over to a subsequent iteration. However, it should be prioritized against all remaining stories, as the new information may have changed the story's original priority. ====Lack of sponsor support==== Agile software development is often implemented as a grassroots effort in organizations by software development teams trying to optimize their development processes and ensure consistency in the software development life cycle. By not having sponsor support, teams may face difficulties and resistance from business partners, other development teams and management. Additionally, they may suffer without appropriate funding and resources.<ref>{{cite web|url=http://agile-only.com/master-thesis/project-mgmt/pr-and-rd|title=Project Roles and Responsibility Distribution|website=agile-only.com|accessdate=2014-06-15}}</ref> This increases the likelihood of failure.<ref>{{cite web|last1=Bourne|first1=Lynda|title=What Does a Project Sponsor Really Do?|url=http://blogs.pmi.org/blog/voices_on_project_management/2012/04/what-does-a-project-sponsor-re.html|website=blogs.pmi.org|accessdate=2014-06-08}}</ref> ====Insufficient training==== A survey performed by VersionOne found respondents cited insufficient training as the most significant cause for failed agile implementations<ref>{{cite web|url=http://www.versionone.com/state_of_agile_development_survey/09/page5.asp|title=9th State of Agile Report|website=Stage of Agile Survey|publisher=VersionOne|accessdate=2014-06-08|archive-url=https://web.archive.org/web/20150112225122/http://www.versionone.com/state_of_agile_development_survey/09/page5.asp|archive-date=12 January 2015|dead-url=yes|df=dmy-all}}</ref> Teams have fallen into the trap of assuming the reduced processes of agile software development compared to other methodologies such as waterfall means that there are no actual rules for agile software development. {{Citation needed|date=May 2018}} ====Product owner role is not properly filled==== The [[product owner]] is responsible for representing the business in the development activity and is often the most demanding role.<ref>{{cite book|author1=Sims, Chris |author2=Johnson, Hillary Louise |title=The Elements of Scrum|date=2011-02-15|publisher=Dymaxicon|page=73|edition=Kindle}}</ref> A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08}}</ref> ====Teams are not focused==== Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14}}</ref> ====Excessive preparation/planning==== Teams may fall into the trap of spending too much time preparing or planning. This is a common trap for teams less familiar with agile software development where the teams feel obliged to have a complete understanding and specification of all stories. Teams should be prepared to move forward only with those stories in which they have confidence, then during the iteration continue to discover and prepare work for subsequent iterations (often referred to as [[refinement (computing)|backlog refinement]] or grooming). ====Problem-solving in the daily standup==== A daily standup should be a focused, timely meeting where all team members disseminate information. If problem-solving occurs, it often can only involve certain team members and potentially is not the best use of the entire team's time. If during the daily standup the team starts diving into problem-solving, it should be set aside until a sub-team can discuss, usually immediately after the standup completes. <ref>{{cite web|title=Daily Scrum Meeting|url=http://www.mountaingoatsoftware.com/agile/scrum/daily-scrum|website=www.mountaingoatsoftware.com|accessdate=2014-06-14}}</ref> ====Assigning tasks==== One of the intended benefits of agile software development is to empower the team to make choices, as they are closest to the problem. Additionally, they should make choices as close to implementation as possible, to use more timely information in the decision. If team members are assigned tasks by others or too early in the process, the benefits of localized and timely decision making can be lost.<ref name="Effective Sprint Planning">{{cite web|last1=May |first1=Robert |title=Effective Sprint Planning |url=http://www.agileexecutives.org/Blogs/tabid/66/EntryId/18/Effective-Sprint-Planning.aspx |website=www.agileexecutives.org |accessdate=2014-06-14 |deadurl=yes |archiveurl=https://web.archive.org/web/20140628102810/http://www.agileexecutives.org/Blogs/tabid/66/EntryId/18/Effective-Sprint-Planning.aspx |archivedate=28 June 2014 |df= }}</ref> Being assigned work also constrains team members into certain roles (for example, team member A must always do the database work), which limits opportunities for cross-training.<ref name="Effective Sprint Planning"/> Team members themselves can choose to take on tasks that stretch their abilities and provide cross-training opportunities. ====Scrum master as a contributor==== Another common pitfall is for a scrum master to act as a contributor. While not prohibited by the Scrum methodology, the scrum master needs to ensure they have the capacity to act in the role of scrum master first and not working on development tasks. A scrum master's role is to facilitate the process rather than create the product.<ref name="agileconnection.com">{{cite web|last1=Berczuk|first1=Steve|title=Mission Possible: ScrumMaster and Technical Contributor|url=http://www.agileconnection.com/article/mission-possible-scrummaster-and-technical-contributor?page=0%2C1|website=www.agileconnection.com|accessdate=2014-06-14}}</ref> Having the scrum master also multitasking may result in too many context switches to be productive. Additionally, as a scrum master is responsible for ensuring roadblocks are removed so that the team can make forward progress, the benefit gained by individual tasks moving forward may not outweigh roadblocks that are deferred due to lack of capacity.<ref name="agileconnection.com"/> ====Lack of test automation==== Due to the iterative nature of agile development, multiple rounds of testing are often needed. Automated testing helps reduce the impact of repeated unit, integration, and regression tests and frees developers and testers to focus on higher value work.<ref>{{cite web|last1=Namta|first1=Rajneesh|title=Thoughts on Test Automation in Agile|url=http://www.infoq.com/articles/thoughts-on-test-automation-in-agile|website=www.infoq.com|accessdate=2014-06-14}}</ref> Test automation also supports continued [[refactoring]] required by iterative software development. Allowing a developer to quickly run tests to confirm refactoring has not modified the functionality of the application may reduce the workload and increase confidence that cleanup efforts have not introduced new defects. ====Allowing technical debt to build up==== Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014}}</ref> As the system evolves it is important to [[Code refactoring|refactor]] as entropy of the system naturally increases.<ref>{{cite web|last1=Shore|first1=James|title=The Art of Agile Development: Refactoring|url=http://www.jamesshore.com/Agile-Book/refactoring.html|website=www.jamesshore.com|accessdate=2014-06-14}}</ref> Over time the lack of constant maintenance causes increasing defects and development costs.<ref name="Technical Debt + Red October"/> ====Attempting to take on too much in an iteration==== A common misconception is that agile software development allows continuous change, however an iteration backlog is an agreement of what work can be completed during an iteration.<ref>{{cite web|title=Step 4: Sprint Planning (Tasks)|url=http://www.allaboutagile.com/how-to-implement-scrum-in-10-easy-steps-step-4-sprint-planning-tasks/|website=www.allaboutagile.com|accessdate=2014-06-14|archive-url=https://web.archive.org/web/20140629145319/http://www.allaboutagile.com/how-to-implement-scrum-in-10-easy-steps-step-4-sprint-planning-tasks/|archive-date=29 June 2014|dead-url=yes|df=dmy-all}}</ref> Having too much [[Work in process|work-in-progress (WIP)]] results in inefficiencies such as context-switching and queueing.<ref>{{cite web|url=http://leankit.com/blog/2014/03/limiting-work-in-progress/|title=Why Limiting Your Work-in-Progress Matters|website=leankit.com|last1=George|first1=Claire|accessdate=2014-06-14}}</ref> The team must avoid feeling pressured into taking on additional work.<ref>{{cite web|url=http://www.mountaingoatsoftware.com/agile/scrum/sprint-planning-meeting/|website=www.mountaingoatsoftware.com|accessdate=2014-06-14|title=Sprint Planning Meeting}}</ref> ====Fixed time, resources, scope, and quality==== Agile software development fixes time (iteration duration), quality, and ideally resources in advance (though maintaining fixed resources may be difficult if developers are often pulled away from tasks to handle production incidents), while the scope remains variable. The customer or product owner often push for a fixed scope for an iteration. However, teams should be reluctant to commit to the locked time, resources and scope (commonly known as the [[project management triangle]]). Efforts to add scope to the fixed time and resources of agile software development may result in decreased quality.<ref name="adeptechllc.com">{{cite web|last1=McMillan |first1=Keith |title=Time, Resources, Scope... and Quality. |url=http://www.adeptechllc.com/2010/05/13/time-resources-scope-and-quality/ |website=www.adeptechllc.com |accessdate=2014-06-15 }}</ref> ====Developer burnout==== Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite web|url=https://ac.els-cdn.com/S1877050916000582/1-s2.0-S1877050916000582-main.pdf?_tid=c457f048-fb52-11e7-898a-00000aacb35e&acdnat=1516172036_b8b055d4f50de7743058b83879f35f74//|title=Current study on limitations of Agile|last=|first=|date=|website=|access-date=}}</ref> == Agile management == The term ''agile management'' is applied to an iterative, incremental method of managing the design and build activities of engineering, information technology and other business areas that aim to provide new product or service development in a highly flexible and interactive manner, based on the principles expressed in the ''Manifesto for Agile Software Development''.<ref>{{Cite book|title=Managing Agile: Strategy, Implementation, Organisation and People |last=Moran |first=Alan|publisher=Springer |date=2015|isbn=978-3-319-16262-1}}</ref> Agile X techniques may also be called [[extreme project management]]. It is a variant of [[iterative and incremental development|iterative life cycle]]<ref>ExecutiveBrief, [http://www.pmhut.com/which-life-cycle-is-best-for-your-project Which Life Cycle Is Best For Your Project?], PM Hut. Accessed 23 October 2009.</ref> where [[deliverable]]s are submitted in stages. The main difference between agile and iterative development is that agile methods complete small portions of the deliverables in each delivery cycle (iteration),<ref>{{cite web | url=http://www.versionone.com/agile-project-management/ | title=Agile Project Management | publisher=VersionOne | accessdate=1 June 2015}}</ref> while iterative methods evolve the entire set of deliverables over time, completing them near the end of the project. Both iterative and agile methods were developed as a reaction to various obstacles that developed in more sequential forms of project organization. For example, as technology projects grow in complexity, end users tend to have difficulty defining the long-term requirements without being able to view progressive prototypes. Projects that develop in iterations can constantly gather feedback to help refine those requirements. Agile management also offers a simple framework promoting communication and reflection on past [[Work (project management)|work]] amongst [[Project team|team]] members.<ref>{{cite web | url=http://www.project-laneways.com.au/certification-courses/agilepm/what-is-agile-management | title=What is Agile Management? | publisher=Project Laneways | accessdate=1 June 2015}}</ref> Teams who were using traditional waterfall planning and adopted the agile way of development typically go through a transformation phase and often take help from agile coaches who help guide the teams through a smooth transformation. There are typically two styles of agile coaching: push-based and [[pull-based agile coaching]]. Agile management approaches have also been employed and adapted to the business and government sectors. For example, within the [[federal government of the United States]], the [[United States Agency for International Development]] (USAID) is employing a [[collaborative project management]] approach that focuses on incorporating [[collaborating, learning and adapting]] (CLA) strategies to iterate and adapt programming.<ref>USAID. [https://www.usaid.gov/sites/default/files/documents/1870/201.pdf "ADS Chapter 201 Program Cycle Operational Policy"]. Retrieved 19 April 2017</ref> Agile methods are mentioned in the ''Guide to the Project Management Body of Knowledge'' (''PMBOK Guide'') under the Project Lifecycle definition: {{blockquote|'''Adaptive project life cycle''', a project life cycle, also known as change-driven or agile methods, that is intended to facilitate change and require a high degree of ongoing [[Project stakeholders|stakeholder]] involvement. Adaptive life cycles are also iterative and incremental, but differ in that iterations are very rapid (usually 2-4 weeks in length) and are fixed in time and [[Resource (project management)|resources]].<ref>[[Project Management Institute]], ''[[A Guide to the Project Management Body of Knowledge]]'' (PMBOK Guide), Fifth Edition</ref>}} === Applications outside software development === [[File:Agile Brazil 2014 conference entrance.jpg|Agile Brazil 2014 conference|thumb|right]] According to Jean-Loup Richet (Research Fellow at [[ESSEC]] Institute for Strategic Innovation & Services) "this approach can be leveraged effectively for non-software products and for project management in general, especially in areas of innovation and uncertainty." The end result is a product or project that best meets current customer needs and is delivered with minimal costs, waste, and time, enabling companies to achieve bottom line gains earlier than via traditional approaches.<ref>Richet, Jean-Loup (2013). ''Agile Innovation''. Cases and Applied Research, n°31. ESSEC-ISIS. {{ISBN|978-2-36456-091-8}}</ref> Agile software development methods have been extensively used for development of software products and some of them use certain characteristics of software, such as object technologies.<ref name=Smith2007>{{Cite book | last=Smith| first=Preston G| year=2007 | title=Flexible Product Development | publisher=Jossey-Bass | isbn=978-0-7879-9584-3 | page=25 | postscript=<!--None--> }}</ref> However, these techniques can be applied to the development of non-software products, such as computers, motor vehicles,<ref>{{cite web|url=http://agilebusinessmanagement.org/content/wikispeed-%E2%80%93-applying-agile-software-principles-and-practices-fast-automotive-development|title=WIKISPEED – Applying Agile software principles and practices for fast automotive development|publisher=Agile Business Management Consortium |date=2013-12-03 |accessdate=2015-09-11}}</ref> medical devices, food, clothing, and music.<ref>{{cite book | author=Newton Lee|title="Getting on the Billboard Charts: Music Production as Agile Software Development," ''Digital Da Vinci: Computers in Music''|publisher=Springer Science+Business Media|year=2014|isbn=978-1-4939-0535-5}}</ref> Agile software development methods have been used in non-development [[IT infrastructure]] [[IT infrastructure deployment|deployments and migrations]]. Some of the wider principles of agile software development have also found application in general management<ref>{{cite book | author=Moran, Alan |title=Managing Agile: Strategy, Implementation, Organisation and People |publisher=Springer Verlag|year=2015|isbn=978-3-319-16262-1}}</ref> (e.g., strategy, governance, risk, finance) under the terms [[business agility]] or agile business management. Under an agile business management model, agile software development techniques, practices, principles and values are expressed across five domains.<ref>{{cite book | author=Leybourn, Evan |title=Directing the Agile Organisation: A Lean Approach to Business Management |publisher=IT Governance Publishing|year=2013|isbn=978-1-849-28491-2}}</ref> # Integrated [[customer engagement]]: to embed customers within any delivery process to share accountability for product/service delivery. # Facilitation-based management: adopting agile management models, like the role of [[Scrum Master]], to facilitate the day-to-day operation of teams. # Agile work practices: adopting specific iterative and incremental work practices such as [[Scrum (software development)|Scrum]], [[Kanban (development)|Kanban]], [[test-driven development]] or [[feature-driven development]] across all business functions (from sales, [[human resources]], finance<ref>{{cite web|url=http://theagiledirector.com/article/2015/03/11/pair-trading-collaboration-in-finance/|title=Pair Trading: Collaboration in Finance|publisher=The Agile Director |date=2015-03-11 |accessdate=2015-09-11}}</ref> and [[marketing]]). # An enabling organisational structure: with a focus on staff [[Engagement marketing|engagement]], personal autonomy and outcomes based governance. # Applications of agile process (along with [[DevOps]] and [[lean manufacturing]]), to [[Data analysis|data analytics]], [[business intelligence]], [[big data]], and [[data science]] is called [[Dataops|DataOps]] Agile software development paradigms can be used in other areas of life such as raising children. Its success in child development might be founded on some basic management principles; communication, adaptation, and awareness. In a [[TED (conference)|TED Talk]], Bruce Feiler shared how he applied basic agile paradigms to household management and raising children.<ref>[http://www.ted.com/talks/bruce_feiler_agile_programming_for_your_family.html "Agile programming – for your family"].</ref> == Criticism == Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite web|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|url=http://aisel.aisnet.org/cais/vol29/iss1/2/|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles. The increasing adoption of agile practices has also been criticized as being a [[management fad]] that simply describes existing good practices under new jargon, promotes a ''one size fits all'' mindset towards development strategies, and wrongly emphasizes method over results.<ref>{{cite web|url = http://www.batimes.com/kupe-kupersmith/agile-is-a-fad.html|title = Agile is a Fad|last = Kupersmith|first = Kupe}}</ref> [[Alistair Cockburn]] organized a celebration of the 10th anniversary of the ''Manifesto for Agile Software Development'' in Snowbird, Utah on 12 February 2011, gathering some 30+ people who had been involved at the original meeting and since. A list of about 20 [[elephant in the room|elephants in the room]] ('undiscussable' agile topics/issues) were collected, including aspects: the alliances, failures and limitations of agile software development practices and context (possible causes: commercial interests, decontextualization, no obvious way to make progress based on failure, limited objective evidence, cognitive biases and reasoning fallacies), politics and culture.<ref name="TeenAgile">{{cite web|url=http://www.infoq.com/articles/agile-teenage-crisis|first=Philippe|last=Kruchten|title=Agile's Teenage Crisis? |publisher=InfoQ |date=2011-06-20}}</ref> As [[Philippe Kruchten]] wrote: {{Quote |text=The agile movement is in some ways a bit like a teenager: very self-conscious, checking constantly its appearance in a mirror, accepting few criticisms, only interested in being with its peers, rejecting en bloc all wisdom from the past, just because it is from the past, adopting fads and new jargon, at times cocky and arrogant. But I have no doubts that it will mature further, become more open to the outside world, more reflective, and therefore, more effective. |author=Philippe Kruchten<ref name="TeenAgile" />}} == See also == * [[Workers' self-management]] ==References== {{reflist}} ==Further reading== *{{cite web |first=P. |last=Abrahamsson |last2=Salo |first2=O. |last3=Ronkainen |first3=J. |last4=Warsta |first4=J. |title=Agile Software Development Methods: Review and Analysis |date=2002 |publisher=VTT Publications |id=478 |url=http://agile.vtt.fi/publications.html}} * {{cite book |title=Introduction to Agile Methods |first1=Sondra |last1=Ashmore |first2=Kristin |last2=Runyan |publisher=Addison-Wesley |year=2014 |isbn=978-0321929563}} *{{cite book |last=Cohen |first=D. |last2=Lindvall |first2=M. |last3=Costa |first3=P. |chapter=An introduction to agile methods |editor-first=Marvin |editor-last=Zelkowitz |series=Advances in Computers |title=Advances in Software Engineering |chapterurl=https://books.google.com/books?id=N-06uoJ9iSsC&pg=PA1 |date=2004 |publisher=Academic Press |isbn=978-0-08-047190-7 |pages=1–66 |volume=62}} *{{cite book |first=Torgeir |last=Dingsøyr |first2=Tore |last2=Dybå |first3=Nils Brede |last3=Moe |title=Agile Software Development: Current Research and Future Directions |url=https://books.google.com/books?id=JRhGAAAAQBAJ |date=2010 |publisher=Springer |isbn=978-3-642-12575-1 }} *{{cite book|last=Fowler|first=Martin|chapter=Is Design Dead?|chapterurl=http://www.martinfowler.com/articles/designDead.html|pages=3–18|editor-first=Giancarlo|editor-last=Succi|editor2-first=Michele|editor2-last=Marchesi|title=Extreme Programming Examined|year=2001|publisher=Addison-Wesley|isbn=978-0-201-71040-3|ref={{harvid|Succi|Marchesi|2001}}}} *{{cite journal |first=Craig |last=Larman |last2=Basili |first2=Victor R. |title=Iterative and Incremental Development: A Brief History |journal=IEEE Computer |volume=36 |issue=3 |pages=47–56 |date=June 2003 |doi=10.1109/MC.2003.1204375 |url=https://pdfs.semanticscholar.org/f9b3/ca89c69bacfade039c8be40762c6857bda11.pdf |ref=harv}} *{{cite web | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition}} *{{cite book|first=Alan|last=Moran|title=Managing Agile: Strategy, Implementation, Organisation and People|url=https://books.google.com/books?id=I6l_BwAAQBAJ|date=2015|publisher=Springer|isbn=978-3-319-16262-1}} *{{cite web|first=Dirk|last=Riehle|title=A Comparison of the Value Systems of Adaptive Software Development and Extreme Programming: How Methodologies May Learn From Each Other|url=http://www.riehle.org/computer-science/research/2000/xp-2000.html}} In {{harvnb|Succi|Marchesi|2001}} * {{cite book |first=James |last=Shore |first2=Shane |last2=Warden |title=The Art of Agile Development |url=https://books.google.com/books?id=2q6bAgAAQBAJ |date=2008 |publisher=O'Reilly Media |isbn=978-0-596-52767-9 |ref=harv}} * {{cite book|first=M.|last=Stephens|first2=D.|last2=Rosenberg|title=Extreme Programming Refactored: The Case Against XP|publisher=Apress|year=2003|isbn=978-1-59059-096-6}} ==External links== * [http://agilemanifesto.org/ Agile Manifesto] * [https://www.agilealliance.org/agile101/agile-glossary/ Agile Glossary] * [http://martinfowler.com/articles/newMethodology.html The New Methodology] [[Martin Fowler (software engineer)|Martin Fowler]]'s description of the background to agile methods * [http://www.pragprog.com/magazines/2011-02/agile-- Ten Authors of The Agile Manifesto Celebrate its Tenth Anniversary] * [http://agilepatterns.org/ AgilePatterns.org] {{Software engineering}} {{use dmy dates|date=January 2012}} {{Authority control}} {{DEFAULTSORT:Agile Software Development}} [[Category:Software project management]] [[Category:Software development philosophies]] [[Category:Agile software development| ]]'
New page wikitext, after the edit (new_wikitext)
'{{short description|group of iterative and incremental development methods}} {{Software development process}} '''Agile software development''' is an approach to [[software development]] under which requirements and solutions evolve through the collaborative effort of [[Self-organizing communities|self-organizing]] and [[cross-functional team|cross-functional]] teams and their [[Customer|customer(s)]]/[[End user|end user(s)]].<ref name="Collier 2011">{{cite book |title= Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing |last=Collier|first=Ken W. |year=2011 |publisher= Pearson Education |isbn=9780321669544 | pages= 121 ff|quote=What is a self-organizing team?}}</ref> It advocates adaptive planning, evolutionary development, early delivery, and [[Continual improvement process|continual improvement]], and it encourages rapid and flexible response to change.<ref name="WhatIsAgile">{{cite web|url = http://www.agilealliance.org/the-alliance/what-is-agile/|title = What is Agile Software Development?|date = 8 June 2013|accessdate = 4 April 2015|publisher = Agile Alliance}}</ref>{{Explain|date=February 2019}} The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin |author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith |author5=Jim Highsmith |author6-link=Stephen J. Mellor |author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author) |author8=Andrew Hunt |author9-link=Ken Schwaber |author9=Ken Schwaber |author10-link=Alistair Cockburn |author10=Alistair Cockburn |author11-link=Ron Jeffries |author11=Ron Jeffries |author12-link=Jeff Sutherland |author12=Jeff Sutherland |author13-link=Ward Cunningham |author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer) |author15=Dave Thomas |author16-link=Martin Fowler (software engineer) |author16=Martin Fowler |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=|author-link=Kent Beck }}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{citation |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?|date=4 March 2016}}</ref><ref name="LarmanGuide" /> There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|jstor=20721416}}</ref> {{TOC limit}} ==History== [[Iterative and incremental development|Iterative and incremental development methods]] can be traced back as early as 1957,<ref name="craig2003">[[Gerald M. Weinberg]], as quoted in {{harvnb|Larman|Basili|2003|pp=47–56}} "We were doing incremental development as early as 1957, in Los Angeles, under the direction of Bernie Dimsdale at [[Service Bureau Corporation|IBM's Service Bureau Corporation]]. He was a colleague of [[John von Neumann]], so perhaps he learned it there, or assumed it as totally natural. I do remember Herb Jacobs (primarily, though we all participated) developing a large simulation for Motorola, where the technique used was, as far as I can tell&nbsp;... All of us, as far as I can remember, thought waterfalling of a huge project was rather stupid, or at least ignorant of the realities. I think what the waterfall description did for us was make us realize that we were doing something else, something unnamed except for 'software development.'"</ref> with evolutionary project management<ref name="EvolutionaryProjectManagement">{{cite web |url=https://www.gilb.com/Project-Management |accessdate=2017-04-30 |deadurl=yes |archiveurl=https://web.archive.org/web/20160327214807/http://www.gilb.com/Project-Management |title=Evolutionary Project Management (Original page, external archive) |archivedate=27 March 2016 |publisher=Gilb |df= }}</ref><ref>{{cite web |url=http://concepts.gilb.com/tiki-page.php?pageName=Evolutionary-Project-Management |title=Evolutionary Project Management (New page) |accessdate=2017-04-30 |publisher=Gilb}}</ref> and [[adaptive software development]]<ref name="edmonds1974">{{Cite journal |last=Edmonds |first=E. A. |year=1974 |title=A Process for the Development of Software for Nontechnical Users as an Adaptive System |journal=General Systems |volume=19 |pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17|doi=10.1145/1010865.1010868}}</ref>. During the 1990s, a number of ''lightweight'' software development methods evolved in reaction to the prevailing ''heavyweight'' methods that critics described as overly regulated, planned, and [[Micromanagement|micro-managed]]. These included: [[rapid application development]] (RAD), from 1991;<ref>{{cite book | title=Rapid Application Development | publisher=Macmillan | author=Martin, James | year=1991 | isbn=978-0-02-376775-3}}</ref><ref>{{cite book | title=Inside RAD: How to Build a Fully Functional System in 90 Days or Less | publisher=McGraw-Hill |author1=Kerr, James M. |author2=Hunter, Richard | year=1993 | page=3 | isbn=978-0-07-034223-1}}</ref> the [[Unified Process|unified process]] (UP) and [[dynamic systems development method]] (DSDM), both from 1994; [[Scrum (software development)|Scrum]], from 1995; Crystal Clear and [[extreme programming]] (XP), both from 1996; and [[feature-driven development]], from 1997. Although these all originated before the publication of the ''Agile Manifesto'', they are now collectively referred to as agile software development methods.<ref name="LarmanGuide">{{Cite book |last=Larman |first=Craig |year=2004 |title=Agile and Iterative Development: A Manager's Guide |publisher=Addison-Wesley |isbn=978-0-13-111155-4 |page=27 |postscript=<!--None--> }}</ref> At the same time, similar changes were underway in manufacturing<ref>Iacocca Institute (1991). "21st Century Manufacturing Enterprise Strategy: An Industry Led View". Iacocca Institute, Lehigh University, Bethlehem, PA.</ref> and aerospace.<ref>Presley, A., J. Mills and D. Liles (1995). "Agile Aerospace Manufacturing". Nepcon East 1995, Boston.</ref> In 2001, seventeen software developers met at a resort in [[Snowbird, Utah|Snowbird]], [[Utah]] to discuss these lightweight development methods, including among others [[Kent Beck]], [[Ward Cunningham]], [[Dave Thomas (programmer)|Dave Thomas]], [[Jeff Sutherland]], [[Ken Schwaber]], [[Jim Highsmith]], [[Alistair Cockburn]], and [[Robert C. Martin]]. Together they published the ''Manifesto for Agile Software Development''.<ref name="AgileManifesto" /> In 2005, a group headed by Cockburn and Highsmith wrote an addendum of [[project management]] principles, the [[PM Declaration of Interdependence]],<ref>{{cite web|url=http://pmdoi.org|title=Declaration of Interdependence|last=Anderson|first=David|year=2005|website=|archive-url=https://web.archive.org/web/20180127094805/http://www.pmdoi.org/|archive-date=27 January 2018|dead-url=true|access-date=4 October 2018|df=dmy-all}}</ref> to guide software project management according to agile software development methods. In 2009, a group working with Martin wrote an extension of [[software development]] principles, the [[Software craftsmanship|Software Craftsmanship Manifesto]], to guide agile software development according to [[professional]] conduct and mastery. In 2011, the Agile Alliance created the ''Guide to Agile Practices'' (renamed the ''Agile Glossary'' in 2016),<ref>{{Cite news|url=https://www.agilealliance.org/how-you-can-help-the-agile-alliance-help-you/|title=How You Can Help Agile Alliance Help You|last=McDonald|first=Kent|date=1 November 2016|work=Agile Alliance Blog|access-date=4 July 2017}}</ref> an evolving open-source compendium of the working definitions of agile practices, terms, and elements, along with interpretations and experience guidelines from the worldwide community of agile practitioners. == {{anchor|The Agile Manifesto}} The Manifesto for Agile Software Development == === Agile software development values === Based on their combined experience of developing software and helping others do that, the seventeen signatories to the manifesto proclaimed that they value:<ref name="AgileManifesto" /> * {{em | {{strong | Individuals and Interactions}} over processes and tools }} * {{em | {{strong | Working Software}} over comprehensive documentation }} * {{em | {{strong | Customer Collaboration}} over contract negotiation }} * {{em | {{strong | Responding to Change}} over following a plan }} That is to say, the items on the left are valued more than the items on the right. As [[Scott Ambler]] elucidated:<ref name="abmmw"> {{cite web |url=http://www.ambysoft.com/essays/agileManifesto.html |title=Examining the Agile Manifesto |publisher=Ambysoft Inc. |accessdate=6 April 2011}}</ref> * Tools and processes are important, but it is more important to have competent people working together effectively. *Good documentation is useful in helping people to understand how the software is built and how to use it, but the main point of development is to create software, not documentation. *A contract is important but is no substitute for working closely with customers to discover what they need. *A project plan is important, but it must not be too rigid to accommodate changes in technology or the environment, stakeholders' priorities, and people's understanding of the problem and its solution. Some of the authors formed the Agile Alliance, a non-profit organization that promotes software development according to the manifesto's values and principles. Introducing the manifesto on behalf of the Agile Alliance, [[Jim Highsmith]] said, {{Quote |text=The Agile movement is not anti-methodology, in fact many of us want to restore credibility to the word methodology. We want to restore a balance. We embrace modeling, but not in order to file some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a turbulent environment. Those who would brand proponents of XP or SCRUM or any of the other Agile Methodologies as "hackers" are ignorant of both the methodologies and the original definition of the term hacker.|sign=Jim Highsmith |author=Jim Highsmith |source=History: The Agile Manifesto<ref> {{cite web | url=http://agilemanifesto.org/history.html | title=History: The Agile Manifesto |year=2001 |author=Jim Highsmith |publisher=agilemanifesto.org}} </ref>}} === Agile software development principles === The ''Manifesto for Agile Software Development'' is based on twelve principles:<ref name="ManifestoPrinciples"> {{cite web |url=http://www.agilemanifesto.org/principles.html |title=Principles behind the Agile Manifesto |year=2001 |publisher=Agile Alliance |author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin |author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith |author5=Jim Highsmith |author6-link=Stephen J. Mellor |author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author) |author8=Andrew Hunt |author9-link=Ken Schwaber |author9=Ken Schwaber |author10-link=Alistair Cockburn |author10=Alistair Cockburn |author11-link=Ron Jeffries |author11=Ron Jeffries |author12-link=Jeff Sutherland |author12=Jeff Sutherland |author13-link=Ward Cunningham |author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer) |author15=Dave Thomas |author16-link=Martin Fowler (software engineer) |author16=Martin Fowler |author17-link=Brian Marick |author17=Brian Marick |accessdate=6 June 2010 |archiveurl=https://web.archive.org/web/20100614043008/http://www.agilemanifesto.org/principles.html |archivedate=14 June 2010 |deadurl=no |df=dmy |author-link=Kent Beck }}</ref> # Customer satisfaction by early and continuous delivery of valuable software. # Welcome changing requirements, even in late development. # Deliver working software frequently (weeks rather than months) # Close, daily cooperation between business people and developers # Projects are built around motivated individuals, who should be trusted # Face-to-face conversation is the best form of communication (co-location) # Working software is the primary measure of progress # Sustainable development, able to maintain a constant pace # Continuous attention to technical excellence and good design # Simplicity&mdash;the art of maximizing the amount of work {{Not a typo|not}} done&mdash;is essential # Best architectures, requirements, and designs emerge from self-organizing teams # Regularly, the team reflects on how to become more effective, and adjusts accordingly ==Overview== [[File:Pair programming 1.jpg|200px|thumb|right|[[Pair programming]], an agile development technique used by [[Extreme Programming|XP]].]] ===Iterative, incremental and evolutionary=== Most agile development methods break product development work into small increments that minimize the amount of up-front planning and design. Iterations, or sprints, are short time frames ([[timeboxing|timeboxes]]) that typically last from one to four weeks. Each iteration involves a [[cross-functional team]] working in all functions: [[Project planning|planning]], [[requirements analysis|analysis]], [[Software design|design]], [[Computer programming|coding]], [[unit testing]], and [[acceptance testing]]. At the end of the iteration a working product is demonstrated to stakeholders. This minimizes overall risk and allows the product to adapt to changes quickly.<ref name="auto">{{cite book | author=Moran, A.|title=Agile Risk Management |publisher=Springer Verlag|year=2014|isbn=978-3319050072}}</ref> An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal [[Software bug|bugs]]) at the end of each iteration.<ref name="embracing change">{{cite journal| last=Beck|first=Kent| year=1999|title=Embracing Change with Extreme Programming| journal=Computer|volume=32|issue=10| pages=70–77| doi=10.1109/2.796139}}</ref> Multiple iterations might be required to release a product or new features. Working software is the primary measure of progress.<ref name="ManifestoPrinciples" /> ===Efficient and face-to-face communication=== The principle of [[Colocation (business)|co-location]] is that co-workers on the same team should be situated together to better establish the identity as a team and to improve communication.<ref>{{cite web|url=https://www.infoq.com/news/collaborative-team-space-study|title=Study: Co-Located Teams vs. the Cubicle Farm|last=Preuss|first=Deborah Hartmann|date=13 October 2006|website=InfoQ|access-date=2018-10-23}}</ref> This enables [[face-to-face interaction]], ideally in front of a whiteboard, that reduces the cycle time typically taken when questions and answers are mediated through phone, persistent chat, wiki, or email.<ref>{{cite web|url=https://www.pearson.com/us/higher-education/program/Cockburn-Agile-Software-Development-The-Cooperative-Game-2nd-Edition/PGM38838.html|title=Agile Software Development: The Cooperative Game|last=Cockburn|first=Alistair|date=2007|website=www.pearson.com|publisher=Addison-Wesley Professional|language=en|access-date=2018-10-23|edition=2nd}}</ref> No matter which development method is followed, every team should include a [[customer representative]] ("Product Owner" in [[Scrum (software development)|Scrum]]). This person is agreed by stakeholders to act on their behalf and makes a personal commitment to being available for developers to answer questions throughout the iteration. At the end of each iteration, stakeholders and the customer representative review progress and re-evaluate priorities with a view to optimizing the [[Rate of return|return on investment]] (ROI) and ensuring alignment with customer needs and company goals. In agile software development, an '''information radiator''' is a (normally large) physical display located prominently near the development team, where passers-by can see it. It presents an up-to-date summary of the product development status.<ref name="Cockburn, Information radiator">{{cite web|url=http://alistair.cockburn.us/Information+radiator|title=Information radiator|last=Cockburn|first=Alistair|authorlink=Alistair Cockburn|date=19 June 2008|access-date=}}</ref><ref name=Ambler>{{cite book |title=Agile Modeling: Effective Practices for EXtreme Programming and the Unified Process |first=Scott |last=Ambler |date=12 April 2002 |isbn=978-0-471-20282-0 |publisher=John Wiley & Sons |pages=12, 164, 363}}</ref> A [[build light indicator]] may also be used to inform a team about the current status of their product development. ===Very short feedback loop and adaptation cycle=== A common characteristic in agile software development is the [[Stand-up meeting|daily stand-up]] (also known as the ''daily scrum)''. In a brief session, team members report to each other what they did the previous day toward their team's iteration goal, what they intend to do today toward the goal, and any roadblocks or impediments they can see to the goal.<ref>{{cite web |url=http://www.eylean.com/Publications/DownloadPublication/3443705e-1697-4557-8327-ff8644fab40b?name=Whitepaper---Developing-agile-project-task-and-team-management-practices |title=Developing agile project task and team management practices |publisher=Eylean |first=Vidas |last=Vasiliauskas |date=2014 |access-date=15 September 2014 |archive-url=https://web.archive.org/web/20140915141234/http://www.eylean.com/Publications/DownloadPublication/3443705e-1697-4557-8327-ff8644fab40b?name=Whitepaper---Developing-agile-project-task-and-team-management-practices |archive-date=15 September 2014 |dead-url=yes |df=dmy-all }}</ref> ===Quality focus=== Specific tools and techniques, such as [[continuous integration]], automated [[unit testing]], [[pair programming]], [[test-driven development]], [[Software design pattern|design patterns]], [[behavior-driven development]], [[domain-driven design]], [[code refactoring]] and other techniques are often used to improve quality and enhance product development agility.<ref>{{cite book|last1=Jeffries|first1=Ron|last2=Anderson|first2=Ann|last3=Hendrickson|first3=Chet|title=Extreme Programming installed|date=2001|publisher=Addison-Weslsy|isbn=978-0201-70842-4|pages=72–147}}</ref> This is predicated on designing and building quality in from the beginning and being able to demonstrate software for customers at any point, or at least at the end of every iteration.<ref>{{cite book|title=Agile Testing: A Practical Guide for Testers and Agile Teams|author=Lisa Crispin|author2=Janet Gregory|publisher=Addison-Wesley|year=2009|isbn=|location=|pages=}}</ref> ==Philosophy== Compared to traditional software engineering, agile software development mainly targets complex systems and product development with dynamic, non-deterministic and non-linear characteristics. Accurate estimates, stable plans, and predictions are often hard to get in early stages, and confidence in them is likely to be low. Agile practitioners will seek to reduce the ''leap-of-faith'' that is needed before any evidence of value can be obtained.<ref name=Mitchell2016>{{Cite book | last=Mitchell | first=Ian | year=2016 | title=Agile Development in Practice | publisher= Tamare House | isbn=978-1-908552-49-5| page=11 | postscript=<!--None--> }}</ref> Requirements and design are held to be emergent. Big up-front specifications would probably cause a lot of waste in such cases, i.e., are not economically sound. These basic arguments and previous industry experiences, learned from years of successes and failures, have helped shape agile development's favor of adaptive, iterative and evolutionary development.<ref name=Larman2004>{{Cite book | last=Larman | first=Craig | year=2004 | title=Agile and Iterative Development: A Manager's Guide | publisher=Addison-Wesley | isbn=978-0-13-111155-4 | page=27 | postscript=<!--None--> }}</ref> === Adaptive vs. predictive === Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|author2-link=Richard Turner (software)}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref> ''Adaptive'' methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team has difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method is about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost. ''Predictive'' methods, in contrast, focus on analysing and planning the future in detail and cater for known risks. In the extremes, a predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive methods rely on effective early phase analysis and if this goes very wrong, the project may have difficulty changing direction. Predictive teams often institute a [[change control board]] to ensure they consider only the most valuable changes. [[Risk analysis (engineering)|Risk analysis]] can be used to choose between adaptive (''agile'' or ''value-driven'') and predictive (''plan-driven'') methods.<ref name="PMBridgeToAgility">{{Cite book |last1=Sliger |first1=Michele |last2=Broderick |first2=Stacia |title=The Software Project Manager's Bridge to Agility |publisher=Addison-Wesley |year=2008 |isbn=978-0-321-50275-9 |page=46 }}</ref> [[Barry Boehm]] and [[Richard Turner (computer scientist)|Richard Turner]] suggest that each side of the continuum has its own ''home ground'', as follows:<ref name="boehm2004"/> {| class="wikitable" |+ Home grounds of different development methods |- ! style="width: 33%" | Value-driven methods ! style="width: 33%" | Plan-driven methods ! Formal methods |- | Low criticality | High criticality | Extreme criticality |- | Senior developers | Junior developers(?) | Senior developers |- | Requirements change often | Requirements do not change often | Limited requirements, limited features see [[Wirth's law]]{{Clarify|date=December 2015}} |- | Small number of developers | Large number of developers | Requirements that can be modeled |- | Culture that responds to change | Culture that demands order | Extreme quality |} === Agile vs. waterfall === One of the differences between agile software development methods and waterfall is the approach to quality and testing. In the [[waterfall model]], there is always a separate ''testing phase'' after a ''build phase''; however, in agile software development testing is completed in the same iteration as programming. Another difference is that traditional "waterfall" software development moves a project through various Software Development Lifecycle (SDLC) phases. One phase is completed in its entirety before moving on to the next phase. Because testing is done in every iteration—which develops a small piece of the software—users can frequently use those new pieces of software and validate the value. After the users know the real value of the updated piece of software, they can make better decisions about the software's future. Having a value retrospective and software re-planning session in each iteration—[[Scrum (software development)|Scrum]] typically has iterations of just two weeks—helps the team continuously adapt its plans so as to maximize the value it delivers. This follows a pattern similar to the [[PDCA]] cycle, as the work is ''planned'', ''done'', ''checked'' (in the review and retrospective), and any changes agreed are ''acted'' upon. This iterative approach supports a ''product'' rather than a ''project'' mindset. This provides greater flexibility throughout the development process; whereas on projects the requirements are defined and locked down from the very beginning, making it difficult to change them later. Iterative product development allows the software to evolve in response to changes in business environment or market requirements.<ref>{{cite web|url=https://www.altexsoft.com/blog/business/at-the-kickoff-project-development-vs-product-development/|title=At the Kickoff: Project Development vs Product Development|date=12 February 2016|website=AltexSoft Inc.|access-date=31 May 2016}}</ref> Because of the short iteration style of agile software development, it also has strong connections with the [[lean startup]] concept. === Code vs. documentation === In a letter to ''[[Computer (magazine)|IEEE Computer]]'', Steven Rakitin expressed cynicism about agile software development, calling it "yet another attempt to undermine the discipline of software engineering" and translating "working software over comprehensive documentation" as "we want to spend all our time coding. Remember, real programmers don't write documentation."<ref name="rakitin2001">{{Cite journal| last=Rakitin| first=Steven R.| title= Manifesto Elicits Cynicism: Reader's letter to the editor by Steven R. Rakitin|journal=IEEE Computer| volume=34| year=2001| page=4|quote=The article titled 'Agile Software Development: The Business of Innovation' ... is yet another attempt to undermine the discipline of software engineering ... We want to spend all our time coding. Remember, real programmers don't write documentation.}}</ref> This is disputed by proponents of agile software development, who state that developers should write documentation if that is the best way to achieve the relevant goals, but that there are often better ways to achieve those goals than writing static documentation.<ref name="agiledoc">{{cite web|url=http://www.agilemodeling.com/essays/agileDocumentation.htm|author=Scott Ambler|title=Agile/Lean Documentation: Strategies for Agile Software Development}}</ref> [[Scott Ambler]] states that documentation should be "just barely good enough" (JBGE),<ref>{{cite web|author=Scott Ambler|url=http://www.agilemodeling.com/essays/barelyGoodEnough.html|title=Just Barely Good Enough Models and Documents: An Agile Best Practice}}</ref> that too much or comprehensive documentation would usually cause waste, and developers rarely trust detailed documentation because it's usually out of sync with code,<ref name="agiledoc"/> while too little documentation may also cause problems for maintenance, communication, learning and knowledge sharing. [[Alistair Cockburn]] wrote of the ''Crystal Clear'' method: {{Quote|text=Crystal considers development a series of co-operative games, and intends that the documentation is enough to help the next win at the next game. The work products for Crystal include use cases, risk list, iteration plan, core domain models, and design notes to inform on choices...however there are no templates for these documents and descriptions are necessarily vague, but the objective is clear, '''just enough documentation''' for the next game. I always tend to characterize this to my team as: what would you want to know if you joined the team tomorrow.|sign=Alistair Cockburn.<ref>{{cite web|author=Geoffrey Wiseman|date=July 18, 2007|title=Do Agile Methods Require Documentation?|url=http://www.infoq.com/news/2007/07/agile-methods-documentation|publisher=InfoQ}} quoting {{cite web |last=Cooper |first=Ian |date=6 July 2007 |url=https://ianhammondcooper.wordpress.com/2007/07/06/agile-and-documentation/ |title=Staccato Signals:Agile and Documentation|work=WordPress.com}}</ref>}} ==Agile software development methods== [[File:SoftwareDevelopmentLifeCycle.jpg|thumb|right|Software development life-cycle support<ref name="Abrahamsson2002">{{cite techreport|first=Pekka|last=Abrahamson|first2=Outi|last2=Salo|first3=Jussi|last3=Ronkainen|first4=Juhani|last4=Warsta|name-list-format=vanc|title=Agile software development methods: Review and analysis|number=478|institution=[[VTT]]|year=2002|url=http://www.vtt.fi/inf/pdf/publications/2002/P478.pdf}}</ref>]] Agile software development methods support a broad range of the [[software development life cycle]].<ref name="Abrahamsson2002" /> Some focus on the practices (e.g., XP, pragmatic programming, agile modeling), while some focus on managing the flow of work (e.g., Scrum, Kanban). Some support activities for requirements specification and development (e.g., FDD), while some seek to cover the full development life cycle (e.g., DSDM, [[Rational Unified Process|RUP]]). Notable agile software development frameworks include: {| class="wikitable" ! Framework ! Main contributor(s) |- | [[Adaptive software development]] (ASD) || [[Jim Highsmith]], Sam Bayer |- | [[Agile modeling]] || [[Scott Ambler]], [[Robert Cecil Martin]] |- | [[Agile Unified Process|Agile unified process]] (AUP) || [[Scott Ambler]] |- | [[Disciplined agile delivery]] || [[Scott Ambler]] |- | [[Dynamic systems development method]] (DSDM) || |- | [[Extreme programming]] (XP) || [[Kent Beck]], [[Robert Cecil Martin]] |- | [[Feature-driven development]] (FDD) || [[Jeff De Luca]] |- | [[Lean software development]] || Mary Poppendieck, Tom Poppendieck |- | [[Kanban (development)|Kanban]] || [[Taiichi Ohno]] |- | [[Rapid application development]] (RAD) || [[James Martin (author)|James Martin]] |- | [[Scrum (software development)|Scrum]] || [[Ken Schwaber]], [[ Jeff Sutherland]] |- | [[Scrumban]] || |} === Agile software development practices === Agile software development is supported by a number of concrete practices, covering areas like requirements, design, modeling, coding, testing, planning, risk management, process, quality, etc. Some notable agile software development practices include:<ref name="Agile Practices Guide">{{cite web|url=http://guide.agilealliance.org/ |title=Guide to Agile Practices |publisher=the Agile Alliance |deadurl=yes |archiveurl=https://web.archive.org/web/20140209152034/http://guide.agilealliance.org/ |archivedate=9 February 2014 |df=dmy }}</ref> {| class="wikitable" ! Practice ! Main contributor(s) |- |[[Acceptance test-driven development]] (ATDD) || [[Kent Beck]] |- | [[Agile modeling]] || |- | [[Agile testing]] || |- |[[Scrum (development)#Product backlog|Backlogs]] (Product and Sprint)|| [[Ken Schwaber]] |- |[[Behavior-driven development]] (BDD) || [[Dan North]], Liz Keogh |- |[[Continuous integration]] (CI) || [[Grady Booch ]] |- |[[Cross-functional team]] || |- |[[Domain-driven design]] (DDD) || [[Eric Evans]] |- | [[Iterative and incremental development]] (IID) || |- |[[Low-code development platforms]] || |- |[[Pair programming]] || [[Kent Beck]] |- |[[Planning poker]] || James Grenning, [[Mike Cohn]] |- |[[Refactoring]] || |- |[[Retrospective]] || |- |[[Scrum (development)|Scrum events]] (sprint planning, daily scrum, sprint review and retrospective) || |- | [[Specification by example]] || |- |[[Story-driven modeling]] || Albert Zündorf |- | [[Test-driven development]] (TDD) || [[Kent Beck]] |- |[[Timeboxing]] || |- | [[User story]] || [[Alistair Cockburn]] |- | [[Velocity (software development)|Velocity tracking]] || |} ===Method tailoring=== In the literature, different terms refer to the notion of method adaptation, including 'method tailoring', 'method fragment adaptation' and 'situational method engineering'. Method tailoring is defined as: {{Quote |text=A process or capability in which human agents determine a system development approach for a specific project situation through responsive changes in, and dynamic interplays between contexts, intentions, and method fragments. |author=Mehmet Nafiz Aydin et al. |source=An Agile Information Systems Development Method in use<ref name="Aydin2004">{{cite journal | last1 = Aydin | first1 = M.N. | last2 = Harmsen | first2 = F. | last3 = Slooten | last4 = Stagwee | first4 = R. A. | year = 2004 | title = An Agile Information Systems Development Method in use | url = | journal = Turk J Elec Engin | volume = 12 | issue = 2| pages = 127–138 }}</ref>}} Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management |volume=16|issue=4|pages=20–24|doi=10.4018/jdm.2005100102}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref> In practice, methods can be tailored using various tools. Generic process modeling languages such as [[Unified Modeling Language]] can be used to tailor software development methods. However, dedicated tools for method engineering such as the Essence Theory of Software Engineering of [[SEMAT]] also exist.<ref>Park, J. S., McMahon, P. E., and Myburgh, B. (2016). Scrum Powered by Essence. ACM SIGSOFT Software Engineering Notes, 41(1), pp. 1-8.</ref> === Large-scale, offshore and distributed === Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57|author2-link=Richard Turner (software)}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref> In response, a range of strategies and patterns has evolved for overcoming challenges with large-scale development efforts (>20 developers)<ref name="ambler2006"/><ref name="sstc2007">Schaaf, R.J. (2007). Agility XL [http://www.sstc-online.org/Proceedings/2007/pdfs/RJS1722.pdf Systems and Software Technology Conference 2007] {{webarchive|url=https://web.archive.org/web/20160313105019/http://sstc-online.org/proceedings/2007/pdfs/rjs1722.pdf |date=13 March 2016 }}, Tampa, FL</ref> or distributed (non-colocated) development teams,<ref name="BridgingTheDistance">{{cite web|url=http://www.drdobbs.com/architecture-and-design/184414899 |title=Bridging the Distance |publisher=Sdmagazine.com |date= |accessdate=1 February 2011}}</ref><ref name="AgileOffshore">{{cite web|first=Martin |last=Fowler |url=http://www.martinfowler.com/articles/agileOffshore.html |title=Using an Agile Software Process with Offshore Development |publisher=Martinfowler.com |date= |accessdate=6 June 2010}}</ref> amongst other challenges; and there are now several recognised frameworks that seek to mitigate or avoid these challenges. * [[Scaled Agile Framework|Scaled agile framework]] (SAFe),<ref>{{cite web|url=http://www.scaledagileframework.com/|title=Scaled Agile Framework|last=Leffingwell|first=Dean|website=Scaled Agile Framework}}</ref> Dean Leffingwell ''inter alia'' * [[Disciplined agile delivery]] (DAD), [[Scott Ambler]] ''inter alia'' * [[Large-Scale Scrum|Large-scale scrum]] (LeSS), [[Craig Larman]] and Bas Vodde * Nexus (scaled professional Scrum),<ref>{{cite web|last1=Schwaber|first1=Ken|url=https://www.scrum.org/Portals/0/NexusGuide%20v1.1.pdf|website=scrum.org|accessdate=14 September 2015|title=Nexus Guide: The Definitive Guide to Nexus: The exoskeleton of scaled Scrum development}}</ref> [[Ken Schwaber]] * Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015|date=23 July 2014}}</ref> [[Jeff Sutherland]], Alex Brown * Enterprise Scrum,<ref>{{cite web|last1=Beedle|first1=Mike|title=Enterprise Scrum|url=http://www.enterprisescrum.com/|accessdate=25 September 2015}}</ref> [[Mike Beedle]] * Setchu (Scrum-based lightweight framework),<ref>{{cite web|last1=Ebbage|first1=Michael|title=Setchu – Agile at Scale|url=http://agile-setchu.org/|accessdate=30 September 2015}}</ref> Michael Ebbage * Xscale<ref>{{cite web|url=http://agiletng.org/2014/04/21/xscale/ |title=XSCALE Alliance |publisher=Agiletng.org |date= |accessdate=2019-03-26}}</ref> * Agile path<ref>{{cite web|url=http://www.agile-path.com/ |title=Agilepath – Collaborate.Innovate.Succeed |publisher=Agile-path.com |date=2019-01-18 |accessdate=2019-03-26}}</ref> * Holistic Software Development <ref>http://www.holistic-software.com</ref> There are many conflicting viewpoints on whether all of these are effective or indeed fit the definition of agile development, and this remains an active and ongoing area of research.<ref name="ambler2006">W. Scott Ambler (2006) [http://www.drdobbs.com/184415491 Supersize Me] in Dr. Dobb's Journal, 15 February 2006.</ref><ref name="oopsla2002">Agile Processes Workshop II Managing Multiple Concurrent Agile Projects. Washington: OOPSLA 2002</ref> When agile software development is applied in a distributed setting (with teams dispersed across multiple business locations), it is commonly referred to as distributed agile development. The goal is to leverage the unique benefits offered by each approach. Distributed development allow organizations to build software by strategically setting up teams in different parts of the globe, virtually building software round-the-clock (more commonly referred to as follow-the-sun model). On the other hand, agile development provides increased transparency, continuous feedback and more flexibility when responding to changes. === Regulated domains === Agile software development methods were initially seen as best suitable for non-critical product developments, thereby excluded from use in regulated domains such as medical devices, pharmaceutical, financial, nuclear systems, automotive, and avionics sectors, etc. However, in the last several years, there have been several initiatives for the adaptation of agile methods for these domains.<ref name="Cawley2010">{{Cite book|title = Lean/Agile Software Development Methodologies in Regulated Environments – State of the Art|journal = Lean Enterprise Software and Systems|date = 2010|isbn = 978-3-642-16415-6|pages = 31–36|series = Lecture Notes in Business Information Processing|volume = 65|first = Oisín|last = Cawley|first2 = Xiaofeng|last2 = Wang|first3 = Ita|last3 = Richardson|editor-first = Pekka|editor-last = Abrahamsson|editor2-first = Nilay|editor2-last = Oza|doi=10.1007/978-3-642-16416-3_4|hdl = 10344/683}}</ref><ref name="McHugh2014">{{Cite book|title = An Agile Implementation within a Medical Device Software Organisation|journal = Software Process Improvement and Capability Determination|date = 2014-11-04|isbn = 978-3-319-13035-4|pages = 190–201|series = Communications in Computer and Information Science|volume = 477|first = Martin|last = McHugh|first2 = Fergal|last2 = McCaffery|first3 = Garret|last3 = Coady|editor-first = Antanas|editor-last = Mitasiunas|editor2-first = Terry|editor2-last = Rout|editor3-first = Rory V.|editor3-last = O'Connor|editor4-first = Alec|editor4-last = Dorling| display-editors = 3|doi=10.1007/978-3-319-13036-1_17}}</ref><ref>{{Cite book|last=Wang|first=Yang|last2=Ramadani|first2=Jasmin|last3=Wagner|first3=Stefan|date=2017-11-29|title=An Exploratory Study on Applying a Scrum Development Process for Safety-Critical Systems|journal=Product-Focused Software Process Improvement|series=Lecture Notes in Computer Science|language=en|volume=10611|pages=324–340|arxiv=1703.05375|doi=10.1007/978-3-319-69926-4_23|isbn=9783319699257}}</ref><ref name="SafeScrum">{{cite web|url=http://www.sintef.no/safescrum |title=SafeScrum - SINTEF |publisher=Sintef.no |date= |accessdate=2019-03-26}}</ref><ref>Thor Myklebust, Tor Stålhane, Geir Kjetil Hanssen, Tormod Wien and Børge Haugset: Scrum, documentation and the IEC 61508-3:2010 software standard, http://www.sintef.no/globalassets/ec-61508-documentation-and-safescrum-psam12.pdf</ref> There are numerous standards that may apply in regulated domains, including [[ISO 26262]], [[ISO 9000]], [[ISO 9001]], and [[ISO/IEC 15504]]. A number of key concerns are of particular importance in regulated domains:<ref name="Fitzgerald2013">{{Cite book|title = Scaling agile methods to regulated environments: An industry case study|journal = 2013 35th International Conference on Software Engineering (ICSE)|date = May 2013|pages = 863–872|doi = 10.1109/ICSE.2013.6606635|first = B.|last = Fitzgerald|first2 = K.-J.|last2 = Stol|first3 = R.|last3 = O'Sullivan|first4 = D.|last4 = O'Brien|isbn = 978-1-4673-3076-3|hdl = 10344/3055}}</ref> * [[Quality assurance]] (QA): Systematic and inherent quality management underpinning a controlled professional process and reliability and correctness of product. * Safety and security: Formal planning and risk management to mitigate safety risks for users and securely protecting users from unintentional and malicious misuse. *[[Traceability]]: Documentation providing auditable evidence of regulatory compliance and facilitating traceability and investigation of problems. * [[Verification and Validation]] (V&V): Embedded throughout the software development process (e.g. user requirements specification, functional specification, design specification, code review, unit tests, integration tests, system tests). ==Experience and adoption== Although agile software development methods can be used with any programming paradigm or language in practice, they were originally closely associated with object-oriented environments such as Smalltalk and Lisp and later Java. The initial adopters of agile methods were usually small to medium-sized teams working on unprecedented systems with requirements that were difficult to finalize and likely to change as the system was being developed. This section describes common problems that organizations encounter when they try to adopt agile software development methods as well as various techniques to measure the quality and performance of agile teams.<ref>{{cite book|last1=Beck|first1=Kent|title=Extreme Programming Explained|date=2000|publisher=Addison-Wesley|isbn=978-0201616415|pages=1–24}}</ref> ===Measuring agility=== The best agile practitioners have always emphasized thorough engineering principles. As a result, there are a number of best practices and tools for measuring the performance of agile software development and teams. ==== Internal assessments ==== The ''Agility measurement index'', amongst others, rates developments against five dimensions of product development (duration, risk, novelty, effort, and interaction).<ref>{{cite conference |date=|doi=10.1145/1185448.1185509|book-title=ACM-SE 44 Proceedings of the 44th annual Southeast regional conference |page=271 |year=2006 |last=Datta |first=Subhajit |isbn=1595933158 |title=Agility measurement index: a metric for the crossroads of software development methodologies}}</ref><ref>{{cite web|url=http://jroller.com/page/bokmann?entry=improving_your_processes_aim_high|title=David Bock's Weblog : Weblog|publisher=Jroller.com|accessdate=2 April 2010|archive-url=https://web.archive.org/web/20060111041831/http://jroller.com/page/bokmann?entry=improving_your_processes_aim_high|archive-date=11 January 2006|dead-url=yes|df=dmy-all}}</ref> Other techniques are based on measurable goals<ref>{{cite web|url=http://www.smr.co.uk/presentations/measure.pdf|title=Assessing Agility|author=Peter Lappo|author2=Henry C.T. Andrew|date=|accessdate=6 June 2010}}</ref> and one study suggests that [[Velocity (software development)|velocity]] can be used as a metric of agility.<ref name="Kurian 2006">Kurian, Tisni (2006). Agility Metrics: A Quantitative Fuzzy Based Approach for Measuring Agility of a Software Process, ''ISAM-Proceedings of International Conference on Agile Manufacturing'06(ICAM-2006)'', Norfolk, U.S.</ref> There are also agile self-assessments to determine whether a team is using agile software development practices (Nokia test,<ref>{{cite web|url=http://agileconsortium.blogspot.com/2007/12/nokia-test.html|title=Nokia test, A scrum-specific test|author=Joe Little|date=2 December 2007|publisher=Agileconsortium.blogspot.com|accessdate=6 June 2010}}</ref> Karlskrona test,<ref>{{cite web|url=http://mayberg.se/learning/karlskrona-test|title=Karlskrona test, A generic agile adoption test|author=Mark Seuffert|author2=Mayberg, Sweden|date=|publisher=Mayberg.se|accessdate=5 Apr 2014}}</ref> 42 points test).<ref>{{cite web|url=http://www.allaboutagile.com/how-agile-are-you-take-this-42-point-test/|title=How Agile Are You? (Take This 42 Point Test)|date=|publisher=allaboutagile.com/|accessdate=3 April 2014|archive-url=https://web.archive.org/web/20140505223335/http://www.allaboutagile.com/how-agile-are-you-take-this-42-point-test/|archive-date=5 May 2014|dead-url=yes|df=dmy-all}}</ref> ====Public surveys==== One of the early studies reporting gains in quality, productivity, and business satisfaction by using agile software developments methods was a survey conducted by Shine Technologies from November 2002 to January 2003.<ref>{{cite web|url=http://www.shinetech.com/attachments/104_ShineTechAgileSurvey2003-01-17.pdf|title=Agile Methodologies Survey Results|date=January 2003|publisher=Shine Technologies|archiveurl=https://web.archive.org/web/20100821225423/http://www.shinetech.com/attachments/104_ShineTechAgileSurvey2003-01-17.pdf|archivedate=21 August 2010|deadurl=yes|accessdate=3 June 2010|quote=95% stated that there was either no effect or a cost reduction&nbsp;... 93% stated that productivity was better or significantly better&nbsp;... 88% stated that quality was better or significantly better&nbsp;... 83% stated that business satisfaction was better or significantly better|df=}}</ref> A similar survey, the ''State of Agile'', is conducted every year starting in 2006 with thousands of participants from around the software development community. This tracks trends on the benefits of agility, lessons learned, and good practices. Each survey has reported increasing numbers saying that agile software development helps them deliver software faster; improves their ability to manage changing customer priorities; and increases their productivity.<ref>{{cite web|url=http://stateofagile.versionone.com/why-agile/|title=2013 State of Agile report: Why Agile?|date=27 January 2014|publisher=stateofagile.com|archiveurl=https://web.archive.org/web/20140828012224/http://stateofagile.versionone.com/why-agile/|archivedate=28 August 2014|deadurl=yes|accessdate=13 August 2014|df=}}</ref> Surveys have also consistently shown better results with agile product development methods compared to classical project management.<ref>[http://www.status-quo-agile.net Status Quo Agile], Second study on success and forms of usage of agile methods. Retrieved 1 July 2015</ref><ref>{{cite web|url=http://www.drdobbs.com/architecture-and-design/191800169;jsessionid=2QJ23QRYM3H4PQE1GHPCKH4ATMY32JVN?queryText=agile+survey|title=Survey Says: Agile Works in Practice|last=Ambler|first=Scott|authorlink=Scott Ambler|date=3 August 2006|work=Dr. Dobb's|accessdate=3 June 2010|quote=Only 6% indicated that their productivity was lowered&nbsp;... No change in productivity was reported by 34% of respondents and 60% reported increased productivity&nbsp;... 66% [responded] that the quality is higher&nbsp;... 58% of organizations report improved satisfaction, whereas only 3% report reduced satisfaction.}}</ref> In balance, there are reports that some feel that agile development methods are still too young to enable extensive academic research of their success.<ref>{{cite web|url=http://www.agilemodeling.com/essays/proof.htm|title=Answering the "Where is the Proof That Agile Methods Work" Question|date=19 January 2007|publisher=Agilemodeling.com|accessdate=2 April 2010}}</ref> ===Common agile software development pitfalls=== Organizations and teams implementing agile software development often face difficulties transitioning from more traditional methods such as [[waterfall development]], such as teams having an agile process forced on them.<ref name="The Art of Agile Development">{{harvnb|Shore|Warden|2008|p=47}}</ref> These are often termed ''agile anti-patterns'' or more commonly ''agile smells''. Below are some common examples: ====Lack of overall product design==== A goal of agile software development is to focus more on producing working software and less on documentation. This is in contrast to waterfall models where the process is often highly controlled and minor changes to the system require significant revision of supporting documentation. However, this does not justify completely doing without any analysis or design at all. Failure to pay attention to design can cause a team to proceed rapidly at first but then to have significant rework required as they attempt to scale up the system. One of the key features of agile software development is that it is iterative. When done correctly design emerges as the system is developed and commonalities and opportunities for re-use are discovered.<ref>{{cite book|last1=Beck|first1=Kent|title=Extreme Programming Explained|date=2000|publisher=Addison-Wesley|isbn=978-0201616415|pages=48–49}}</ref> ====Adding stories to an iteration in progress==== In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08|date=11 October 2011}}</ref> This does not mean that a story cannot expand. Teams must deal with new information, which may produce additional tasks for a story. If the new information prevents the story from being completed during the iteration, then it should be carried over to a subsequent iteration. However, it should be prioritized against all remaining stories, as the new information may have changed the story's original priority. ====Lack of sponsor support==== Agile software development is often implemented as a grassroots effort in organizations by software development teams trying to optimize their development processes and ensure consistency in the software development life cycle. By not having sponsor support, teams may face difficulties and resistance from business partners, other development teams and management. Additionally, they may suffer without appropriate funding and resources.<ref>{{cite web|url=http://agile-only.com/master-thesis/project-mgmt/pr-and-rd|title=Project Roles and Responsibility Distribution|website=agile-only.com|accessdate=2014-06-15}}</ref> This increases the likelihood of failure.<ref>{{cite web|last1=Bourne|first1=Lynda|title=What Does a Project Sponsor Really Do?|url=http://blogs.pmi.org/blog/voices_on_project_management/2012/04/what-does-a-project-sponsor-re.html|website=blogs.pmi.org|accessdate=2014-06-08}}</ref> ====Insufficient training==== A survey performed by VersionOne found respondents cited insufficient training as the most significant cause for failed agile implementations<ref>{{cite web|url=http://www.versionone.com/state_of_agile_development_survey/09/page5.asp|title=9th State of Agile Report|website=Stage of Agile Survey|publisher=VersionOne|accessdate=2014-06-08|archive-url=https://web.archive.org/web/20150112225122/http://www.versionone.com/state_of_agile_development_survey/09/page5.asp|archive-date=12 January 2015|dead-url=yes|df=dmy-all}}</ref> Teams have fallen into the trap of assuming the reduced processes of agile software development compared to other methodologies such as waterfall means that there are no actual rules for agile software development. {{Citation needed|date=May 2018}} ====Product owner role is not properly filled==== The [[product owner]] is responsible for representing the business in the development activity and is often the most demanding role.<ref>{{cite book|author1=Sims, Chris |author2=Johnson, Hillary Louise |title=The Elements of Scrum|date=2011-02-15|publisher=Dymaxicon|page=73|edition=Kindle}}</ref> A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08|date=25 August 2011}}</ref> ====Teams are not focused==== Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14|date=8 April 2014}}</ref> ====Excessive preparation/planning==== Teams may fall into the trap of spending too much time preparing or planning. This is a common trap for teams less familiar with agile software development where the teams feel obliged to have a complete understanding and specification of all stories. Teams should be prepared to move forward only with those stories in which they have confidence, then during the iteration continue to discover and prepare work for subsequent iterations (often referred to as [[refinement (computing)|backlog refinement]] or grooming). ====Problem-solving in the daily standup==== A daily standup should be a focused, timely meeting where all team members disseminate information. If problem-solving occurs, it often can only involve certain team members and potentially is not the best use of the entire team's time. If during the daily standup the team starts diving into problem-solving, it should be set aside until a sub-team can discuss, usually immediately after the standup completes. <ref>{{cite web|title=Daily Scrum Meeting|url=http://www.mountaingoatsoftware.com/agile/scrum/daily-scrum|website=www.mountaingoatsoftware.com|accessdate=2014-06-14}}</ref> ====Assigning tasks==== One of the intended benefits of agile software development is to empower the team to make choices, as they are closest to the problem. Additionally, they should make choices as close to implementation as possible, to use more timely information in the decision. If team members are assigned tasks by others or too early in the process, the benefits of localized and timely decision making can be lost.<ref name="Effective Sprint Planning">{{cite web|last1=May |first1=Robert |title=Effective Sprint Planning |url=http://www.agileexecutives.org/Blogs/tabid/66/EntryId/18/Effective-Sprint-Planning.aspx |website=www.agileexecutives.org |accessdate=2014-06-14 |deadurl=yes |archiveurl=https://web.archive.org/web/20140628102810/http://www.agileexecutives.org/Blogs/tabid/66/EntryId/18/Effective-Sprint-Planning.aspx |archivedate=28 June 2014 |df= }}</ref> Being assigned work also constrains team members into certain roles (for example, team member A must always do the database work), which limits opportunities for cross-training.<ref name="Effective Sprint Planning"/> Team members themselves can choose to take on tasks that stretch their abilities and provide cross-training opportunities. ====Scrum master as a contributor==== Another common pitfall is for a scrum master to act as a contributor. While not prohibited by the Scrum methodology, the scrum master needs to ensure they have the capacity to act in the role of scrum master first and not working on development tasks. A scrum master's role is to facilitate the process rather than create the product.<ref name="agileconnection.com">{{cite web|last1=Berczuk|first1=Steve|title=Mission Possible: ScrumMaster and Technical Contributor|url=http://www.agileconnection.com/article/mission-possible-scrummaster-and-technical-contributor?page=0%2C1|website=www.agileconnection.com|accessdate=2014-06-14}}</ref> Having the scrum master also multitasking may result in too many context switches to be productive. Additionally, as a scrum master is responsible for ensuring roadblocks are removed so that the team can make forward progress, the benefit gained by individual tasks moving forward may not outweigh roadblocks that are deferred due to lack of capacity.<ref name="agileconnection.com"/> ====Lack of test automation==== Due to the iterative nature of agile development, multiple rounds of testing are often needed. Automated testing helps reduce the impact of repeated unit, integration, and regression tests and frees developers and testers to focus on higher value work.<ref>{{cite web|last1=Namta|first1=Rajneesh|title=Thoughts on Test Automation in Agile|url=http://www.infoq.com/articles/thoughts-on-test-automation-in-agile|website=www.infoq.com|accessdate=2014-06-14}}</ref> Test automation also supports continued [[refactoring]] required by iterative software development. Allowing a developer to quickly run tests to confirm refactoring has not modified the functionality of the application may reduce the workload and increase confidence that cleanup efforts have not introduced new defects. ====Allowing technical debt to build up==== Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014|date = 22 March 2014}}</ref> As the system evolves it is important to [[Code refactoring|refactor]] as entropy of the system naturally increases.<ref>{{cite web|last1=Shore|first1=James|title=The Art of Agile Development: Refactoring|url=http://www.jamesshore.com/Agile-Book/refactoring.html|website=www.jamesshore.com|accessdate=2014-06-14}}</ref> Over time the lack of constant maintenance causes increasing defects and development costs.<ref name="Technical Debt + Red October"/> ====Attempting to take on too much in an iteration==== A common misconception is that agile software development allows continuous change, however an iteration backlog is an agreement of what work can be completed during an iteration.<ref>{{cite web|title=Step 4: Sprint Planning (Tasks)|url=http://www.allaboutagile.com/how-to-implement-scrum-in-10-easy-steps-step-4-sprint-planning-tasks/|website=www.allaboutagile.com|accessdate=2014-06-14|archive-url=https://web.archive.org/web/20140629145319/http://www.allaboutagile.com/how-to-implement-scrum-in-10-easy-steps-step-4-sprint-planning-tasks/|archive-date=29 June 2014|dead-url=yes|df=dmy-all}}</ref> Having too much [[Work in process|work-in-progress (WIP)]] results in inefficiencies such as context-switching and queueing.<ref>{{cite web|url=http://leankit.com/blog/2014/03/limiting-work-in-progress/|title=Why Limiting Your Work-in-Progress Matters|website=leankit.com|last1=George|first1=Claire|accessdate=2014-06-14}}</ref> The team must avoid feeling pressured into taking on additional work.<ref>{{cite web|url=http://www.mountaingoatsoftware.com/agile/scrum/sprint-planning-meeting/|website=www.mountaingoatsoftware.com|accessdate=2014-06-14|title=Sprint Planning Meeting}}</ref> ====Fixed time, resources, scope, and quality==== Agile software development fixes time (iteration duration), quality, and ideally resources in advance (though maintaining fixed resources may be difficult if developers are often pulled away from tasks to handle production incidents), while the scope remains variable. The customer or product owner often push for a fixed scope for an iteration. However, teams should be reluctant to commit to the locked time, resources and scope (commonly known as the [[project management triangle]]). Efforts to add scope to the fixed time and resources of agile software development may result in decreased quality.<ref name="adeptechllc.com">{{cite web|last1=McMillan |first1=Keith |title=Time, Resources, Scope... and Quality. |url=http://www.adeptechllc.com/2010/05/13/time-resources-scope-and-quality/ |website=www.adeptechllc.com |accessdate=2014-06-15 }}</ref> ====Developer burnout==== Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite journal|title=Current study on limitations of Agile|journal=Procedia Computer Science|volume=78|pages=291–297|last=|first=|date=January 2016|doi=10.1016/j.procs.2016.02.056}}</ref> == Agile management == The term ''agile management'' is applied to an iterative, incremental method of managing the design and build activities of engineering, information technology and other business areas that aim to provide new product or service development in a highly flexible and interactive manner, based on the principles expressed in the ''Manifesto for Agile Software Development''.<ref>{{Cite book|title=Managing Agile: Strategy, Implementation, Organisation and People |last=Moran |first=Alan|publisher=Springer |date=2015|isbn=978-3-319-16262-1}}</ref> Agile X techniques may also be called [[extreme project management]]. It is a variant of [[iterative and incremental development|iterative life cycle]]<ref>ExecutiveBrief, [http://www.pmhut.com/which-life-cycle-is-best-for-your-project Which Life Cycle Is Best For Your Project?], PM Hut. Accessed 23 October 2009.</ref> where [[deliverable]]s are submitted in stages. The main difference between agile and iterative development is that agile methods complete small portions of the deliverables in each delivery cycle (iteration),<ref>{{cite web | url=http://www.versionone.com/agile-project-management/ | title=Agile Project Management | publisher=VersionOne | accessdate=1 June 2015}}</ref> while iterative methods evolve the entire set of deliverables over time, completing them near the end of the project. Both iterative and agile methods were developed as a reaction to various obstacles that developed in more sequential forms of project organization. For example, as technology projects grow in complexity, end users tend to have difficulty defining the long-term requirements without being able to view progressive prototypes. Projects that develop in iterations can constantly gather feedback to help refine those requirements. Agile management also offers a simple framework promoting communication and reflection on past [[Work (project management)|work]] amongst [[Project team|team]] members.<ref>{{cite web | url=http://www.project-laneways.com.au/certification-courses/agilepm/what-is-agile-management | title=What is Agile Management? | publisher=Project Laneways | accessdate=1 June 2015}}</ref> Teams who were using traditional waterfall planning and adopted the agile way of development typically go through a transformation phase and often take help from agile coaches who help guide the teams through a smooth transformation. There are typically two styles of agile coaching: push-based and [[pull-based agile coaching]]. Agile management approaches have also been employed and adapted to the business and government sectors. For example, within the [[federal government of the United States]], the [[United States Agency for International Development]] (USAID) is employing a [[collaborative project management]] approach that focuses on incorporating [[collaborating, learning and adapting]] (CLA) strategies to iterate and adapt programming.<ref>USAID. [https://www.usaid.gov/sites/default/files/documents/1870/201.pdf "ADS Chapter 201 Program Cycle Operational Policy"]. Retrieved 19 April 2017</ref> Agile methods are mentioned in the ''Guide to the Project Management Body of Knowledge'' (''PMBOK Guide'') under the Project Lifecycle definition: {{blockquote|'''Adaptive project life cycle''', a project life cycle, also known as change-driven or agile methods, that is intended to facilitate change and require a high degree of ongoing [[Project stakeholders|stakeholder]] involvement. Adaptive life cycles are also iterative and incremental, but differ in that iterations are very rapid (usually 2-4 weeks in length) and are fixed in time and [[Resource (project management)|resources]].<ref>[[Project Management Institute]], ''[[A Guide to the Project Management Body of Knowledge]]'' (PMBOK Guide), Fifth Edition</ref>}} === Applications outside software development === [[File:Agile Brazil 2014 conference entrance.jpg|Agile Brazil 2014 conference|thumb|right]] According to Jean-Loup Richet (Research Fellow at [[ESSEC]] Institute for Strategic Innovation & Services) "this approach can be leveraged effectively for non-software products and for project management in general, especially in areas of innovation and uncertainty." The end result is a product or project that best meets current customer needs and is delivered with minimal costs, waste, and time, enabling companies to achieve bottom line gains earlier than via traditional approaches.<ref>Richet, Jean-Loup (2013). ''Agile Innovation''. Cases and Applied Research, n°31. ESSEC-ISIS. {{ISBN|978-2-36456-091-8}}</ref> Agile software development methods have been extensively used for development of software products and some of them use certain characteristics of software, such as object technologies.<ref name=Smith2007>{{Cite book | last=Smith| first=Preston G| year=2007 | title=Flexible Product Development | publisher=Jossey-Bass | isbn=978-0-7879-9584-3 | page=25 | postscript=<!--None--> }}</ref> However, these techniques can be applied to the development of non-software products, such as computers, motor vehicles,<ref>{{cite web|url=http://agilebusinessmanagement.org/content/wikispeed-%E2%80%93-applying-agile-software-principles-and-practices-fast-automotive-development|title=WIKISPEED – Applying Agile software principles and practices for fast automotive development|publisher=Agile Business Management Consortium |date=2013-12-03 |accessdate=2015-09-11}}</ref> medical devices, food, clothing, and music.<ref>{{cite book | author=Newton Lee|title="Getting on the Billboard Charts: Music Production as Agile Software Development," ''Digital Da Vinci: Computers in Music''|publisher=Springer Science+Business Media|year=2014|isbn=978-1-4939-0535-5}}</ref> Agile software development methods have been used in non-development [[IT infrastructure]] [[IT infrastructure deployment|deployments and migrations]]. Some of the wider principles of agile software development have also found application in general management<ref>{{cite book | author=Moran, Alan |title=Managing Agile: Strategy, Implementation, Organisation and People |publisher=Springer Verlag|year=2015|isbn=978-3-319-16262-1}}</ref> (e.g., strategy, governance, risk, finance) under the terms [[business agility]] or agile business management. Under an agile business management model, agile software development techniques, practices, principles and values are expressed across five domains.<ref>{{cite book | author=Leybourn, Evan |title=Directing the Agile Organisation: A Lean Approach to Business Management |publisher=IT Governance Publishing|year=2013|isbn=978-1-849-28491-2}}</ref> # Integrated [[customer engagement]]: to embed customers within any delivery process to share accountability for product/service delivery. # Facilitation-based management: adopting agile management models, like the role of [[Scrum Master]], to facilitate the day-to-day operation of teams. # Agile work practices: adopting specific iterative and incremental work practices such as [[Scrum (software development)|Scrum]], [[Kanban (development)|Kanban]], [[test-driven development]] or [[feature-driven development]] across all business functions (from sales, [[human resources]], finance<ref>{{cite web|url=http://theagiledirector.com/article/2015/03/11/pair-trading-collaboration-in-finance/|title=Pair Trading: Collaboration in Finance|publisher=The Agile Director |date=2015-03-11 |accessdate=2015-09-11}}</ref> and [[marketing]]). # An enabling organisational structure: with a focus on staff [[Engagement marketing|engagement]], personal autonomy and outcomes based governance. # Applications of agile process (along with [[DevOps]] and [[lean manufacturing]]), to [[Data analysis|data analytics]], [[business intelligence]], [[big data]], and [[data science]] is called [[Dataops|DataOps]] Agile software development paradigms can be used in other areas of life such as raising children. Its success in child development might be founded on some basic management principles; communication, adaptation, and awareness. In a [[TED (conference)|TED Talk]], Bruce Feiler shared how he applied basic agile paradigms to household management and raising children.<ref>[http://www.ted.com/talks/bruce_feiler_agile_programming_for_your_family.html "Agile programming – for your family"].</ref> == Criticism == Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite book|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=20 July 2016|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles. The increasing adoption of agile practices has also been criticized as being a [[management fad]] that simply describes existing good practices under new jargon, promotes a ''one size fits all'' mindset towards development strategies, and wrongly emphasizes method over results.<ref>{{cite web|url = http://www.batimes.com/kupe-kupersmith/agile-is-a-fad.html|title = Agile is a Fad|last = Kupersmith|first = Kupe}}</ref> [[Alistair Cockburn]] organized a celebration of the 10th anniversary of the ''Manifesto for Agile Software Development'' in Snowbird, Utah on 12 February 2011, gathering some 30+ people who had been involved at the original meeting and since. A list of about 20 [[elephant in the room|elephants in the room]] ('undiscussable' agile topics/issues) were collected, including aspects: the alliances, failures and limitations of agile software development practices and context (possible causes: commercial interests, decontextualization, no obvious way to make progress based on failure, limited objective evidence, cognitive biases and reasoning fallacies), politics and culture.<ref name="TeenAgile">{{cite web|url=http://www.infoq.com/articles/agile-teenage-crisis|first=Philippe|last=Kruchten|title=Agile's Teenage Crisis? |publisher=InfoQ |date=2011-06-20}}</ref> As [[Philippe Kruchten]] wrote: {{Quote |text=The agile movement is in some ways a bit like a teenager: very self-conscious, checking constantly its appearance in a mirror, accepting few criticisms, only interested in being with its peers, rejecting en bloc all wisdom from the past, just because it is from the past, adopting fads and new jargon, at times cocky and arrogant. But I have no doubts that it will mature further, become more open to the outside world, more reflective, and therefore, more effective. |author=Philippe Kruchten<ref name="TeenAgile" />}} == See also == * [[Workers' self-management]] ==References== {{reflist}} ==Further reading== *{{cite web |first=P. |last=Abrahamsson |last2=Salo |first2=O. |last3=Ronkainen |first3=J. |last4=Warsta |first4=J. |title=Agile Software Development Methods: Review and Analysis |date=2002 |publisher=VTT Publications |id=478 |url=http://agile.vtt.fi/publications.html}} * {{cite book |title=Introduction to Agile Methods |first1=Sondra |last1=Ashmore |first2=Kristin |last2=Runyan |publisher=Addison-Wesley |year=2014 |isbn=978-0321929563}} *{{cite book |last=Cohen |first=D. |last2=Lindvall |first2=M. |last3=Costa |first3=P. |chapter=An introduction to agile methods |editor-first=Marvin |editor-last=Zelkowitz |series=Advances in Computers |title=Advances in Software Engineering |chapterurl=https://books.google.com/books?id=N-06uoJ9iSsC&pg=PA1 |date=2004 |publisher=Academic Press |isbn=978-0-08-047190-7 |pages=1–66 |volume=62}} *{{cite book |first=Torgeir |last=Dingsøyr |first2=Tore |last2=Dybå |first3=Nils Brede |last3=Moe |title=Agile Software Development: Current Research and Future Directions |url=https://books.google.com/books?id=JRhGAAAAQBAJ |date=2010 |publisher=Springer |isbn=978-3-642-12575-1 }} *{{cite book|last=Fowler|first=Martin|chapter=Is Design Dead?|chapterurl=http://www.martinfowler.com/articles/designDead.html|pages=3–18|editor-first=Giancarlo|editor-last=Succi|editor2-first=Michele|editor2-last=Marchesi|title=Extreme Programming Examined|year=2001|publisher=Addison-Wesley|isbn=978-0-201-71040-3|ref={{harvid|Succi|Marchesi|2001}}}} *{{cite journal |first=Craig |last=Larman |last2=Basili |first2=Victor R. |title=Iterative and Incremental Development: A Brief History |journal=IEEE Computer |volume=36 |issue=3 |pages=47–56 |date=June 2003 |doi=10.1109/MC.2003.1204375 |url=https://pdfs.semanticscholar.org/f9b3/ca89c69bacfade039c8be40762c6857bda11.pdf |ref=harv}} *{{cite journal | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | journal =The Mitre Corporation | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition| date =8 September 2013 | last1 =Casagni | first1 =Michelle | last2 =Benito | first2 =Robert | last3 =Mayfield | first3 =Dr Kathleen M. | last4 =Northern | first4 =Carlton }} *{{cite book|first=Alan|last=Moran|title=Managing Agile: Strategy, Implementation, Organisation and People|url=https://books.google.com/books?id=I6l_BwAAQBAJ|date=2015|publisher=Springer|isbn=978-3-319-16262-1}} *{{cite web|first=Dirk|last=Riehle|title=A Comparison of the Value Systems of Adaptive Software Development and Extreme Programming: How Methodologies May Learn From Each Other|url=http://www.riehle.org/computer-science/research/2000/xp-2000.html}} In {{harvnb|Succi|Marchesi|2001}} * {{cite book |first=James |last=Shore |first2=Shane |last2=Warden |title=The Art of Agile Development |url=https://books.google.com/books?id=2q6bAgAAQBAJ |date=2008 |publisher=O'Reilly Media |isbn=978-0-596-52767-9 |ref=harv}} * {{cite book|first=M.|last=Stephens|first2=D.|last2=Rosenberg|title=Extreme Programming Refactored: The Case Against XP|publisher=Apress|year=2003|isbn=978-1-59059-096-6}} ==External links== * [http://agilemanifesto.org/ Agile Manifesto] * [https://www.agilealliance.org/agile101/agile-glossary/ Agile Glossary] * [http://martinfowler.com/articles/newMethodology.html The New Methodology] [[Martin Fowler (software engineer)|Martin Fowler]]'s description of the background to agile methods * [http://www.pragprog.com/magazines/2011-02/agile-- Ten Authors of The Agile Manifesto Celebrate its Tenth Anniversary] * [http://agilepatterns.org/ AgilePatterns.org] {{Software engineering}} {{use dmy dates|date=January 2012}} {{Authority control}} {{DEFAULTSORT:Agile Software Development}} [[Category:Software project management]] [[Category:Software development philosophies]] [[Category:Agile software development| ]]'
Unified diff of changes made by edit (edit_diff)
'@@ -3,7 +3,7 @@ '''Agile software development''' is an approach to [[software development]] under which requirements and solutions evolve through the collaborative effort of [[Self-organizing communities|self-organizing]] and [[cross-functional team|cross-functional]] teams and their [[Customer|customer(s)]]/[[End user|end user(s)]].<ref name="Collier 2011">{{cite book |title= Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing |last=Collier|first=Ken W. |year=2011 |publisher= Pearson Education |isbn=9780321669544 | pages= 121 ff|quote=What is a self-organizing team?}}</ref> It advocates adaptive planning, evolutionary development, early delivery, and [[Continual improvement process|continual improvement]], and it encourages rapid and flexible response to change.<ref name="WhatIsAgile">{{cite web|url = http://www.agilealliance.org/the-alliance/what-is-agile/|title = What is Agile Software Development?|date = 8 June 2013|accessdate = 4 April 2015|publisher = Agile Alliance}}</ref>{{Explain|date=February 2019}} -The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=}}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{cite |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?}}</ref><ref name="LarmanGuide" /> +The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin |author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith |author5=Jim Highsmith |author6-link=Stephen J. Mellor |author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author) |author8=Andrew Hunt |author9-link=Ken Schwaber |author9=Ken Schwaber |author10-link=Alistair Cockburn |author10=Alistair Cockburn |author11-link=Ron Jeffries |author11=Ron Jeffries |author12-link=Jeff Sutherland |author12=Jeff Sutherland |author13-link=Ward Cunningham |author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer) |author15=Dave Thomas |author16-link=Martin Fowler (software engineer) |author16=Martin Fowler |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=|author-link=Kent Beck }}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{citation |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?|date=4 March 2016}}</ref><ref name="LarmanGuide" /> -There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|via=|jstor=20721416}}</ref> +There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|jstor=20721416}}</ref> {{TOC limit}} @@ -30,5 +30,5 @@ |journal=General Systems |volume=19 -|pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|url=http://portal.acm.org/citation.cfm?doid=1010865.1010868|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17–17|doi=10.1145/1010865.1010868}}</ref>. +|pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17|doi=10.1145/1010865.1010868}}</ref>. During the 1990s, a number of ''lightweight'' software development methods evolved in reaction to the prevailing ''heavyweight'' methods that critics described as overly regulated, planned, and [[Micromanagement|micro-managed]]. These included: [[rapid application development]] (RAD), from 1991;<ref>{{cite book | title=Rapid Application Development | publisher=Macmillan | author=Martin, James | year=1991 | isbn=978-0-02-376775-3}}</ref><ref>{{cite book | title=Inside RAD: How to Build a Fully Functional System in 90 Days or Less | publisher=McGraw-Hill |author1=Kerr, James M. |author2=Hunter, Richard | year=1993 | page=3 | isbn=978-0-07-034223-1}}</ref> the [[Unified Process|unified process]] (UP) and [[dynamic systems development method]] (DSDM), both from 1994; [[Scrum (software development)|Scrum]], from 1995; Crystal Clear and [[extreme programming]] (XP), both from 1996; and [[feature-driven development]], from 1997. Although these all originated before the publication of the ''Agile Manifesto'', they are now collectively referred to as agile software development methods.<ref name="LarmanGuide">{{Cite book @@ -88,10 +88,23 @@ |year=2001 |publisher=Agile Alliance -|author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=[[Brian Marick]] +|author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin +|author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith +|author5=Jim Highsmith |author6-link=Stephen J. Mellor +|author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author) +|author8=Andrew Hunt |author9-link=Ken Schwaber +|author9=Ken Schwaber |author10-link=Alistair Cockburn +|author10=Alistair Cockburn |author11-link=Ron Jeffries +|author11=Ron Jeffries |author12-link=Jeff Sutherland +|author12=Jeff Sutherland |author13-link=Ward Cunningham +|author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer) +|author15=Dave Thomas |author16-link=Martin Fowler (software engineer) +|author16=Martin Fowler |author17-link=Brian Marick +|author17=Brian Marick |accessdate=6 June 2010 |archiveurl=https://web.archive.org/web/20100614043008/http://www.agilemanifesto.org/principles.html |archivedate=14 June 2010 |deadurl=no -|df=dmy }}</ref> +|df=dmy |author-link=Kent Beck +}}</ref> # Customer satisfaction by early and continuous delivery of valuable software. # Welcome changing requirements, even in late development. @@ -141,5 +154,5 @@ === Adaptive vs. predictive === -Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref> +Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|author2-link=Richard Turner (software)}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref> ''Adaptive'' methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team has difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method is about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost. @@ -288,5 +301,5 @@ |source=An Agile Information Systems Development Method in use<ref name="Aydin2004">{{cite journal | last1 = Aydin | first1 = M.N. | last2 = Harmsen | first2 = F. | last3 = Slooten | last4 = Stagwee | first4 = R. A. | year = 2004 | title = An Agile Information Systems Development Method in use | url = | journal = Turk J Elec Engin | volume = 12 | issue = 2| pages = 127–138 }}</ref>}} -Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management Special Issue on Agile Analysis, Design, and Implementation|volume=16|issue=4|pages=20–24}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref> +Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management |volume=16|issue=4|pages=20–24|doi=10.4018/jdm.2005100102}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref> In practice, methods can be tailored using various tools. Generic process modeling languages such as [[Unified Modeling Language]] can be used to tailor software development methods. However, dedicated tools for method engineering such as the Essence Theory of Software Engineering of [[SEMAT]] also exist.<ref>Park, J. S., McMahon, P. E., and Myburgh, B. (2016). Scrum Powered by Essence. ACM SIGSOFT Software Engineering Notes, 41(1), pp. 1-8.</ref> @@ -294,5 +307,5 @@ === Large-scale, offshore and distributed === -Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref> +Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57|author2-link=Richard Turner (software)}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref> In response, a range of strategies and patterns has evolved for overcoming challenges with large-scale development efforts (>20 developers)<ref name="ambler2006"/><ref name="sstc2007">Schaaf, R.J. (2007). Agility XL [http://www.sstc-online.org/Proceedings/2007/pdfs/RJS1722.pdf Systems and Software Technology Conference 2007] {{webarchive|url=https://web.archive.org/web/20160313105019/http://sstc-online.org/proceedings/2007/pdfs/rjs1722.pdf |date=13 March 2016 }}, Tampa, FL</ref> or distributed (non-colocated) development teams,<ref name="BridgingTheDistance">{{cite web|url=http://www.drdobbs.com/architecture-and-design/184414899 |title=Bridging the Distance |publisher=Sdmagazine.com |date= |accessdate=1 February 2011}}</ref><ref name="AgileOffshore">{{cite web|first=Martin |last=Fowler |url=http://www.martinfowler.com/articles/agileOffshore.html |title=Using an Agile Software Process with Offshore Development |publisher=Martinfowler.com |date= |accessdate=6 June 2010}}</ref> amongst other challenges; and there are now several recognised frameworks that seek to mitigate or avoid these challenges. @@ -301,5 +314,5 @@ * [[Large-Scale Scrum|Large-scale scrum]] (LeSS), [[Craig Larman]] and Bas Vodde * Nexus (scaled professional Scrum),<ref>{{cite web|last1=Schwaber|first1=Ken|url=https://www.scrum.org/Portals/0/NexusGuide%20v1.1.pdf|website=scrum.org|accessdate=14 September 2015|title=Nexus Guide: The Definitive Guide to Nexus: The exoskeleton of scaled Scrum development}}</ref> [[Ken Schwaber]] -* Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015}}</ref> [[Jeff Sutherland]], Alex Brown +* Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015|date=23 July 2014}}</ref> [[Jeff Sutherland]], Alex Brown * Enterprise Scrum,<ref>{{cite web|last1=Beedle|first1=Mike|title=Enterprise Scrum|url=http://www.enterprisescrum.com/|accessdate=25 September 2015}}</ref> [[Mike Beedle]] * Setchu (Scrum-based lightweight framework),<ref>{{cite web|last1=Ebbage|first1=Michael|title=Setchu – Agile at Scale|url=http://agile-setchu.org/|accessdate=30 September 2015}}</ref> Michael Ebbage @@ -347,5 +360,5 @@ ====Adding stories to an iteration in progress==== -In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08}}</ref> +In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08|date=11 October 2011}}</ref> This does not mean that a story cannot expand. Teams must deal with new information, which may produce additional tasks for a story. If the new information prevents the story from being completed during the iteration, then it should be carried over to a subsequent iteration. However, it should be prioritized against all remaining stories, as the new information may have changed the story's original priority. @@ -363,9 +376,9 @@ The [[product owner]] is responsible for representing the business in the development activity and is often the most demanding role.<ref>{{cite book|author1=Sims, Chris |author2=Johnson, Hillary Louise |title=The Elements of Scrum|date=2011-02-15|publisher=Dymaxicon|page=73|edition=Kindle}}</ref> -A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08}}</ref> +A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08|date=25 August 2011}}</ref> ====Teams are not focused==== -Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14}}</ref> +Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14|date=8 April 2014}}</ref> ====Excessive preparation/planning==== @@ -397,5 +410,5 @@ ====Allowing technical debt to build up==== -Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014}}</ref> +Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014|date = 22 March 2014}}</ref> As the system evolves it is important to [[Code refactoring|refactor]] as entropy of the system naturally increases.<ref>{{cite web|last1=Shore|first1=James|title=The Art of Agile Development: Refactoring|url=http://www.jamesshore.com/Agile-Book/refactoring.html|website=www.jamesshore.com|accessdate=2014-06-14}}</ref> Over time the lack of constant maintenance causes increasing defects and development costs.<ref name="Technical Debt + Red October"/> @@ -408,5 +421,5 @@ ====Developer burnout==== -Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite web|url=https://ac.els-cdn.com/S1877050916000582/1-s2.0-S1877050916000582-main.pdf?_tid=c457f048-fb52-11e7-898a-00000aacb35e&acdnat=1516172036_b8b055d4f50de7743058b83879f35f74//|title=Current study on limitations of Agile|last=|first=|date=|website=|access-date=}}</ref> +Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite journal|title=Current study on limitations of Agile|journal=Procedia Computer Science|volume=78|pages=291–297|last=|first=|date=January 2016|doi=10.1016/j.procs.2016.02.056}}</ref> == Agile management == @@ -436,5 +449,5 @@ == Criticism == -Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite web|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|url=http://aisel.aisnet.org/cais/vol29/iss1/2/|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles. +Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite book|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=20 July 2016|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles. The increasing adoption of agile practices has also been criticized as being a [[management fad]] that simply describes existing good practices under new jargon, promotes a ''one size fits all'' mindset towards development strategies, and wrongly emphasizes method over results.<ref>{{cite web|url = http://www.batimes.com/kupe-kupersmith/agile-is-a-fad.html|title = Agile is a Fad|last = Kupersmith|first = Kupe}}</ref> @@ -459,5 +472,5 @@ *{{cite book|last=Fowler|first=Martin|chapter=Is Design Dead?|chapterurl=http://www.martinfowler.com/articles/designDead.html|pages=3–18|editor-first=Giancarlo|editor-last=Succi|editor2-first=Michele|editor2-last=Marchesi|title=Extreme Programming Examined|year=2001|publisher=Addison-Wesley|isbn=978-0-201-71040-3|ref={{harvid|Succi|Marchesi|2001}}}} *{{cite journal |first=Craig |last=Larman |last2=Basili |first2=Victor R. |title=Iterative and Incremental Development: A Brief History |journal=IEEE Computer |volume=36 |issue=3 |pages=47–56 |date=June 2003 |doi=10.1109/MC.2003.1204375 |url=https://pdfs.semanticscholar.org/f9b3/ca89c69bacfade039c8be40762c6857bda11.pdf |ref=harv}} -*{{cite web | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition}} +*{{cite journal | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | journal =The Mitre Corporation | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition| date =8 September 2013 | last1 =Casagni | first1 =Michelle | last2 =Benito | first2 =Robert | last3 =Mayfield | first3 =Dr Kathleen M. | last4 =Northern | first4 =Carlton }} *{{cite book|first=Alan|last=Moran|title=Managing Agile: Strategy, Implementation, Organisation and People|url=https://books.google.com/books?id=I6l_BwAAQBAJ|date=2015|publisher=Springer|isbn=978-3-319-16262-1}} *{{cite web|first=Dirk|last=Riehle|title=A Comparison of the Value Systems of Adaptive Software Development and Extreme Programming: How Methodologies May Learn From Each Other|url=http://www.riehle.org/computer-science/research/2000/xp-2000.html}} In {{harvnb|Succi|Marchesi|2001}} '
New page size (new_size)
83158
Old page size (old_size)
82547
Size change in edit (edit_delta)
611
Lines added in edit (added_lines)
[ 0 => 'The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin |author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith |author5=Jim Highsmith |author6-link=Stephen J. Mellor |author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author) |author8=Andrew Hunt |author9-link=Ken Schwaber |author9=Ken Schwaber |author10-link=Alistair Cockburn |author10=Alistair Cockburn |author11-link=Ron Jeffries |author11=Ron Jeffries |author12-link=Jeff Sutherland |author12=Jeff Sutherland |author13-link=Ward Cunningham |author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer) |author15=Dave Thomas |author16-link=Martin Fowler (software engineer) |author16=Martin Fowler |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=|author-link=Kent Beck }}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{citation |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?|date=4 March 2016}}</ref><ref name="LarmanGuide" />', 1 => 'There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|jstor=20721416}}</ref>', 2 => '|pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17|doi=10.1145/1010865.1010868}}</ref>.', 3 => '|author=Kent Beck |author2=James Grenning |author3-link=Robert Cecil Martin ', 4 => '|author3=Robert C. Martin |author4=Mike Beedle |author5-link=Jim Highsmith ', 5 => '|author5=Jim Highsmith |author6-link=Stephen J. Mellor ', 6 => '|author6=Steve Mellor |author7=Arie van Bennekum |author8-link=Andy Hunt (author) ', 7 => '|author8=Andrew Hunt |author9-link=Ken Schwaber ', 8 => '|author9=Ken Schwaber |author10-link=Alistair Cockburn ', 9 => '|author10=Alistair Cockburn |author11-link=Ron Jeffries ', 10 => '|author11=Ron Jeffries |author12-link=Jeff Sutherland ', 11 => '|author12=Jeff Sutherland |author13-link=Ward Cunningham ', 12 => '|author13=Ward Cunningham |author14=Jon Kern |author15-link=Dave Thomas (programmer) ', 13 => '|author15=Dave Thomas |author16-link=Martin Fowler (software engineer) ', 14 => '|author16=Martin Fowler |author17-link=Brian Marick ', 15 => '|author17=Brian Marick ', 16 => '|df=dmy |author-link=Kent Beck ', 17 => '}}</ref>', 18 => 'Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|author2-link=Richard Turner (software)}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref>', 19 => 'Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management |volume=16|issue=4|pages=20–24|doi=10.4018/jdm.2005100102}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref>', 20 => 'Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=R. Turner|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57|author2-link=Richard Turner (software)}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref>', 21 => '* Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015|date=23 July 2014}}</ref> [[Jeff Sutherland]], Alex Brown', 22 => 'In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08|date=11 October 2011}}</ref>', 23 => 'A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08|date=25 August 2011}}</ref>', 24 => 'Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14|date=8 April 2014}}</ref>', 25 => 'Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014|date = 22 March 2014}}</ref>', 26 => 'Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite journal|title=Current study on limitations of Agile|journal=Procedia Computer Science|volume=78|pages=291–297|last=|first=|date=January 2016|doi=10.1016/j.procs.2016.02.056}}</ref>', 27 => 'Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite book|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=20 July 2016|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles.', 28 => '*{{cite journal | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | journal =The Mitre Corporation | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition| date =8 September 2013 | last1 =Casagni | first1 =Michelle | last2 =Benito | first2 =Robert | last3 =Mayfield | first3 =Dr Kathleen M. | last4 =Northern | first4 =Carlton }} ' ]
Lines removed in edit (removed_lines)
[ 0 => 'The term ''agile'' (sometimes written ''Agile'')<ref>{{cite web|url=https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |title=Agile With a Capital "A" Vs. agile With a Lowercase "a" |last=Rally |date=2010 |website= |archive-url=https://web.archive.org/web/20160105105258/https://www.rallydev.com/blog/engineering/agile-capital-vs-agile-lowercase |archive-date=5 January 2016 |dead-url=unfit |access-date=9 September 2015 |df= }}</ref> was popularized, in this context, by the ''[[#The Agile Manifesto|Manifesto for Agile Software Development]]''.<ref name="AgileManifesto">{{cite web|url=http://agilemanifesto.org/|title=Manifesto for Agile Software Development |author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=Brian Marick|year=2001|publisher=Agile Alliance|accessdate=14 June 2010|display-authors=}}</ref> The values and principles espoused in this manifesto were derived from and underpin a broad range of [[Software development process|software development frameworks]], including [[Scrum (software development)|Scrum]] and [[Kanban (development)|Kanban]].<ref>{{cite |url=http://www.cleverpm.com/2016/03/04/which-is-better-kanban-or-scrum/|title=Which is better – Kanban or Scrum?}}</ref><ref name="LarmanGuide" />', 1 => 'There is significant anecdotal evidence that adopting agile practices and values improves the agility of software professionals, teams and organizations; however, some empirical studies have found no scientific evidence.<ref>{{cite journal|last1=Dybå|first1=Tore|last2=Dingsøyr|first2=Torgeir|title=Empirical studies of agile software development: A systematic review|journal=Information and Software Technology|date=1 August 2008|volume=50|issue=9–10|pages=833–859|doi=10.1016/j.infsof.2008.01.006|language=en|issn=0950-5849}}</ref><ref>{{cite journal|last=Lee|first1=Gwanhoo|last2=Xia|first2=Weidong|date=2010|title=Toward Agile: An Integrated Analysis of Quantitative and Qualitative Field Data on Software Development Agility|url=|journal=MIS Quarterly|volume=34|issue=1|pages=87–114|doi=10.2307/20721416|via=|jstor=20721416}}</ref>', 2 => '|pages=215–18}}</ref> emerging in the early 1970s<ref>{{Cite journal|last=Gilb|first=Tom|date=1981-04-01|title=Evolutionary development|url=http://portal.acm.org/citation.cfm?doid=1010865.1010868|journal=ACM SIGSOFT Software Engineering Notes|language=en|volume=6|issue=2|pages=17–17|doi=10.1145/1010865.1010868}}</ref>.', 3 => '|author=[[Kent Beck]] |author2=James Grenning |author3=[[Robert Cecil Martin|Robert C. Martin]] |author4=Mike Beedle |author5=[[Jim Highsmith]] |author6=[[Stephen J. Mellor|Steve Mellor]] |author7=Arie van Bennekum |author8=[[Andy Hunt (author)|Andrew Hunt]] |author9=[[Ken Schwaber]] |author10=[[Alistair Cockburn]] |author11=[[Ron Jeffries]] |author12=[[Jeff Sutherland]] |author13=[[Ward Cunningham]] |author14=Jon Kern |author15=[[Dave Thomas (programmer)|Dave Thomas]] |author16=[[Martin Fowler (software engineer)|Martin Fowler]] |author17=[[Brian Marick]] ', 4 => '|df=dmy }}</ref>', 5 => 'Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6}} Appendix A, pages&nbsp;165–194</ref> Agile software development methods lie on the ''adaptive'' side of this continuum. One key of adaptive development methods is a [[Rolling Wave planning|''rolling wave'']] approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.<ref>{{cite book | title=Agile and Iterative Development: A Manager's Guide | last=Larman | first=Craig | year=2004 |page=253 | chapter=Chapter 11: Practice Tips | isbn=9780131111554 | chapter-url=https://books.google.com/?id=76rnV5Exs50C&pg=PA253&dq=adaptive%20predictive%20%22rolling%20wave%22#v=onepage&q=adaptive%20predictive%20%22rolling%20wave%22 | accessdate=14 October 2013}}</ref>', 6 => 'Situation-appropriateness should be considered as a distinguishing characteristic between agile methods and more plan-driven software development methods, with agile methods allowing product development teams to adapt working practices according to the needs of individual products.<ref>{{Cite book|title=The Paradox of Agile Transformation: Why trying too hard to be Agile stops organisations from becoming truly agile|last=Morris|first=David|publisher=University of Auckland|year=2015|isbn=|location=NZ|pages=|doi=10.13140/RG.2.2.32698.08640}}</ref><ref name="Aydin2004" /> Potentially, most agile methods could be suitable for method tailoring,<ref name="Abrahamsson2002" /> such as [[Dynamic Systems Development Method|DSDM]] tailored in a [[Capability Maturity Model|CMM]] context.<ref name="Abrahamsson2003">Abrahamsson, P., Warsta, J., Siponen, M.T., & Ronkainen, J. (2003). New Directions on Agile Methods: A Comparative Analysis. ''Proceedings of ICSE'03'', 244-254</ref> and XP tailored with the ''Rule Description Practices'' (RDP) technique.<ref>{{cite book|chapter-url=http://dl.acm.org/citation.cfm?id=1370143.1370149|title=Proceedings of the 2008 international workshop on Scrutinizing agile practices or shoot-out at the agile corral (APOS '08)|last=Mirakhorli|first=M.|last2=Rad|first2=A.K.|last3=Shams|first3=F.|last4=Pazoki|first4=M.|last5=Mirakhorli|first5=A.|publisher=ACM|year=2008|isbn=978-1-60558-021-0|editor=|location=|pages=23–32|chapter=RDP technique: a practice to customize xp|doi=10.1145/1370143.1370149|chapterurl=}}</ref><ref name="Aydin2005">{{cite journal|last1=Aydin|first1=M.N.|last2=Harmsen|first2=F.|last3=van Slooten|first3=K.|last4=Stegwee|first4=R.A.|year=2005|title=On the Adaptation of An Agile Information(Suren) Systems Development Method|url=|journal=Journal of Database Management Special Issue on Agile Analysis, Design, and Implementation|volume=16|issue=4|pages=20–24}}</ref> Not all agile proponents agree, however, with Schwaber noting "that is how we got into trouble in the first place, thinking that the problem was not having a perfect methodology. Efforts [should] center on the changes [needed] in the enterprise".<ref>Schwaber, K (2006) Scrum is hard and disruptive.</ref> Bas Vodde reinforced this viewpoint, suggesting that unlike traditional, large methodologies that require you to pick and choose elements, Scrum provides the basics on top of which you add additional elements to localise and contextualise its use.<ref>Vodde, B (2016) The Story of LeSS. Closing Keynote. Scrum Australia, Melbourne. April, 2016.</ref> Practitioners seldom use system development methods, or agile methods specifically, by the book, often choosing to omit or tailor some of the practices of a method in order to create an in-house method.<ref>Lagstedt, A., and Dahlberg, T. (2018). Understanding the Rarity of ISD Method Selection – Bounded Rationality and Functional Stupidity. PACIS 2018 Proceedings. 154. https://aisel.aisnet.org/pacis2018/154.</ref>', 7 => 'Agile software development has been widely seen as highly suited to certain types of environments, including small teams of experts working on [[greenfield project]]s,<ref name="boehm2004">{{cite book|last=Boehm|first=B.|authorlink=Barry Boehm|author2=[[Richard Turner (software)|R. Turner]]|title=Balancing Agility and Discipline: A Guide for the Perplexed|publisher=Addison-Wesley|location=Boston, MA|year=2004|isbn=978-0-321-18612-6|pages=55–57}}</ref><ref name="beck1999">{{cite book|last=Beck|first=K.|authorlink=Kent Beck|title=Extreme Programming Explained: Embrace Change|publisher=Addison-Wesley|location=Boston, MA|year=1999|isbn=978-0-321-27865-4}}</ref>{{Rp|157}} and the challenges and limitations encountered in the adoption of agile software development methods in a large organization with [[Legacy system|legacy infrastructure]] are well-documented and understood.<ref>{{cite web|last=Evans|first=Ian |title=Agile Delivery at British Telecom|url=http://www.methodsandtools.com/archive/archive.php?id=43| accessdate =21 February 2011}}</ref>', 8 => '* Scrum at Scale,<ref>{{cite web|last1=Sutherland|first1=Jeff|last2=Brown|first2=Alex|title=Scrum At Scale: Part 1|url=http://www.scruminc.com/scrum-scale-part-1/|accessdate=14 September 2015}}</ref> [[Jeff Sutherland]], Alex Brown', 9 => 'In agile software development, ''stories'' (similar to [[use case]] descriptions) are typically used to define requirements and an ''iteration'' is a short period of time during which the team commits to specific goals.<ref>{{cite web|last1=Rouse|first1=Margaret|title=Sprint (software development) definition|url=http://searchsoftwarequality.techtarget.com/definition/Scrum-sprint|website=searchsoftwarequality.techtarget.com|accessdate=2 October 2015}}</ref> Adding stories to an iteration in progress is detrimental to a good flow of work. These should be added to the product backlog and prioritized for a subsequent iteration or in rare cases the iteration could be cancelled.<ref name="axisagile.com.au">{{cite web|last1=Goldstein|first1=Ilan|title=Sprint issues – when sprints turn into crawls|url=http://www.axisagile.com.au/blog/planning-and-metrics/sprint-issues-when-sprints-turn-into-crawls/|website=www.axisagile.com.au|accessdate=2014-06-08}}</ref>', 10 => 'A common mistake is to have the product owner role filled by someone from the development team. This requires the team to make its own decisions on prioritization without real feedback from the business. They try to solve business issues internally or delay work as they reach outside the team for direction. This often leads to distraction and a breakdown in collaboration.<ref>{{cite web|last1=Rothman|first1=Johanna Rothman|title=When You Have No Product Owner At All|url=http://www.jrothman.com/blog/mpd/2011/08/when-you-have-no-product-owner-at-all.html|website=www.jrothman.com|accessdate=2014-06-08}}</ref>', 11 => 'Agile software development requires teams to meet product commitments, which means they should focus only on work for that product. However, team members who appear to have spare capacity are often expected to take on other work, which makes it difficult for them to help complete the work to which their team had committed.<ref>{{cite web|last1=Fox|first1=Alyssa|title=Working on Multiple Agile Teams|url=http://techwhirl.com/working-multiple-agile-teams/|website=techwhirl.com/|accessdate=2014-06-14}}</ref>', 12 => 'Focusing on delivering new functionality may result in increased [[technical debt]]. The team must allow themselves time for defect remediation and refactoring. Technical debt hinders planning abilities by increasing the amount of unscheduled work as production defects distract the team from further progress.<ref name="Technical Debt + Red October">{{cite web|last1 = Band|first1 = Zvi|title = Technical Debt + Red October|url = http://zviband.com/posts/technical-debt-red-october/|accessdate = 8 June 2014}}</ref>', 13 => 'Due to the focused pace and continuous nature of agile practices, there is a heightened risk of burnout among members of the delivery team.<ref>{{cite web|url=https://ac.els-cdn.com/S1877050916000582/1-s2.0-S1877050916000582-main.pdf?_tid=c457f048-fb52-11e7-898a-00000aacb35e&acdnat=1516172036_b8b055d4f50de7743058b83879f35f74//|title=Current study on limitations of Agile|last=|first=|date=|website=|access-date=}}</ref>', 14 => 'Agile practices can be inefficient in large organizations and certain types of developments.<ref>{{cite web|url=http://www.informit.com/articles/article.aspx?p=1380615|first=Craig|last=Larman|author2=Bas Vodde|title=Top Ten Organizational Impediments to Large-Scale Agile Adoption |publisher=InformIT |date=2009-08-13}}</ref> Many organizations believe that agile software development methodologies are too extreme and adopt a Hybrid approach <ref>{{cite web|url=https://www.binfire.com/blog/2016/07/hybrid-project-management-methodology//|title=Introduction to Hybrid project management|last=|first=|date=|website=|access-date=}}</ref> that mixes elements of agile software development and plan-driven approaches.<ref>{{cite journal|last=Barlow|first=Jordan B.|author2=Justin Scott Giboney|author3=Mark Jeffery Keith|author4=David W. Wilson|author5=Ryan M. Schuetzler|author6=Paul Benjamin Lowry|author7= Anthony Vance|title=Overview and Guidance on Agile Development in Large Organizations|journal=Communications of the Association for Information Systems|year=2011|volume=29|issue=1|pages=25–44|url=http://aisel.aisnet.org/cais/vol29/iss1/2/|doi=10.17705/1CAIS.02902}}</ref> Some methods, such as [[dynamic systems development method]] (DSDM) attempt this in a disciplined way, without sacrificing fundamental principles.', 15 => '*{{cite web | publisher = MITRE | title =Handbook for Implementing Agile in Department of Defense Information Technology Acquisition | url=https://www.mitre.org/publications/technical-papers/handbook-for-implementing-agile-in-department-of-defense-information-technology-acquisition}} ' ]
Whether or not the change was made through a Tor exit node (tor_exit_node)
false
Unix timestamp of change (timestamp)
1560014518