Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Agile software development
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Philosophy== Compared to traditional software engineering, agile software development mainly targets complex systems and product development with dynamic, [[indeterministic]] and non-linear [[Property_(philosophy) | properties]]. 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 use their [[free will]] to reduce the "[[leap of faith]]" that is needed before any [[evidence]] of [[Value_(ethics_and_social_sciences)|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 }}</ref> Requirements and design are held to be [[Emergentism|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 }}</ref> === Adaptive vs. predictive === Development methods exist on a continuum from ''adaptive'' to ''predictive''.<ref name="boehm2004App">{{cite book|last=Boehm|first=B.|author-link=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 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 | publisher=Addison-Wesley Professional | isbn=9780131111554 | chapter-url=https://books.google.com/books?id=76rnV5Exs50C&q=adaptive%20predictive%20%22rolling%20wave%22&pg=PA253 | access-date=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 analyzing 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 (agile) ! style="width: 33%" | Plan-driven methods (waterfall) ! [[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]], work moves through [[software development life cycle]] (SDLC) phases—with one phase being completed before another can start—hence the '''''testing phase''''' is separate and follows a '''''build phase'''''. In agile software development, however, testing is completed in the same iteration as programming. 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|plan-do-check-act]] (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. === 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| number=12 | doi = 10.1109/MC.2001.10095 | year=2001| page=4| s2cid=221106984|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|date=16 April 2023 }}</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|access-date=24 January 2014|archive-date=8 October 2014|archive-url=https://web.archive.org/web/20141008163437/http://www.agilemodeling.com/essays/barelyGoodEnough.html|url-status=dead}}</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: {{Blockquote|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=18 July 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>}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)