software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.
4. Principle or Practice Description
Incremental Planning Requirements are recorded on story cards and
stories to be included in a release are determined by
the time available and their relative priority.The
developers break these stories into ‘tasks’
Small Releases The minimal useful set of functionality that provides
business value is developed first. Releases of the
system are frequent and incrementally add
functionality to the first release.
Simple Design Enough design is carried out to meet the current
requirements.
Test-First Development An automated unit test framework is used to write
tests for a new piece of functionality before that
functionality is implemented.
Refactoring All developers are expected to refactor the code as
soon as possible code improvements are found.This
keeps the code simple and maintainable.
Pair Programming Developers work in pairs, checking each other’s
work and providing support for a good job 4
5. Principle Description
Collective Ownership The pairs of developers work on all areas
of system so that no island of expertise
develop and all the developers own all
the code.
Continuous Integration As soon as work on a task is complete, it
is integrated to make whole system
complete.
Sustainable pace Large amount of overtime is not
considered acceptable as total effect is to
reduce code quality.
On-siteCustomer A representation of end user of the
system should be available full time for
XP team. In XP, customer is a member of
development team.
5
6. Adaptive Software Development has evolved from
RAD practices.
Adaptive Software Development is cyclical like the
Evolutionary model, with the phase names reflecting
the unpredictability in the complex systems.
The phases in theAdaptive
development life cycle are
Speculate
Collaborate
Learn
7. During speculation, the project is initiated and
adaptive cycle planning is conducted.
Uses project initiation information—the customer’s
mission statement, project constraints (e.g., delivery
dates or user descriptions), and basic requirements to
define the set of release cycles (software increments)
that will be required for the project.
Speculate encourages exploration and
experimentation.
Iterations with short cycles are encouraged.
8. Complex applications are not built, they evolve.
Requirement of a large volume of information to be collected,
analyzed, and applied to the problem
Require the ability to work jointly to produce results, share
knowledge or make decisions.
Portrays a balance between managing with traditional
management techniques and creating and maintaining the
collaborative environment needed for emergence
8
9. Vital for the success of the project. Team has to enhance their knowledge
constantly, using practices such as −
Technical Reviews (After each iteration)
People and Process Review (Retrospectives)
Customer Focus Group
Learn Cycles are based on the short iterations with design, build and
testing.
During these iterations the knowledge is gathered by making small
mistakes based on false assumptions and correcting those mistakes, thus
leading to greater experience and eventually mastery in the problem
domain.
9
11. Lean is an Agile methodology which can also be seen as a philosophy
The core idea is to maximize customer value while minimizing waste. Simply,
lean means creating more value for customers with fewer resources.
Eliminating waste along entire value streams, instead of at isolated points,
creates processes that need less human effort, less space, less capital, and less
time to make products and services at far less costs and with much fewer
defects, compared with traditional business systems.
11
12. EliminatingWaste
Everything not adding value to the customer is considered to be waste.This includes:
▪ unnecessary code and functionality
▪ delay in the software development process
▪ unclear requirements
▪ insufficient testing, leading to avoidable process repetition
▪ slow internal communication
▪ Defects and lower quality are waste
▪ Partially done coding eventually abandoned during the development process is waste
▪ Extra processes and features not often used by customers are waste.
So one should point out sources of waste and eliminate them.
12
13. Amplify Learning
Software development is a continuous learning process. The best approach
for improving a software development environment is to amplify learning.
The accumulation of defects should be prevented by running tests as soon as
the code is written.
The process of user requirements gathering could be simplified by presenting
screens to the end-users and getting their input.
Increasing feedback via short feedback sessions with customers helps when
determining the current phase of development and adjusting efforts for future
improvements.
13