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!
==Overview== ===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]]){{sfn|Project Management Institute|2021|loc=2.3.3 Development Approaches}} that typically last from one to four weeks.{{sfn|Rubin|2013}}{{rp|20}} 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.{{sfn|Project Management Institute|2021|loc=Β§3.12 Enable Change to Achieve the Envisioned Future State}}<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> Through incremental development, products have room to "[[Fail-fast system|fail often and early]]" throughout each iterative phase instead of drastically on a final release date.<ref>{{Cite journal|last=Mergel|first=Ines|date=July 2016|title=Agile innovation management in government: A research agenda|url=https://linkinghub.elsevier.com/retrieve/pii/S0740624X16301101|journal=Government Information Quarterly|language=en|volume=33|issue=3|pages=516β523|doi=10.1016/j.giq.2016.07.004}}</ref> Multiple iterations might be required to release a product or new features. Working software is the primary measure of progress.<ref name="ManifestoPrinciples" /> A key advantage of agile approaches is speed to market and risk mitigation. Smaller increments are typically released to market, reducing the time and cost risks of engineering a product that doesn't meet user requirements. ===Efficient and face-to-face communication=== The 6th principle of the agile manifesto for software development states "The most efficient and effective method of conveying information to and within a development team is face-to-face conversation". The manifesto, written in 2001 when video conferencing was not widely used, states this in relation to the communication of information, not necessarily that a team should be co-located. 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|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> With the widespread adoption of remote working during the COVID-19 pandemic and changes to tooling, more studies have been conducted<ref>{{cite web | url=https://www.managers.org.uk/knowledge-and-insights/research-thought-leadership/management-transformed/ | title=Management Transformed | Research }}</ref> around co-location and distributed working which show that co-location is increasingly less relevant. No matter which development method is followed, every team should include a [[customer representative]] (known as ''product owner'' in [[Scrum (software development)|Scrum]]). This representative 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, the [[project stakeholder]]s together with 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. The importance of stakeholder satisfaction, detailed by frequent interaction and review at the end of each phase, is why the approach is often denoted as a [[Customer centricity|customer-centered methodology]].<ref>{{Cite book |last1=Jain |first1=Parita |last2=Sharma |first2=Arun |last3=Ahuja |first3=Laxmi |title=2018 7th International Conference on Reliability, Infocom Technologies and Optimization (Trends and Future Directions) (ICRITO) |chapter=The Impact of Agile Software Development Process on the Quality of Software Product |date=August 2018 |chapter-url=https://ieeexplore.ieee.org/document/8748529 |location=Noida, India |publisher=IEEE |pages=812β815 |doi=10.1109/ICRITO.2018.8748529 |isbn=978-1-5386-4692-2 |s2cid=195775457}}</ref> ==== Information radiator ==== In agile software development, an '''information radiator''' is a (normally large) physical display, board with [[sticky note]]s or similar, located prominently near the development team, where passers-by can see it.{{sfn|Project Management Institute|2021|loc=Β§2.7.3.2 Information Radiators}} It presents an up-to-date summary of the product development status.<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]] (known as ''daily scrum'' in the Scrum framework). In a brief session (e.g., 15 minutes), team members review collectively how they are progressing toward their goal and agree whether they need to adapt their approach. To keep to the agreed time limit, teams often use simple coded questions (such as what they completed the previous day, what they aim to complete that day, and whether there are any impediments or risks to progress), and delay detailed discussions and problem resolution until after the stand-up.<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 |url-status=dead}}</ref> ===Quality focus=== [[File:Pair programming 1.jpg|thumb|right|[[Pair programming]], an agile development technique used in [[Extreme Programming|XP]]]] 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=[https://archive.org/details/extremeprogrammi00jeff/page/72 72β147]|url=https://archive.org/details/extremeprogrammi00jeff/page/72}}</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}}</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)