Agile software development

Agile Software Development is the umbrella term for the use of agility (Latin agilis: zippy, mobile) in software development. Depending on the context, the term refers to portions of the software development - as in the case of Agile Modeling - or on the entire software development process - an example Extreme Programming be cited. Agile software development tries with little bureaucracy to manage a few rules and usually an iterative procedure.

Objective

The goal of agile software development is to make the software development process more flexible and thinner than is the case with the classical process models. You want to focus on the objectives to be achieved and to consider technical and social problems in software development more. Agile software development is a countermovement to the often considered to be heavy and bureaucratic traditional software development processes such as the Rational Unified Process or the V- model.

Historical Development

First approaches to agile software development can already be found in the early 1990s. Popularity reached agile software development for the first time in 1999, when Kent Beck and others published the first book about Extreme Programming. Interest in Extreme Programming paved the way for other agile processes and methods. The term for this type of agile software development was at a meeting in Utah selected in February 2001, ( lightweight engl.) to replace the previously common lightweight. At this meeting also the Agile Manifesto was (see below) formulated.

The end of 2005 was released by Forrester Research, a study that says that 14% of companies in North America and Europe to develop their software with the help of agile processes. A further 19 % think about the use by.

VersionOne found in their seventh annual survey on agile methodologies in 2013 that 84 % of businesses are already using agile processes.

Components of agile software development

Agile values ​​form the foundation. Agile principles are based on the agile values ​​and principles of action form. Agile methods are concrete process during software development, which is based on the values ​​and principles. The agile process is the combination of all methods and is used to agile software development.

Values

The values ​​of agile software development are the foundation. In February 2001, 17 initial signatories have these values ​​formulated as Agile Manifesto (English Manifesto for Agile Software Development Agile Manifesto or short ):

"We are uncovering better ways of Developing software by doing it and helping others do it. Through this work we have come to value:

That is, while there is value in the items on the right, we value the items on the left more. "

" We identify better ways of developing software by doing it yourself and help others to do it. Through our work we have come to the following conclusion:

This means that although the points on the right are quite important, we believe that the items on the left for more important. "

The manifesto indicates the authors and first signatories who are active in different fields of agile software development. The list of signatories includes thousands of people and continues to grow.

Agile principle

An Agile principle is a guiding principle for the agile work.

Sometimes also referred to as agile principles method. The actually incorrect use of the term method for principles used by the representatives of agile methods partly conscious. For heavy-weight processes principles are overlain by extensive methods descriptions and let the principles often forgotten. In addition, processes have been previously defined mainly on methods, not on principles. The collection of principles as methods to give more weight to the principles towards formal methods again. In the Agile Manifesto twelve principles are listed.

  • Of customer satisfaction through early and continuous delivery of valuable software
  • Agile processes use changes (even late in development ) for the competitive advantage of the customer.
  • Delivery of functioning software at regular, preferably short periods of time (a few weeks or months)
  • Almost daily collaboration of domain experts and developers during the project (eg: Common code ownership ( Collective code ownership) )
  • Provide the environment and support, which is required by motivated individuals for the task fulfillment
  • Information transfer where possible in face-to- face
  • The most important progress measure applies the functionality of the software
  • Maintaining a steady pace of work of contractors, developers and users for sustainable development
  • Continuous attention to technical excellence and good design
  • Simplicity is essential ( KISS principle )
  • Self-organization of teams in planning and implementing
  • Self-reflection of the teams to adapt their own behavior in terms of increase in efficiency

The transition between principles and methods is fluid.

Agile method

Strictly speaking, refers to an agile methodology aimed at agile method for software development.

A hallmark of agile methods is that they can serve in a process to keep the cost curve as flat as possible. As a guiding principle is: the more you work according to plan, the more you get what you planned, but not what you need. This results in some of the principles of agile modeling and extreme programmings.

Agile methods can be divided into two groups: the actual methods and the principles on which the methods are based.

Examples of agile methods:

  • Pair Programming
  • Test-driven development
  • Constant refactoring
  • Story Cards
  • Quick code reviews

Agile process

The aim of the procedure is to make the software development process more efficient by reducing bureaucracy and by greater attention to the human aspects.

Most agile processes underlies that they are trying to reduce the pure design phase to a minimum and as early as possible to get in the development process to executable software, which can then be submitted at regular, short intervals to the customer for common voting. In this way it should always be possible to flexibly respond to customer requests, so as to increase overall customer satisfaction. They are therefore a contrast to the traditional process models, such as the V- model or the Rational Unified Process ( RUP) dar.

All agile processes have in common that they use numerous methods to keep the cost curve as flat as possible. Meanwhile, there are a variety of agile processes. Among the best known include:

The Rational Unified Process (RUP ) is considered by many representatives of agile methods (many of them have the Agile Manifesto signed ) perceived as non- agile, heavy-weight process. However, this is controversial or has been attempted with the Agile Unified Process to develop an agile version of RUP.

Agile review

On the question of how agile values ​​were implemented in processes and methods, an agile evaluation can provide information.

With the so-called Agility Index Measurements there is the proposal to measure software projects as well as in CMMI based on fixed factors. The similarly named Agility Measurement Index evaluates the development of software projects in five different dimensions (duration, risk, invention, richness, complexity and interaction). Furthermore, there are agile self assessments to determine whether a team is working on agile manner (Nokia test, Karlskrona test).

Critical review

It is disputed whether the development process of software is so well understood that a planned production is possible: Critics argue that software is nothing more than " executable knowledge." Knowledge, however, can not make good engineering practice, how about a bridge or a skyscraper can be produced, but is found in a creative process. One reason for this is that both the targets and the environment ( people involved, market requirements, technical environment / interfaces) are flexible and may change over time.

The agile methods therefore are particularly well suited to respond to changing requirements, as the development cycles are not usually created from the outset long. The requirements are defined in a rule, only a brief description and formulated shortly before the start of implementation and test preparation. Due to the short periods, the requirements are relatively free of any future changes.

However, neither the V- model RUP still prohibit the use of agile elements, such as rapid prototyping; neither before nor during the requirements definition phase or design. Generally, projects in an agile approach is necessary, if only to the changes that inevitably brings a project to consider and integrate. Process models help regulated take these changes into the project.

In conclusion, the properties must be taken into account the agile approach sufficient. Clear content requirements ( specifications) are hardly possible because the requirements are developed, by definition, only for the duration of the project.

With the hype around agile methods, these are sometimes erroneously viewed as a panacea for project problems. Of course this is not so: The main barriers (see also project indicators ) apply to agile methods as well as traditional methods.

In particular, the use of agile methods is problematic when a project must meet clear (before) defined requirements and tight schedule or budget requirements subject. Here offer the traditional, engineering-based process models with clearly defined phases of great benefits. Agile methods are, however, good at soft and slightly formulated requirements, and a high level of external interference factors / market changes.

The Standish Chaos Report 2011 has found that projects that are created with agile methodologies have a significantly higher probability of being successfully completed. In applying the waterfall methodology are only 14 % successful, 57 % problematic and fail 29 % of the projects, so 42 % 49 % are in agile methodologies successfully, problematic, and only 9 % fail.

Demarcation

The term agility is also in the German literature - not clearly defined - on the presented here, from the American translated software engineering philosophy beyond.

Agile software development is for example not to be confused with IT agility, which refers to the adaptability of an enterprise IT.

34385
de