3-Agile Software Development

Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

3/7/2023

CSC291: Software Engineering Concepts 1


Lecture #: 3
CDF Unit #: 1
Instructor:
Manzoor Ahmad
[email protected]

COMSATS University Islamabad,


Vehari Campus 1

Topics 2

 Agile Software Development: What is agility?


 Agility & the Cost of Change,
 Agile Process, and
 Agility Principles.

2
3/7/2023

Agile Software Development 3


 Agile software engineering represents a reasonable alternative to
conventional software engineering.
 It has been demonstrated to deliver successful systems quickly.
 Agile development might best be termed “software engineering lite.”
 The basic framework activities – communication, planning, modeling,
construction, and deployment – remain.
 But they morph into a minimal task set that pushes the project team toward
construction and delivery.
 The most important work product is an operational “software increment”
that is delivered to the customer on the appropriate commitment date.
 If the agile team agrees that process works, and team produces deliverable
software increments that satisfy the customer, you’ve done it right.

Agile Software Development 4

 Agile software development is a group of software development


methods based on iterative and incremental development, where
requirements and solutions evolve through collaboration between self-
organizing, cross-functional teams.
 Methods
 Iterative
 incremental
 It promotes adaptive planning, evolutionary development and delivery,
a time-boxed iterative approach, and encourages rapid and flexible
response to change.
 It is a conceptual framework that promotes foreseen interactions
throughout the development cycle.
3/7/2023

Agile Software Development 5

Iterative and Incremental development is at the heart of a cyclic


software development process developed in response to the
weaknesses of the waterfall model.
 It starts with an initial planning and ends with deployment with the
cyclic interactions in between.
Iterative and incremental development are essential parts of the
Rational Unified Process, Extreme Programming and generally
the various agile software development frameworks.
It follows a similar process to the “plan-do-check-act” cycle of
business process improvement.

Agile Software Development 6

Agile development can provide important benefits, but it may not be


applicable to all projects, all products, all people, and all situations.
In the modern economy, it is often difficult or impossible to predict
how a computer based system (e.g., a mobile application) will evolve
as time passes.
Market conditions change rapidly, end-user needs evolve, and new
competitive threats emerge without warning.
In many situations, you won’t be able to define requirements fully
before the project begins.
You must be agile enough to respond to a fluid business
environment.
3/7/2023

Agile Software Development What is Agility?


7

Agile software engineering combines a philosophy and a set of


development guidelines.
The philosophy encourages customer satisfaction and early
incremental delivery of software; small, highly motivated project
teams; informal methods; minimal software engineering work
products; and overall development simplicity.
The development guidelines stress delivery over analysis and design
(although these activities are not discouraged). Who does it ?
Software engineers and other project stakeholders (managers,
customers, end users) work together on an agile team—a team that is
self-organizing and in control of its own destiny. An agile team
fosters communication and collaboration among all who serve on it.

Agility & Cost of Change 8


 A usage scenario might have to be modified, a list of functions may be
extended, or a written specification can be edited. The costs of doing this
work are minimal, and the time required will not adversely affect the
outcome of the project. But what if we fast-forward a number of months?
 The team is in the middle of validation testing (something that occurs
relatively late in the project), and an important stakeholder is requesting a
major functional change.
 The change requires a modification to the architectural design of the
software, the design and construction of three new components,
modifications to another five components, the design of new tests, and so
on.
 Costs escalate quickly, and the time and effort required to ensure that the
change is made without unintended side effects are nontrivial (not small).
3/7/2023

Agility & Cost of Change 9

The conventional wisdom in software development is that the


cost of change increases nonlinearly as a project progresses.
It is relatively easy to accommodate a change when a software
team is gathering requirements (early in a project).
A well-designed agile process “flattens” the cost of change curve
allowing a software team to accommodate changes late in a
software project without dramatic cost and time impact.

Agility & Cost of Change 10


3/7/2023

What is an Agile Process? 11

Any agile software process is characterized in a manner that addresses a


number of key assumptions:
It is difficult to predict in advance which software requirements will
persist and which will change. It is equally difficult to predict how
customer priorities will change as the project proceeds.
For many types of software, design and construction are interleaved.
That is, both activities should be performed in tandem so that design
models are proven as they are created. It is difficult to predict how much
design is necessary before construction is used to prove the design.
Analysis, design, construction, and testing are not as predictable (from a
planning point of view) as we might like.

What is an Agile Process? 12

 How do we create a process that can manage unpredictability?


 The answer, as we have already noted, lies in process adaptability (to
rapidly changing project and technical conditions).
 An agile process, therefore, must be adaptable.
 But continual adaptation without forward progress accomplishes little.
 Therefore, an agile software process must adapt incrementally.
 To accomplish incremental adaptation, an agile team requires customer
feedback (so that the appropriate adaptations can be made).
 An effective catalyst for customer feedback is an operational prototype
or a portion of an operational system (incremental development
strategy).
3/7/2023

What is an Agile Process? 13

 Software increments (executable prototypes or portions of an


operational system) must be delivered in short time periods so
that adaptation keeps pace with change (unpredictability).
 This iterative approach enables the customer to evaluate the
software increment regularly, provide necessary feedback to the
software team, and influence the process adaptations that are
made to accommodate the feedback.

Agility Principles Principle 1


14
Our Highest Priority is to Satisfy the Customer through Early and
Continuous Delivery of Valuable Software
 Number of practices have significant impact upon quality of final system:
 Strong correlation between quality and early delivery of a partially functioning
system.
o The less functional the initial delivery, the higher the quality of the final delivery.
 Another strong correlation exists between final quality and frequently deliveries
of increasing functionality.
o The more frequent the deliveries, the higher the final quality.
 Agile processes deliver early and often.
 Rudimentary system first followed by systems of increasing functionality every
few weeks.
 Customers my use these systems in production, or
 May choose to review existing functionality and report on changes to be made.
 Regardless, they must provide meaningful feedback.
3/7/2023

Agility Principles Principle 2


15
Welcome Changing Requirements, even late in Development. Agile
Processes harness change for the Customer’s Competitive Advantage.
 This is a statement of attitude.
 Participants in an agile process are not afraid of change.
 Requirement changes are good;
 Mean team has learned more about what it will take to satisfy the
market.
 Agile teams work to keep the software structure flexible, so requirement
change impact is minimal.
 More so, the principles of object oriented design help us to maintain this
kind of flexibility.

Agility Principles Principle 3


16
Deliver Working Software Frequently (From a couple of weeks to a
couple of months with a preference to the shorter time scale)

 We deliver working software.


 Deliver early and often.
 Be not content with delivering bundles of documents, or plans.
 Don’t count those as true deliverables.
 The goal of delivering software that satisfies the customer’s needs.
3/7/2023

Agility Principles Principle 4


17
Business People and Developers Must Work Together Daily throughout
the Project

For agile projects, there must be significant and frequent interaction


between the
 customers,
 developers, and
 stakeholders.
An agile project must be continuously guided.

Agility Principles Principle 5


18
Build Projects around Motivated Individuals. (Give them the
environment and support they need, and trust them to get the job done)

 An agile project has people the most important factor of success.


 All other factors, process, environment, management, etc., are
considered to be second order effects, and are subject to change if they
are having an adverse effect upon the people.
 Example: if the office environment is an obstacle to the team, change the
office environment.
 If certain process steps are obstacles to the team, change the process
steps.
3/7/2023

Agility Principles Principle 6


19
The Most Efficient and Effective Method of Conveying Information to and
within a Development Team is face-to-face Communications
 In agile projects, developers talk to each other.
 The primary mode of communication is conversation.
 Documents may be created, but there is no attempt to capture all project
information in writing.
 An agile project team does not demand written specs, written plans, or
written designs.
 They may create them if they perceive an immediate and significant
need, but they are not the default.
 The default is conversation.

Agility Principles Principle 7


20

Working Software is the Primary Measure of Progress

 Agile projects measure their progress by measuring the amount


of working software.
 Progress not measured by phase we are in, or
 by the volume of produced documentation or
 by the amount of code they have created.
 Agile teams are 30% done when 30% of the necessary
functionality is working.
3/7/2023

Agility Principles Principle 8


21
Agile Processes promote sustainable development (The sponsors, developers,
and users should be able to maintain a constant pace indefinitely)

 An agile project is not run like a 50 yard dash; it is run like a marathon.
 The team does not take off at full speed and try to maintain that speed
for the duration.
 Rather they run at a fast, but sustainable, pace.
 Running too fast leads to burnout, shortcuts, and debacle.
 Agile teams pace themselves.
 They don’t allow themselves to get too tired.
 They don’t borrow tomorrow’s energy to get a bit more done today.
 They work at a rate that allows them to maintain the highest quality
standards for the duration of the project.

Agility Principles Principle 9


22
Continuous Attention to Technical Excellence and Good Design enhances
Agility

High quality is the key to high speed.


 The way to go fast is to keep the software as clean and robust as
possible.
 Thus, all agile team-members are committed to producing only the
highest quality code they can.
 They do not make messes and then tell themselves they’ll clean it
up when they have more time.
 Do it right the first time!
3/7/2023

Agility Principles Principle 10


23
Simplicity – the art of maximizing the amount of work not done – is
essential

Agile teams take the simplest path that is consistent with their goals.
 They don’t anticipate tomorrow’s problems and try to defend
against them today.
 Rather they do the simplest and highest quality work today,
confident that it will be easy to change if and when tomorrows
problems arise.

Agility Principles Principle 11


24
The Best Architectures, Requirements, and Designs emerge from Self-
Organizing Teams
 An agile team is a self organizing team.
 Responsibilities are not handed to individual team members from the
outside.
 Responsibilities are communicated to the team as a whole, and the
team determines the best way to fulfill them.
 Agile team members work together on all project aspects.
 Each is allowed input into the whole.
 No single team member is responsible for the architecture, or the
requirements, or the tests, etc.
 The team shares those responsibilities and each team member has
influence over them.
3/7/2023

Agility Principles Principle 12


25
At regular Intervals, the Team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly

An agile team continually adjusts its organization, rules,


conventions, relationships, etc.
An agile team knows that its environment is continuously
changing, and knows that they must change with that
environment to remain agile.

26

You might also like