Module 2
Agile Development
Dr. Mahendra Suryavanshi
MIE-SPPU Institute of Higher Education, Doha, Qatar.
Topics:
What is Agility?
Agile Process:
Agility Principles
Human Factors
Extreme Programming (XP):
XP Values
XP Process
Industrial XP
Other Agile Process Models:
Adaptive Software Development (ASD)
Scrum
Dynamic System Development Model (DSDM)
Agile Unified Process (AUP)
What is Agility?
Agility:
In software engineering, agility is the ability of a software development team to:
1) Respond effectively and rapidly to changes in the software being built.
2) Perform effective communication among all stakeholders.
3) Adopt the customer as a part of the development team.
4) Embrace an iterative process to ensure continuous software improvement.
5) Perform incremental delivery of working software.
What is Agility?
Agility Principles:
There are 12 agility principles to achieve agility:
1. The highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
2. Welcome changing requirements, even late in development.
3. Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shorter timescale.
4. Customer, business people and developers must work together daily throughout the
project.
5. Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.
What is Agility?
Agility Principles:
There are 12 agility principles to achieve agility:
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity is the art of maximizing the amount of work to be done.
11. The best architectures, requirements, and designs emerge from self–organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
Advantages of Agile Development:
Frequent delivery of functionalities
Face-to-face communication with customer
Applying rapid changes to the software
Less development time
Disadvantages of Agile Development :
Less documentation
Maintenance
Extreme Programming (XP):
Extreme Programming (XP) is the most widely used approach/methodology to agile
software development.
As in conventional approach, a developer focuses on the framework activities like
planning, design, coding and testing, the XP also has set of rules and practices.
XP focuses on delivering high-quality software through frequent and continuous
feedback, collaboration, and adaptation.
XP emphasizes a close working relationship between the development team, the
customer, and stakeholders.
XP supports frequent releases of small software functionalities to customers in short
development cycles.
XP emphases on rapid, iterative development and deployment.
Extreme Programming (XP):
XP Values:
A set of five values that establish a foundation for all work performed as part of XP.
Communication:
The effective and frequent communication must be established between software
developers and other stakeholders to convey the important concepts and to get
important feedback.
Simplicity:
XP restricts developers to design only for immediate needs, rather than consider future
needs. The intent is to create a simple design that can be easily implemented in code.
Feedback:
The frequent feedback for the software product can be obtained from the
developers of the software, customers and other software team members.
Courage:
An agile XP team must have the discipline (courage) to design the system today,
recognizing that future requirements may change dramatically, thereby demanding
substantial rework of the design and implemented code.
Extreme Programming (XP):
XP Values:
A set of five values that establish a foundation for all work performed as part of XP.
Respect:
By following each of above XP values, the agile team inculcates respect among its
team members, between other stakeholders and indirectly, for the software itself.
Extreme Programming (XP):
The XP Process:
Extreme Programming uses an object-oriented approach.
XP process encompasses a set of rules and practices that occur within the context of
four framework activities: planning, design, coding, and testing.
Extreme Programming (XP):
The XP Process:
Planning:
Customer creates the set of stories (called as user stories) that describes required
functionality for the software to be built.
The customer assigns a value (i.e., a priority) to the story based on the overall business
value of the feature or function.
Members of the XP team then assess each story and assign a cost (measured in
development weeks) to it.
After the first project release (also called a software increment) has been delivered,
the XP team computes project velocity.
Project velocity is the number of customer stories implemented during the first release.
As development work proceeds, the customer can add stories, change the value of
an existing story, split stories, or eliminate them.
The XP team then reconsiders all remaining releases and modifies its plans
accordingly.
Extreme Programming (XP):
The XP Process:
Design:
XP design rigorously follows the KIS (keep it simple) principle.
XP encourages the use of CRC cards as an effective mechanism for thinking about
the software in an object-oriented context.
CRC (class-responsibility-collaborator) cards identify and organize the object-oriented
classes that are relevant to the current software increment.
The CRC cards are the only design work product produced as part of the XP process.
In case a complex design problem is encountered, an immediate operational
prototype (called spike solution) is created for that complex design problem.
The spike solution is immediately implemented and evaluated.
Extreme Programming (XP):
The XP Process:
Coding:
Recommends the construction of a series of unit tests for each of the stories before
coding starts.
Once the code is complete, it can be unit-tested immediately.
A key concept during the coding activity (and one of the most talked about aspects
of XP) is pair programming.
XP recommends that two people work together (pair programming) at one computer
workstation to create code for a story.
Pair programming helps checking each other work hence supports real time problem
solving and real time quality assurance.
Once pair programmers complete their work, the code they develop is integrated
with the work of others.
This continuous integration strategy helps to avoid compatibility and interfacing
problems.
Extreme Programming (XP):
The XP Process:
Testing:
Integration and validation testing of the system occurs on daily basis.
This provides the XP team with a continual indication of progress and can raise
warning flags early if things go wrong.
XP acceptance tests, also called customer tests, are specified by the customer.
Acceptance tests are carried out by customer to review overall system features and
functionality.
Acceptance tests are derived from user stories.
Other Agile Process Models:
Many agile process models have been proposed and are in use across the
industry.
Among the most common are:
Scrum
Adaptive Software Development (ASD)
Scrum
Scrum is an agile process model which is used for developing the complex and large
software systems.
Scrum is lightweight, iterative and incremental framework.
Scrum breaks down the development phases into stages or cycles called sprints.
Scrum
Scrum process model has following development activities:
Backlog:
It is basically list of all project requirements or features.
The items can be included in the backlog list at any time.
The product manager analyses this list and updates the priorities as per the
requirements.
Sprints:
These are the small work units that are needed to achieve the requirements
mentioned in the backlogs.
Typically, the sprints have fixed duration or time box (1 weeks to 4 weeks).
Thus, sprints allow the team members to work in stable and short-term environment.
Scrum
Scrum meetings:
Scrum meetings are short (typically 15 minutes) meetings held daily by the Scrum team.
Three key questions are asked and answered by all team members:
What did you do since the last team meeting?
What obstacles are you encountering?
What do you plan to accomplish by the next team meeting?
A team leader, called a Scrum master, leads the meeting and assesses the responses
from each team member.
The Scrum meeting helps the team to uncover potential problems as early as possible.
Demos:
Demonstrate and deliver the software increment to the customer after every sprint.
The implemented small software functionality is evaluated by the customer.
Note that demo focuses on only implemented functionalities and not all the planned
functionalities of the software product.
Adaptive Software Development (ASD)
ASD model is useful for building complex systems using iterative approach.
The focus of this method is on working in collaboration and team self-organization.
The cycle of ASD consist of three phases like:
1. Speculation
2. Collaboration
3. Learning
Adaptive Software Development (ASD)
1. Speculation:
During speculation, the project is initiated.
In this phase adaptive cycle planning is conducted.
In adaptive cycle planning mainly three types of information are used such as:
i. Customer’s mission statements
ii. Project constraints (e.g., delivery dates, budget, risks)
iii. Basic requirement of project
This phase is used to define the set of release cycles (software increments) that will be
required for the project.
Based on information obtained at the completion of the first cycle, the plan is
reviewed and adjusted
Adaptive Software Development (ASD)
2. Collaboration:
The motivated people collaborate to develop the desired software product.
In this phase collaboration among the members of the development team is a key
factor.
For successful collaboration and coordination, it is necessary to have following
qualities in every individual:
Criticize without animosity.
Assist each other work without resentment.
Work as hard as or harder than they do.
Possess the skill set to contribute to the work at hand.
Communicate problems or concerns in a way that leads to effective action.
Adaptive Software Development (ASD)
3. Learning:
Members of an ASD team begin to develop the components and test those
components.
This phase emphasizes on learning new skills and techniques.
There are three ways by which the team members learn:
Focus Group:
The feedback from the end-user is obtained about the software component being
developed.
Formal Technical Review:
This review for software components is conducted for better quality.
Postmortems:
The team analyses its own performance and makes appropriate improvements.