Processes
Agile software development and project management incorporates adaptive methods and
practices based around a widely accepted conceptual framework for software engineering,
which seek to minimize project risk through short iterations, typically 1-4 weeks.
Each iteration includes planning, requirements analysis, design, development, testing
and documentation.
Agile methods seek to increase the level of communication between key stakeholders, users,
and developers, emphasizing face-to-face communication over written documents. Most agile
teams are located in a single open office. Agile methods also emphasize working software
as the primary measure of progress. Combined with the preference for face-to-face
communication, agile methods produce very little documentation relative to other methods.
This has resulted in invalid criticism of agile methods as being undisciplined.
Some of the principles behind the Agile Manifesto are:
-
Customer satisfaction by rapid, continuous delivery of useful software
-
Working software is delivered frequently (weeks rather than months)
-
Working software is the principal measure of progress
-
Even late changes in requirements are welcome
-
Close, daily, cooperation between business people and developers
-
Face-to-face conversation is the best form of communication
-
Projects are built around motivated individuals, who should be trusted
-
Continuous attention to technical excellence and good design
-
Simplicity
-
Self-organizing teams
-
Regular adaption to changing circumstances
Adaptive methods focus on adapting quickly to changing realities. When the requirements
of a project change, an adaptive team changes as well.
From a product perspective, agile methods are most suitable when requirements are
emergent and rapidly changing. From an organizational perspective, the suitability
of agile methods can be assessed by examining three key dimensions of an organization:
culture, people, and communication.
Some key success factors:
-
The culture of the organization must be supportive of negotiation
-
People must be trusted
-
Fewer but more competent people
-
Organizations must live with the decisions developers make
-
Organizations need to have an environment that facilitates rapid communication
between team members
A project or organization must right-size the process to their needs, as no one size
fits all. This is a requirement for any software engineering methodology used. The
methodology should adapt to an organizations business process. Adapting a process also
encourages the continuous improvement of a process in an organization.