Ch.2. Agile Development

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 27

Ch.no. 2. Agile development.

-By Pooja Bahirat.


What is agility?
•The capability to manage various kinds of changes during the development
process.

•Agile methods are one of the most important developments in S.E.

•It aims to provide customer satisfaction and early software delivery


through incremental approach and simplicity of overall software
development process.

•Agile methods are developed in order overcome the weaknesses of the


software engineering methods.

•It is a set of methodologies which help the software development team


think and work efficiently.
Agile process
As customer satisfactions is the highest priority, agile process
uses the incremental and iterative approach to software
development through customer feedback.

Each iteration last from one to four weeks, this model is


then reviewed by the customer and based on the customer
feedback the next version of the model is developed.

There are 3 keys assumption which make agile


development for a success.

1. It is not easy to forecast the development in


advance for any of the requirement which is going
to change or which will not change.
2. In any agile process project the software design
and construction are always in sequence, this will
help in getting things done faster but will be difficult
to determine how much time required in each
phase.

3. From the planning point of view activities like analysis,


design, construction and testing are never predictable as
they also used prototyping model.
Agility principles

To achieve
agility there • The highest priority is customer satisfaction
are 12 with a continue delivery of a valuable software.
• Changing the requirement are welcome at any
principles stage of development.
which still • Operational or working part of software will be
serves is a delivered frequently within weeks of starting it.
• Customer and development team should work
good agile together on day to day bases to complete the
model to software fast.
workout. This • Project has to build around motivated
individuals and support them by giving good
are also called work environment.
as agility
principles.
Face to face conversation is the best way to communication
within the team.

Primary major progress is the working software.

Sustainable development must be part of agile process.

Agility can be increase by giving continuous attention to


technical excellence and good design enhances agility.

Simplicity is essential, that will focus on work that is not done.

Self organizing team are essential to bring out best design


architecture and requirement.

Team reflects about how to increase the effectiveness at


regular time interval and then adjust its behavior accordingly.
Advantages of agile
development
• Frequent and early delivery of working software improves
customer’s trust satisfaction.
• As customer is involved from the beginning till the end of
project, it helps to accommodating changes required at every
stage of development.
• Constant interaction among developers, testers and
stakeholders leads to development of quality system.
• It provides continuous focus towards technical excellence and
good design.
• It helps in buildings self-organized, motivated development
teams.
• It delivers high-quality software to the customer.
Politics of agile development.
• The evolution and increasing change in technology have introduced a
new methodology of software development which is ‘Agile’.
• It is mainly used for large and complex system.

• We cannot restrict requirements at early stage of development


because of changing business needs. So we can’t apply traditional
software development approach here.
• Both traditional software development and agile development
approaches have strengths and weakness of their own.
• The important thing is to gain customers satisfaction by delivering
quality software .
Human factors

Competence : All agile team members should have the


technical skills and knowledge required for software
development, so should be trained accordingly.

Common focus: Though the team members are working on


different task, the ultimate goal for all should be to
develop working software increment as deliverable to the
customer.
Collaboration: all team members should work in
collaboration with each other and with the stakeholder.

Decision making ability : The agile team should have right


to take decisions regarding the technical and project
issues.
Fuzzy problem-solving ability : The team should be able to handle
ambiguity related to the changes required to accommodate.

Mutual trust and respect: team members should respect and trust
each others.

Self-organization: The agile team should organize itself for:

a. The work assigned.

b. Accommodation of local environment and

c. Delivery of software increment in time.

The team should be committed from the work assigned.


Extreme programming (xp)
• Extreme programming is one of the popular agile development
frameworks/models. It was developed by Kent Beck.
• The main goal of XP is to develop a software which can be changed
and extended easily.
• XP uses set of values, practices and principles.
• To guide the team, XP provides values and practices.

4.1 XP Values:
1. Communication: Most project fails because of poor communication.
So implemented practices that force communication in a positive
fashion.
2. Simplicity: Develop the simplest product that meets the customer’s
needs.
3. Feedback : Developers must obtain and value feedback from the
customer, from system, and from each other.
4. Courage and discipline : Be prepared to make hard decisions
that support the other principles and practices.
5. Respect: The Agile XP team gains respect among stakeholders
and members by following the above values. Respect for XP
process also grows as and when the team delivers increment
successfully.
4.2 XP Process
The Four keys activities are involved in XP given as follow:
1. Planning.
2. Design.
3. Coding.
4. Testing.
A) Planning:
a) User Stories: It trying to describe the required
output,features,functionality that is to be build. The stories are
written by the customer and also assigns the values i.e. priority.
b) Cost evaluation: The developer will examined the user stories and
assigned the cost. If the time of development exceeds three
weeks then the user is asked to split the story into smaller one
and cost assessment is done again.
c) Accommodating changes: New stories can be added and existing
stories can be removed at any time.
d) Deciding new release: Customer and developer comes together and decide
on stories to be clubbed together in next increment, date of release etc.
e) Computing Project Velocity: The number of customer stories implemented
in the first release. It is used for determining the delivery dates, schedules of
next releases and also for checking whether over commitment is happening
over the entire project.

B) Design :
i. KIS(Keep It Simple) principle: Xp tries to focus on designing the system as per
the User Stories. It depresses design of extra functionalities required in future
and insists of keeping the design as simple as possible.
ii. Use of CRC cards: CRC cards are produced as outcome of XP design process.
These cards identify and design classes corresponding to current
release/increments.
iii. Spike solution: In case of any difficulty in designing a particular story, XP
recommends creation of operational prototype of the story which is called
spike solution.
iv. Refactoring : It is a method of optimizing the design of a system. It
allows to modify code without changing its functionality or output.
C) Coding :
v. Test First programming:
• The team develops unit tests for each story before doing the actual
coding. Also it gives immediate feedback for the code developed and
ensure quality of code.
• This is also referred as Test-Driven Development(TDD).
i. Pair Programming: While writing the code two developers sit together
at a single station. It helps in developing better code and provides real
time quality assurance.
ii. Continuous Integration: when pair programmers complete their code,
it is integrated with the code developed by other pairs.
D) Testing:
iii. Unit testing : A unit test is a way of testing a unit - the smallest piece of
code that can be logically isolated in a system.
Acceptance Testing:
• It is also called as Customer Testing as it is performed with respect to the
User stories.
• Overall functionalities and features of the release is checked and the
feedback is given for updates to be incorporated in the next
release/increments.
4.3 Industrial XP
• Recent variation of XP called Industrial XP(IXP).
• The main difference between XP and IXP is that IXP tries to increase the
customer and management involvement through upgraded technical
practices.
• The 6 new practices used by IXP are:
1. Readiness Assessment.
2. Project Community.
3. Project Chartering.
4. Test-driven Management.
5. Retrospectives.
6. Continuous Learning.
Adaptive Software Development.(ASD)
• It is one of the techniques for developing complex software proposed by
‘Jim Highsmith’.
• It consists of 3 phases as follow:
1. Speculation.
2. Collaboration.
3. Learning.
1. Speculation : The requirements are gathered and plan for iterative and
adaptive release/increments is created . Plan reviewed and updated as per
feedback in each cycle.
2. Collaboration : People working together must respect individual strengths
and weakness. People in a team should criticize and assists each other
without any irritation.
3. Learning : Learning helps the team to understand and improve their
technical skill set, project and process understanding. The team learns
through focused groups, technical reviews and project investigations.
Scrum
Scrum uses easy and simple rules of communication which adapted by Agile teams.
The three main roles are Product Owner, Scrum Master and team members.

The product owner together with the team prioritize the requirement of system to
build Product backlog.

Software is built in an iterative manner , this is called as Sprint. Each sprint consist of
set of functionalities from the backlog, which has to implemented within certain time
period.

Scrum meeting are conducted everyday in order to asses progress and problems faced
during the development, this scrum meetings are led by scrum master.

At the end, sprint review is conducted, working model is demonstrated to owner and
customers, feedback received during the review is used to improve the next sprint.
Dynamic System Development Model (DSDM)
• The Dynamic System Development Method (DSDM)
is dynamic as it is a Rapid Application Development
method that uses incremental prototyping.
• DSDM is an iterative and incremental approach that
highlights customer involvement.
• Its goal is to deliver projects on time and on budget
while adjusting for changing requirements along the
way.
• This method is particularly useful for the systems to
be developed in short time span and where the
requirements cannot be decided at the start of the
application building.
DSDM defines three different • These three cycles are preceded
iterative cycles – by two additional life cycle
activities
• Functional model iteration : • Feasibility study : Identifies the
Here the working basic requirements and
model/increment of the system constraints related to the system
is produced ,this helps in getting to be built.
feedback from the client. • Business study : This phase
• Design and build iteration : identifies the business value of
Design is refined with every the application to be developed.
iteration in order to Architecture and maintainability
accommodate the essential and requirements are also finalized.
operational business values.
• Implementation : The latest
software increment developed is
always implemented in the
operational environment. Of the
user.
Agile Unified Process(AUP)

• Inception : Scope of the project is


AUP is a identified, Architecture of the system
simplified is prepared and the acceptance of the
version of stakeholder is obtained.
Rational • Elaboration : This phase focuses on
Unified
Process(RUP). the design of project. Complete plan
It is mainly for project is prepared.
divided into 4 • Construction : This phase focuses on
activities as actual implementation.
follows: • Transition : In this phase, the system is
delivered to the stakeholder.
AUP iteration includes following activities as shown in figure above:
1. Modeling.
2. Implementation.
3. Testing.
4. Deployment.
5. Configuration and Project Management.
6. Environment Management.
1. Modeling : Models are designed for the system using UML.
2. Implementation : Coding is done for each model.
3. Testing : The code is tested to ensure correctness and expected
functionalities.
4. Deployment : It refers to the delivery of software increment
and accepting feedback from the end user for the same.
5. Configuration and Project Management : Configuration refers to
managing risk involved and changes required in the product.
Project management refers to coordinating overall team
activities, keeping track of project progress.
6. Environment management : It refers to coordinating
infrastructure i.e. tools and technologies available for
development to the team.

Instead of delivering the entire software at a time, AUP team


delivers software releases in the form of versions as version
1.0,version 2.0 ……. So on.

You might also like