Agile software development
Encyclopedia
Agile software development is a group of software development methodologies based on iterative and incremental development
Iterative and incremental development
Iterative and Incremental development is at the liver of a cyclic software development process developed in response to the weaknesses of the waterfall model...

, where requirements and solutions evolve through collaboration between self-organizing, cross-functional team
Cross-functional team
A cross-functional team is a group of people with different functional expertise working toward a common goal. It may include people from finance, marketing, operations, and human resources departments. Typically, it includes employees from all levels of an organization...

s. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle. The Agile Manifesto introduced the term in 2001.

Predecessors

Incremental software development methods have been traced back to 1957. In 1974, a paper by E. A. Edmonds introduced an adaptive software development process.

So-called lightweight software development methods evolved in the mid-1990s as a reaction against heavyweight methods, which were characterized by their critics as a heavily regulated, regimented, micromanaged
Micromanagement
In business management, micromanagement is a management style where a manager closely observes or controls the work of her or his subordinates or employees...

, waterfall model
Waterfall model
The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation and Maintenance.The waterfall...

 of development. Proponents of lightweight methods (and now agile methods) contend that they are a return to development practices from early in the history of software development.

Early implementations of lightweight methods include Scrum
Scrum (development)
Scrum is an iterative, incremental framework for project management often seen in agile software development, a type of software engineering....

 (1995), Crystal Clear
Crystal Clear (software development)
Crystal Clear is a member of the Crystal family of methodologies as described by Alistair Cockburn and is considered an example of an agile or lightweight methodology....

, Extreme Programming
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

 (1996), Adaptive Software Development
Adaptive Software Development
Adaptive Software Development is a software development process that grew out of rapid application development work by Jim Highsmith and Sam Bayer...

, Feature Driven Development
Feature Driven Development
Feature-driven development is an iterative and incremental software development process. It is one of a number of Agile methods for developing software and forms part of the Agile Alliance. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are all...

, and Dynamic Systems Development Method
Dynamic Systems Development Method
Dynamic systems development method is an agile project delivery framework, primarily used as a software development method. DSDM was originally based upon the rapid application development method. In 2007 DSDM became a generic approach to project management and solution delivery...

 (DSDM) (1995). These are now typically referred to as agile methodologies, after the Agile Manifesto published in 2001.

Agile Manifesto

In February 2001, 17 software developers met at the Snowbird, Utah
Snowbird, Utah
Snowbird is an unincorporated area based in Little Cottonwood Canyon in the Wasatch Range of the Rocky Mountains in Salt Lake County, Utah, U.S. It is most famous for Snowbird Ski and Summer Resort, an alpine skiing and snowboarding area, which opened in December 1971.- History :Snowbird is a...

 resort, to discuss lightweight development methods. They published the Manifesto for Agile Software Development to define the approach now known as agile software development. Some of the manifesto's authors formed the Agile Alliance, a nonprofit organization that promotes software development according to the manifesto's principles.

The Agile Manifesto reads, in its entirety, as follows:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan


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


The meanings of the manifesto items on the left within the agile software development context are described below.
Individuals and Interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming
Pair programming
Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, types in code while the other, the observer , reviews each line of code as it is typed in...

.

Working software – working software will be more useful and welcome than just presenting documents to clients in meetings.

Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.

Responding to change – agile development is focused on quick responses to change and continuous development.


Twelve principles underlie the Agile Manifesto, including:
  • Customer satisfaction by rapid delivery of useful software
  • Welcome changing requirements, even late in development
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Sustainable development, able to maintain a constant pace
  • Close, daily co-operation between business people and developers
  • Face-to-face conversation is the best form of communication (co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances


In 2005, a group headed by Alistair Cockburn
Alistair Cockburn
Alistair Cockburn is one of the initiators of the agile movement in software development, helping write theManifesto for Agile Software Development in 2001 and the agile PM Declaration of Interdependence in 2005...

 and Jim Highsmith
Jim Highsmith
James A. Highsmith III is an American software engineer and author of books in the field of software development methodology. He is the creator of Adaptive Software Development, described in his 1999 book "Adaptive Software Development", and winner of the 2000 Jolt Award, and the Stevens Award in...

 wrote an addendum of project management
Project management
Project management is the discipline of planning, organizing, securing, and managing resources to achieve specific goals. A project is a temporary endeavor with a defined beginning and end , undertaken to meet unique goals and objectives, typically to bring about beneficial change or added value...

 principles, the Declaration of Interdependence
PM Declaration of Interdependence
The PM Declaration of interdependence is a set of six management principles initially intended for project managers of Agile Software Development projects...

, to guide software project management according to agile development methods.

Characteristics


There are many specific agile development methods. Most promote development, teamwork, collaboration, and process adaptability throughout the life-cycle of the project.

Agile methods break tasks into small increments with minimal planning and do not directly involve long-term planning. Iterations are short time frames (timeboxes) that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle, including planning, requirements analysis
Requirements analysis
Requirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users...

, design
Software design
Software design is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution...

, coding
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

, unit test
Unit test
In computer programming, unit testing is a method by which individual units of source code are tested to determine if they are fit for use.A unit is the smallest testable part of an application. In procedural programming a unit could be an entire module but is more commonly an individual function...

ing, and acceptance test
Acceptance test
In engineering and its various subdisciplines, acceptance testing is a test conducted to determine if the requirements of a specification or contract are met...

ing when a working product is demonstrated to stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. Stakeholders produce documentation as required. An iteration might not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs
Software bug
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...

) at the end of each iteration. Multiple iterations might be required to release a product or new features.

Team composition in an agile project is usually cross-functional and self-organizing, without consideration for any existing corporate hierarchy or the corporate roles of team members. Team members normally take responsibility for tasks that deliver the functionality an iteration requires. They decide individually how to meet an iteration's requirements.

Agile methods emphasize face-to-face communication over written documents when the team is all in the same location. Most agile teams work in a single open office (called a bullpen), which facilitates such communication. Team size is typically small (5-9 people) to simplify team communication and team collaboration. Larger development efforts can be delivered by multiple teams working toward a common goal or on different parts of an effort. This might require a coordination of priorities across teams. When a team works in different locations, they maintain daily contact through videoconferencing
Videoconferencing
Videoconferencing is the conduct of a videoconference by a set of telecommunication technologies which allow two or more locations to interact via two-way video and audio transmissions simultaneously...

, voice, e-mail, etc.

No matter what development disciplines are required, each agile team will contain a customer representative
Customer representative
A customer representative is an individual who represents a community that intends to purchase a product. The term is most often applied to a representative of a company who works closely with a producer or developer to clarify specifications for a product or service. The term is used in software...

. This person is appointed by stakeholders to act on their behalf and makes a personal commitment to being available for developers to answer mid-iteration problem-domain questions. At the end of each iteration, stakeholders and the customer representative review progress and re-evaluate priorities with a view to optimizing the return on investment
Return on investment
Return on investment is one way of considering profits in relation to capital invested. Return on assets , return on net assets , return on capital and return on invested capital are similar measures with variations on how “investment” is defined.Marketing not only influences net profits but also...

 (ROI) and ensuring alignment with customer needs and company goals.

Most agile implementations use a routine and formal daily face-to-face communication among team members. This specifically includes the customer representative and any interested stakeholders as observers. In a brief session, team members report to each other what they did the previous day, what they intend to do today, and what their roadblocks are. This face-to-face communication exposes problems as they arise.

Agile development emphasizes working software as the primary measure of progress. This, combined with the preference for face-to-face communication, produces less written documentation than other methods. The agile method encourages stakeholders to prioritize "wants" with other iteration outcomes, based exclusively on business value
Business Value
In management, business value is an informal term that includes all forms of value that determine the health and well-being of the firm in the long-run...

 perceived at the beginning of the iteration (also known as value-driven
Value-driven design
Value-driven design is a systems engineering strategy based on microeconomics which enables multidisciplinary design optimization. Value-driven design is being developed by the American Institute of Aeronautics and Astronautics, through a program committee of government, industry and academic...

).

Specific tools and techniques, such as continuous integration
Continuous integration
In software engineering, continuous integration implements continuous processes of applying quality control — small pieces of effort, applied frequently...

, automated or xUnit test
XUnit
Various code-driven testing frameworks have come to be known collectively as xUnit. These frameworks allow testing of different elements of software, such as functions and classes...

, pair programming
Pair programming
Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, types in code while the other, the observer , reviews each line of code as it is typed in...

, test-driven development
Test-driven development
Test-driven development is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new...

, design patterns
Design pattern (computer science)
In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that...

, domain-driven design
Domain-driven design
Domain-driven design is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts...

, code refactoring
Refactoring
Code refactoring is "disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior", undertaken in order to improve some of the nonfunctional attributes of the software....

 and other techniques are often used to improve quality and enhance project agility.

The Four Phases of Traditional Software Development

Unlike the agile software development model, the traditional waterfall model
Waterfall model
The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation and Maintenance.The waterfall...

 of software design contains four distinct phases.
  1. Business requirements. The first step in the traditional software development process is to identify business requirements as well as the scope of the release. It encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users.
  2. Architecture and design. The goal of the architecture and design phase is to try to identify an architecture that has a good chance of working. The architecture is often defined using free-form diagrams which explore the technical infrastructure, and the major business entities and their relationships. The design is derived in a modeling session, in which issues are explored, until the team is satisfied that they understand what needs to be delivered.
  3. Development. The development phase produces code in an environment that is specific to the culture of the development team and the skills of the individuals. In large projects the tasks are structured and distributed to teams. In small projects, or within smaller teams, the tasks are distributed according to team culture and skills. Development continues until goals or milestones are reached.
  4. Testing, delivery, and feedback. Testing is ongoing at the local level and becomes more structured on larger scales and as the project approaches delivery. In large projects, the testing is formalized. The customer is engaged in testing and feedback cycles when the development teams are relatively convinced that the software meets the requirements.


One of the similarities of the agile and traditional methods is to conduct the testing of the software as it is being developed. The unit testing is performed from the developer’s perspective. and the acceptance testing is conducted from the customer’s perspective. The key difference is that in the agile method, the customer and developers are in close communication, whereas in the traditional method, the customer is initially represented by the requirement and design documents.

Comparison with other methods

Agile methods are sometimes characterized as being at the opposite end of the spectrum from plan-driven or disciplined methods. Agile teams may, however, employ highly disciplined formal methods
Formal methods
In computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems...

. A more accurate distinction is that methods exist on a continuum from adaptive to predictive. Agile methods lie on the adaptive side of this continuum.
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 will have difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method will be about what will happen on that date. An adaptive team cannot report exactly what tasks are being done next week, but only which features are planned 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 planning the future in detail. A predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive teams have difficulty changing direction. The plan is typically optimized for the original destination and changing direction can require completed work to be started over. Predictive teams will often institute a change control board
Change control board
In software development, a Change Control Board or Software Change Control Board is a committee that makes decisions regarding whether or not proposed changes to a software project should be implemented. The change control board is constituted of project stakeholders or their representatives...

 to ensure that only the most valuable changes are considered.

Formal methods, in contrast to adaptive and predictive methods, focus on computer science theory with a wide array of types of provers. A formal method attempts to prove the absence of errors with some level of determinism. Some formal methods
Formal methods
In computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems...

 are based on model checking
Model checking
In computer science, model checking refers to the following problem:Given a model of a system, test automatically whether this model meets a given specification....

 and provide counter examples for code that cannot be proven. Generally, mathematical models (often supported through special languages - see SPIN model checker
SPIN model checker
SPIN is a general tool for verifying the correctness of distributed software models in a rigorous and mostly automated fashion. It was written by Gerard J. Holzmann and others in the original Unix group of the Computing Sciences Research Center at Bell Labs, beginning in 1980...

) map to assertions about requirements. Formal methods are dependent on a tool-driven approach and can be combined with other development approaches. Some provers do not easily scale. Like agile methods, manifestos relevant to high-integrity software have been proposed in Crosstalk.

Agile methods have much in common with the Rapid Application Development
Rapid application development
Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself...

techniques from the 1980/90s as espoused by James Martin
James Martin (author)
James Martin is a British Information Technology consultant and author, who was nominated for a Pulitzer prize for his book, The Wired Society: A Challenge for Tomorrow .- Biography :...

 and others. In addition to technology-focused methods, customer- and design-centered methods, such as Visualization-Driven Rapid Prototyping developed by Brian Willison
Brian Willison
Brian Willison is the Executive Director of the Parsons Institute for Information Mapping at The New School.-Early life:...

, work to engage customers and end users to facilitate agile software development.

Agile methods

Well-known agile software development methods include:
  • Agile Modeling
    Agile Modeling
    Agile Modeling is a practice-based methodology for modeling and documentation of software-based systems. It is intended to be a collection of values, principles, and practices for Modeling software that can be applied on a software development project in a more flexible manner than traditional...

  • Agile Unified Process
    Agile Unified Process
    Agile Unified Process is a simplified version of the IBM Rational Unified Process developed by Scott Ambler. It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP...

     (AUP)
  • Dynamic Systems Development Method
    Dynamic Systems Development Method
    Dynamic systems development method is an agile project delivery framework, primarily used as a software development method. DSDM was originally based upon the rapid application development method. In 2007 DSDM became a generic approach to project management and solution delivery...

     (DSDM)
  • Essential Unified Process
    Essential Unified Process
    The Essential Unified Process for software development, or EssUP, was invented by Ivar Jacobson as an improvement on the Rational Unified Process. It identifies practices, such as use cases, iterative development, architecture driven development, team practices and process practices, which are...

     (EssUP)
  • Extreme Programming
    Extreme Programming
    Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

     (XP)
  • Feature Driven Development
    Feature Driven Development
    Feature-driven development is an iterative and incremental software development process. It is one of a number of Agile methods for developing software and forms part of the Agile Alliance. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are all...

     (FDD)
  • Open Unified Process (OpenUP)
  • Scrum
    Scrum (development)
    Scrum is an iterative, incremental framework for project management often seen in agile software development, a type of software engineering....

  • 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:

A process or capability in which human agents through responsive changes in, and dynamic interplays between contexts, intentions, and method fragments determine a system development approach for a specific project situation.


Potentially, almost all agile methods are suitable for method tailoring. Even the DSDM
Dynamic Systems Development Method
Dynamic systems development method is an agile project delivery framework, primarily used as a software development method. DSDM was originally based upon the rapid application development method. In 2007 DSDM became a generic approach to project management and solution delivery...

 method is being used for this purpose and has been successfully tailored in a CMM
Capability Maturity Model
The Capability Maturity Model is a development model that was created after study of data collected from organizations that contracted with the U.S. Department of Defense, who funded the research. This model became the foundation from which CMU created the Software Engineering Institute...

 context. Situation-appropriateness can be considered as a distinguishing characteristic between agile methods and traditional software development methods, with the latter being relatively much more rigid and prescriptive. The practical implication is that agile methods allow project teams to adapt working practices according to the needs of individual projects. Practices are concrete activities and products that are part of a method framework. At a more extreme level, the philosophy behind the method, consisting of a number of principles, could be adapted (Aydin, 2004).

Extreme Programming
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

 (XP) makes the need for method adaptation explicit. One of the fundamental ideas of XP is that no one process fits every project, but rather that practices should be tailored to the needs of individual projects. Partial adoption of XP practices, as suggested by Beck
Kent Beck
Kent Beck is an American software engineer and the creator of the Extreme Programming and Test Driven Development software development methodologies. Beck was one of the 17 original signatories of the Agile Manifesto in 2001....

, has been reported on several occasions. A tailoring practice is proposed by Mehdi Mirakhorli which provides sufficient roadmap and guideline for adapting all the practices. RDP Practice
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

 is designed for customizing XP. This practice, first proposed as a long research paper in the APSO workshop at the ICSE 2008 conference, is currently the only proposed and applicable method for customizing XP. Although it is specifically a solution for XP, this practice has the capability of extending to other methodologies. At first glance, this practice seems to be in the category of static method adaptation but experiences with RDP Practice says that it can be treated like dynamic method adaptation. The distinction between static method adaptation and dynamic method adaptation is subtle. The key assumption behind static method adaptation is that the project context is given at the start of a project and remains fixed during project execution. The result is a static definition of the project context. Given such a definition, route maps can be used in order to determine which structured method fragments should be used for that particular project, based on predefined sets of criteria. Dynamic method adaptation, in contrast, assumes that projects are situated in an emergent context. An emergent context implies that a project has to deal with emergent factors that affect relevant conditions but are not predictable. This also means that a project context is not fixed, but changing during project execution. In such a case prescriptive route maps are not appropriate. The practical implication of dynamic method adaptation is that project managers often have to modify structured fragments or even innovate new fragments, during the execution of a project (Aydin et al., 2005).

Software development life cycle

The agile methods are focused on different aspects of the software development life cycle. Some focus on the practices (extreme programming, pragmatic programming, agile modeling), while others focus on managing the software projects (the scrum approach). Yet, there are approaches providing full coverage over the development life cycle (dynamic systems development method, or DSDM, and the IBM Rational Unified Process, or RUP), while most of them are suitable from the requirements specification phase on (feature-driven development, or FDD, for example). Thus, there is a clear difference between the various agile software development methods in this regard. Whereas DSDM and RUP do not need complementing approaches to support software development, the others do to a varying degree. DSDM can be used by anyone (although only DSDM members can offer DSDM products or services). RUP, then, is a commercially sold development environment (Abrahamsson, Salo, Rankainen, & Warsta, 2002).

Measuring agility

While agility can be seen as a means to an end, a number of approaches have been proposed to quantify agility. Agility Index Measurements (AIM) score projects against a number of agility factors to achieve a total. The similarly named Agility Measurement Index, scores developments against five dimensions of a software project (duration, risk, novelty, effort, and interaction). Other techniques are based on measurable goals. Another study using fuzzy mathematics has suggested that project velocity can be used as a metric of agility. There are agile self-assessments to determine whether a team is using agile practices (Nokia test, Karlskrona test, 42 points test).

While such approaches have been proposed to measure agility, the practical application of such metrics has yet to be seen.

Historically, there is a lack of data on agile projects that failed to produce good results. Studies can be found that report poor projects due to a deficient implementation of an agile method, or methods, but none where it was felt that they were executed properly and failed to deliver on its promise. "This may be a result of a reluctance to publish papers on unsuccessful projects, or it may
in fact be an indication that, when implemented correctly, Agile Methods work."
However, there is agile software development ROI data available from the DACS ROI Dashboard.

Experience and reception

One of the early studies reporting gains in quality, productivity, and business satisfaction by using Agile methods was a survey conducted by Shine Technologies from November 2002 to January 2003. A similar survey conducted in 2006 by Scott Ambler, the Practice Leader for Agile Development with IBM Rational's Methods Group reported similar benefits. In a survey conducted by VersionOne (a provider of software for planning and tracking agile software development projects) in 2008, 55% of respondents answered that agile methods had been successful in 90-100% of cases. Others claim that agile development methods are still too young to require extensive academic proof of their success.

Suitability

Large-scale agile software development remains an active research area.

Agile development has been widely seen as being more suitable for certain types of environment, including small teams of experts.

Some things that may negatively impact the success of an agile project are:
  • Large-scale development efforts (>20 developers), though scaling strategies and evidence of some large projects have been described.
  • Distributed development efforts (non-colocated teams). Strategies have been described in Bridging the Distance and Using an Agile Software Process with Offshore Development
  • Forcing an agile process on a development team
  • Mission-critical systems where failure is not an option at any cost (e.g. software for surgical procedures).


The early successes, challenges and limitations encountered in the adoption of agile methods in a large organization have been documented.

In terms of outsourcing agile development, Michael Hackett, Sr. Vice President of LogiGear Corporation has stated that "the offshore team ... should have expertise, experience, good communication skills, inter-cultural understanding, trust and understanding between members and groups and with each other."

Risk analysis
Risk analysis (engineering)
Risk analysis is the science of risks and their probability and evaluation.Probabilistic risk assessment is one analysis strategy usually employed in science and engineering.-Risk analysis and the risk workshop:...

 can also be used to choose between adaptive (agile or value-driven) and predictive (plan-driven) methods.. Barry Boehm
Barry Boehm
Barry W. Boehm is an American software engineer, TRW Emeritus Professor of Software Engineering at the Computer Science Department of the University of Southern California, and known for his many contributions to software engineering.- Biography :...

 and Richard Turner
Richard Turner (software)
Richard Turner is a Distinguished Service Professor in the School of Systems and Enterprises of Stevens Institute of Technology in Hoboken, New Jersey...

 suggest that each side of the continuum has its own home ground, as follows:
Suitability of different development methods
Agile home ground Plan-driven home ground 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
Wirth's law
Wirth's law is a computing adage made popular by Niklaus Wirth in 1995:Wirth attributed the saying to Martin Reiser, who, in the preface to his book on the Oberon System, wrote: The hope is that the progress in hardware will cure all software ills...

Small number of developers Large number of developers Requirements that can be modeled
Culture that thrives on chaos Culture that demands order Extreme quality

Criticism

A common criticism of agile software development methods is that it is developer-centric rather than user-centric. Agile software development focuses on processes for getting requirements and developing code and does not focus on product design. Mike Gualtieri, principal analyst of agile software development at Forrester Research, published a widely read criticism stating that software developers are not coders, but experience creators.

See also

  • Agile testing
    Agile testing
    Agile testing is a software testing practice that follows the principles of agile software development. Agile testing does not emphasize testing procedures and focuses on ongoing testing against newly developed code until quality software from an end customer's perspective results...

  • Collaborative software development model
    Collaborative software development model
    The Collaborative software development model is a style of software development whose focus is on public availability and communication, usually via the Internet.The software development model began widespread adoption with the Linux kernel in 1991....

  • Lean Startup
    Lean Startup
    "Lean startup" is a term coined by Eric Ries, his method advocates the creation of rapid prototypes designed to test market assumptions, and uses customer feedback to evolve them much faster than via more traditional product development practices, such as the Waterfall model...

  • List of software development philosophies
  • Perpetual beta
    Perpetual beta
    Perpetual beta is the keeping of software or a system at the beta development stage for an extended or indefinite period of time. It is often used by developers when they continue to release new features that might not be fully tested. As a result, perpetual beta software is not recommended for...

  • Small-scale Project Management
    Small-scale project management
    Small-scale project management is the specific type of project management of small-scale projects. These projects are characterised by factors such as short duration; low person hours; small team; size of the budget and the balance between the time committed to delivering the project itself and the...

  • Software Craftsmanship
    Software Craftsmanship
    Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer...


Further reading


External links


The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK