You are on page 1of 4

Agile principles[edit]

The Agile Manifesto is based on 12 principles:[9]


1. Customer satisfaction by rapid delivery of useful software
2. Welcome changing requirements, even late in development
3. Working software is delivered frequently (weeks rather than months)
4. Close, daily cooperation between business people and developers
5. Projects are built around motivated individuals, who should be trusted
6. Face-to-face conversation is the best form of communication (co-location)
7. Working software is the principal measure of progress
8. Sustainable development, able to maintain a constant pace
9. Continuous attention to technical excellence and good design
10.Simplicitythe art of maximizing the amount of work not doneis essential
11. Self-organizing teams
12.Regular adaptation to changing circumstances
13. Iterative, incremental and evolutionary
14. Most 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 cross-functional team working in all
functions: planning, requirements analysis, design, 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 project to adapt to changes quickly. An iteration might
not add enough functionality to warrant a market release, but the goal is to have an available
release (with minimal bugs) at the end of each iteration.[12] Multiple iterations might be
required to release a product or new features.
15. Efficient and face-to-face communication

16. No matter what development disciplines are required, each agile team will contain
a customer representative, e.g. Product Owner in Scrum. This person is appointed by
stakeholders to act on their behalf[13] and makes a personal commitment to being available
for developers to answer mid-iteration 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 (ROI) and ensuring alignment with customer needs and
company goals.
17. In agile software development, an information radiator is a (normally large) physical display
located prominently in an office, where passers-by can see it. It presents an up-to-date
summary of the status of a software project or other product. Very short feedback loop and
adaptation cycle
18. A common characteristic of agile development are daily status meetings or "stand-ups",
e.g. Daily Scrum (Meeting). 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. [16]
19. Quality focus
20. Specific tools and techniques, such as continuous integration, automated unit testing, pair
programming, test-driven development, design patterns, domain-driven design, code
refactoring and other techniques are often used to improve quality and enhance project
agility.

Iterative vs. Waterfall[edit]


One of the differences between agile and waterfall is that testing of the software is conducted at
different stages during the software development life-cycle. In the Waterfall model, there is always a
separate testing phase near the completion of an implementation phase. However, in Agile and
especially Extreme programming, testing is usually done concurrently with coding, or at least, testing
jobs start in the early days of iteration.

Continuous integration (CI) is the practice, in software engineering, of merging all developer
working copies with a shared mainline several times a day.
unit testing is a software testing method by which individual units of source code, sets of one or
more computer program modules together with associated control data, usage procedures, and
operating procedures, are tested to determine whether they are fit for use

Pair programming (sometimes referred to as peer programming) is an agile software


development technique in which two programmers work as a pair together on one workstation. One,
the driver, writes code while the other, theobserver, pointer or navigator,[1] reviews each line of
code as it is typed in. The two programmers switch roles frequently.
Test-driven development (TDD) is a software development process that relies on the repetition of a
very short development cycle: first the developer writes an (initially failing) automated test case that
defines a desired improvement or new function, then produces the minimum amount of code to pass
that test, and finally refactors the new code to acceptable standards.
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 source or machine code. It is a description or template for how to solve a problem that can be
used in many different situation
Code refactoring is the process of restructuring existing computer code changing the factoring
without changing its external behavior. Refactoring improves nonfunctionalattributes of the software.
Advantages include improved code readability and reduced complexity to improve source
code maintainability,

Agile methods[edit]
Well-known agile software development methods and/or process frameworks include:

Adaptive Software Development (ASD)

Agile Modeling

Agile Unified Process (AUP)

Crystal Clear Methods (Crystal Clear)

Disciplined Agile Delivery

Dynamic Systems Development Method (DSDM)

Extreme Programming (XP)

Feature Driven Development (FDD)

Lean software development

Kanban (development)

Scrum

Scrum ban

Kanban is a method for managing knowledge work with an emphasis on just-in-time delivery while
not overloading the team members
Adaptive software development (ASD) replaces the traditional waterfall cycle with a repeating
series of speculate, collaborate, and learn cycles.
Timeboxing allocates a fixed time period, called a time box, to each planned activity.
Scrum is an iterative and incremental agile software development framework for managing product
development. It defines "a flexible, holistic product development strategy where a development team
works as a unit to reach a common goal",
Sprint (or iteration) is the basic unit of development in Scrum. The sprint is a "timeboxed" effort; that
is, it is restricted to a specific duration.
Scrum Master, who is accountable for removing impediments to the ability of the team to deliver the
product goals and deliverables.
Scrum ban is an agile project management methodology. Also referred to as scrumban or scrumban it is a mix of Scrum and Kanban project management with aspects of both methodologies put
together. Scrum ban is meant for an unpredictable work environment, where plans and requirements
change often. It offers flexible project management for companies that are support and product
manufacturing focused

You might also like