Lecture-4 (1)
Lecture-4 (1)
Lecture: 4
Ms Shazia Yousaf
1
Adapting a Process Model
The process should be agile and adaptable to problems. Process
adopted for one project might be significantly different than a process
adopted from another project. (to the problem, the project, the team,
organizational culture). Among the differences are:
2
Prescriptive and Agile Process
Models
◦The prescriptive process models stress detailed
definition, identification, and application of process
activates and tasks. Intent is to improve system quality,
make projects more manageable, make delivery dates and
costs more predictable, and guide teams of software
engineers as they perform the work required to build a
system.
◦Unfortunately, there have been times when these
objectives were not achieved. If prescriptive models are
applied dogmatically and without adaptation, they can
increase the level of bureaucracy.
4
What is “Agility”?
Effective (rapid and adaptive) response to
change
Effective communication among all
stakeholders
5
Agility and the Cost of Change
6
An Agile Process
Is driven by customer descriptions of what is
required (scenarios)
Recognizes that plans are short-lived
Develops software iteratively with a heavy
emphasis on construction activities
Delivers multiple ‘software increments’
Adapts as changes occur
7
Agility Principles
1. Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in
development. Agile processes bind change for the
customer's competitive advantage.
3. Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the
shorter timescale.
4. 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.
8
Agility Principles
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.
9. Continuous attention to technical excellence and
good design enhances agility.
10. Simplicity – the art of maximizing the amount of
work not done – is essential.
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.
9
Human Factors
the process molds to the needs of
the people and team, not the other
way around
key traits must exist among the
people on an agile team and the
team itself:
◦ Competence.
◦ Common focus.
◦ Collaboration.
◦ Decision-making ability.
◦ Fuzzy problem-solving ability.
◦ Mutual trust and respect.
◦ Self-organization.
10
Examples of Agile
Development
11
Extreme Programming (XP)
The most widely used agile process
XP Planning
◦ Begins with the creation of “user stories”
◦ Agile team assesses each story and assigns a cost
◦ Stories are grouped together for a deliverable
increment
◦ A commitment is made on delivery date
◦ After the first increment “project velocity” is
used to help define subsequent delivery dates for
other increments
12
Extreme Programming (XP)
XP Design
◦ For difficult design problems, suggests the
creation of “spike solutions”—a design prototype
◦ Encourages “refactoring”—an iterative refinement
of the internal program design
XP Coding
◦ Encourages “pair programming”
XP Testing
◦ All unit tests are executed daily
◦ “Acceptance tests” are defined by the customer
and executed to assess customer visible
functionality
13
Extreme Programming (XP)
14
Adaptive Software Development
15
Scrum
Uses iterative development where each
30-day iteration is called a “sprint”.
16
Crystal
A collection of approaches based on the
notion that every project needs a unique set
of policies, conventions and methodologies.
It is believed that people have a major
influence on software quality, and thus the
quality of projects and processes improves
as the quality of the people involved is
improved.
Productivity increases through better
communication and frequent delivery.
17