Agile software development

from Wikipedia, the free encyclopedia

Agile software development refers to approaches in the software development process that increase transparency and the speed of change and lead to faster use of the developed system in order to minimize risks and undesirable developments in the development process. To this end, attempts are made to reduce the design phase to a minimum and to get executable software as early as possible in the development process. This is coordinated with the customer at regular, short intervals. It should be possible to respond flexibly to customer requests in order to increase customer satisfaction overall. Agile software development is characterized by self-organizing teams and an iterative and incremental approach.

Agile approaches can refer to parts of software development (e.g. in Agile Modeling ) or to the entire software development process (e.g. in Extreme Programming or Scrum ). The aim is to make the development process more flexible and leaner than is the case with the classic, plan-driven process models.

Classic approaches are often considered heavyweight and bureaucratic (e.g. Rational Unified Process or V-Modell ). One reproach against them is: the more you work according to plan, the more you get what was planned, but not what is needed.

historical development

The incremental process model in software development can be traced back to 1957. Evolutionary project management and adaptive software development emerged in the early 1970s.

The first approaches to agile software development can be found in the early 1990s. Agile software development first achieved popularity in 1999 when Kent Beck published the first book on Extreme Programming . This paved the way for other agile processes and methods. At the beginning, Extreme Programming was the most common agile method, at the latest since the first annual survey by VersionOne (2006), Scrum has been by far the most common agile method.

The term agile was in February 2001 at a meeting in Utah on a proposal by Mike Beedle selected to replace the hitherto customary lightweight (Engl. Lightweight ). At this meeting, the Agile Manifesto (see below) was formulated.

In 2005, Forrester Research found that 14% of companies in North America and Europe develop their software with agile processes; another 19% thought about using it. VersionOne found in 2013 that 84% of all companies already use agile processes, in 2016 it was 95%.

Components of agile software development

"Agile software development is a collective term for a number of methods and practices that are based on the values and principles of the Agile Software Development Manifesto."

- Agile Alliance, 2018

Agile principles

Four guiding principles were formulated in February 2001 as the Agile Manifesto (English Manifesto for Agile Software Development or Agile Manifesto for short ):

“We're finding better ways to develop software by doing it ourselves and helping others do it. Through this activity we have come to appreciate these values:

  • Individuals and interactions more than processes and tools
  • Functioning software more than comprehensive documentation
  • Working with the customer is more than just negotiating a contract
  • Responding to change more than following a plan

That means, although we find the values ​​on the right-hand side important, we rate the values ​​on the left-hand side higher. "

- Kent Beck , Mike Beedle , Arie van Bennekum, Alistair Cockburn , Ward Cunningham , Martin Fowler , James Grenning, Jim Highsmith, Andrew Hunt , Ron Jeffries , Jon Kern, Brian Marick, Robert C. Martin , Steve Mellor, Ken Schwaber , Jeff Sutherland and Dave Thomas

Among the 17 first signatories are the founders of Extreme Programming ( Kent Beck , Ward Cunningham , Ron Jeffries ), the founders of Scrum ( Ken Schwaber , Jeff Sutherland ), representatives of DSDM (Arie van Bennekum) and FDD (Jon Kern) as well as the Founder of ASD (Jim Highsmith), Crystal ( Alistair Cockburn ) and pragmatic programming ( Dave Thomas , Andrew Hunt ).

Agile principles

Agile principles serve as guiding principles for agile work. Sometimes agile principles are also referred to as a method. In heavy-weight processes, principles are overlaid by extensive method descriptions and principles take a back seat; moreover, processes used to be defined mainly through methods, not principles. The naming of the principles should give them more weight compared to formal methods.

In the Agile Manifesto twelve principles are listed.

  • Customer satisfaction through early and continuous delivery of valuable software
  • Agile processes use changes (even late in development) to give the customer a competitive advantage.
  • Delivery of functioning software in regular, preferably short periods of time (a few weeks or months)
  • Almost daily collaboration between technical experts and developers during the project (e.g. collective code ownership)
  • Provision of the environment and the support that is required by motivated individuals for the fulfillment of tasks
  • Transfer of information, if possible, face-to-face
  • The most important measure of progress is the functionality of the software
  • Maintaining a steady pace of work by clients, developers and users for sustainable development
  • Constant attention to technical excellence and good design
  • Simplicity is essential ( KISS principle )
  • The best architectures, requirements and designs are created in self-organized teams
  • Self-reflection of the teams about their own behavior in order to adapt to increase effectiveness

The transition between principles and methods is fluid.

Agile methods

Agile methods should serve to keep the effort curve as flat as possible; d. That is, changes or new requirements should be able to be taken into account with little effort.

Examples of agile methods are:

Strictly speaking, agile method refers to an agility-oriented method for software development.

Agile processes

Well-known agile processes include:

Agile assessment

An agile assessment can provide information on the extent to which agile values ​​have been implemented in processes and methods.

With the Agility Index Measurements there is the suggestion to evaluate software projects in the same way as with CMMI using fixed factors. The similarly named Agility Measurement Index evaluates the development of software projects in five different dimensions (duration, risk, inventiveness, effort and interaction). Furthermore, there are agile self-assessments to determine whether a team works in an agile way (Nokia test, 42-point test, Karlskrona test).

Critical consideration

The main reasons for agile approaches are that the goals and the environment (people involved, market requirements, technical environment / interfaces) change in the course of the project. The agile methods are therefore particularly suitable for reacting to changed requirements, since the development cycles are usually short. The requirements are often only briefly described and only formulated shortly before implementation and testing begin. Due to the short periods of time, (subsequent) changes to the requirements are relatively easy.

The Rational Unified Process (RUP) is seen by many representatives of agile methods (many of them have signed the Agile Manifesto ) as a non-agile, heavyweight process. However, this is controversial. An agile variant of RUP was developed with the Agile Unified Process . Neither the V-Modell nor RUP prohibit the use of agile elements such as rapid prototyping ; neither before nor during the requirements definition or design phases .

Plan-driven process models also regulate how changes in the project can be taken into account; although the effort and the required documentation are comparatively higher.

Clear content-related specifications (specifications) are difficult with an agile approach, as the requirements are by definition only developed during the project term.

Agile methods are sometimes mistakenly viewed as a panacea for project problems. Obstacles to a successful project (e.g. conflicts of interest or goals, lack of support from the client or sponsor) can apply to both agile and traditional processes.

The Status Quo (Scaled) Agile 2020 study by the Koblenz University of Applied Sciences showed an improved performance of agile methods compared to classic project management in almost all dimensions and in the overall assessment. It was Scrum as particularly successful.

literature

Web links

Wiktionary: agile  - explanations of meanings, word origins, synonyms, translations

Individual evidence

  1. Agile software development . In: Gabler Wirtschaftslexikon ; accessed on July 15, 2020
  2. ^ Fidelity - The Lost Dimension of the Iron TriangleAvailAgility. In: AvailAgility. December 22, 2009, accessed March 3, 2017 .
  3. Gerald M. Weinberg , as quoted in Craig Larman, Victor R. Basili: Iterative and Incremental Development: A Brief History . In: IEEE Computer . 36, No. 3, June 2003, pp. 47-56. doi : 10.1109 / MC.2003.1204375 . "Although many view iterative and incremental development as a modern practice, its application dates as far back as the mid-1950s." "We were doing incremental development as early as 1957 in Los Angeles, under the direction of Bernie Dimsdale at 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 ... 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.' "
  4. ^ Evolutionary Project Management (Original page, external archive) . Gilb. Archived from the original on March 27, 2016. Retrieved April 30, 2017.
  5. ^ Evolutionary Project Management (New page) . Gilb. Retrieved April 30, 2017.
  6. ^ EA Edmonds: A Process for the Development of Software for Nontechnical Users as an Adaptive System . In: General Systems . 19, 1974, pp. 215-18.
  7. ^ Tom Gilb: Evolutionary development . In: ACM SIGSOFT Software Engineering Notes . 6, No. 2, April 1, 1981, p. 17. doi : 10.1145 / 1010865.1010868 .
  8. nku.edu (PDF)
  9. 1st Annual State of Agile ™ Report to 13th Annual State of Agile ™ Report
  10. 7th Annual State of Agile Development Survey .
  11. ^ The Agile Alliance: What is Agile Software Development? Retrieved March 25, 2018 .
  12. ^ Manifesto for Agile Software Development. Retrieved July 15, 2020 .
  13. Principles behind the Agile Manifesto
  14. David Bock's weblog . Jroller.com. Archived from the original on January 11, 2006. Retrieved July 15, 2020.
  15. Subhajit Datta: Agility Measurement Index: A Metric for the Crossroads of Software Development Methodologies . ACM, New York NY 2006, ISBN 1-59593-315-8 , pp. 271-273 , doi : 10.1145 / 1185448.1185509 .
  16. ^ Nokia test, Scrum specific
  17. Kelly Waters: How Agile Are You? (Take This 42 Point Test). (No longer available online.) January 28, 2008, archived from the original on May 5, 2014 ; accessed on July 15, 2020 (English).
  18. ^ Karlskrona test, generic agile adoption
  19. XP and RUP - do they go together? (PDF; 139 kB)
  20. ^ The Agile Unified Process
  21. Status Quo (Scaled) Agile 2020. Koblenz University, accessed on July 20, 2020 .