Sit309 Agile D Dev Lect 1n2 Slides
Sit309 Agile D Dev Lect 1n2 Slides
1 2
Agile kwanini?
Why Agile Methodologies? The Agile Approach
• Instead of phases, projects are broken down into releases
• Traditionally projects are delivered in a series of phases that and iterations. At the end of each iteration you have a fully
are based on increasing levels of certainty around the system functioning system that could be released:
being built:
What is Agile?
How does Agile work?
Agile ni nini?
It works by breaking projects down into little bits of user
Agile is a time boxed, iterative approach to software delivery functionality called user stories, prioritizing them, and then
that builds software incrementally from the start of the continuously delivering them in short two week cycles
project, instead of trying to deliver it all at once near the end. called iterations.
1
2/2/2023
Secondly, because working software isn't And finally, most importantly, it's just
produced until the end of the project, you not a great way for handling
never really know where you are on a change.
Waterfall project. That last 20% of the
project always seems to take 80% of the
time.
The elements on the left side are valued more than the elements
on the right side but that does not mean elements on left side are
irrelevant 12
2
2/2/2023
Value 2(cont’d): Working Software over Value 3: Customer Collaboration over Contract
Comprehensive Documentation Negotiation
• How to train newbees if short & sweet?
– Work closely with them.
• Not possible to describe software requirements
– Transfer knowledge by sitting with them; make part of team via
close training and interaction
up front and leave someone else to develop it
• Two essentials for transferring info to new team members:
within cost and on time.
– Code is the only unambiguous source of information.
– Team holds every-changing roadmap of systems in their heads; • Customers cannot just cite needs and go away
cannot put on paper.
– Best way to transfer info- interact with them.
• Fatal flaw: Pursue documentation instead of software:
• Successful projects require customer feedback
• Rule: Produce no document unless need is immediate and
on a regular and frequent basis – and not
significant. dependent upon a contract or SOW.
15 16
Value 3(cont’d): Customer Collaboration over Value 4: Responding to Change over Following
Contract Negotiation a Plan
• Best contracts are NOT those specifying requirements, • Our plans and the ability to respond to changes is critical!
schedule and cost. • Course of a project cannot be predicted far into the future.
– Become meaningless shortly. – Too many variables; not many good ways at estimating cost.
• Far better are contracts that govern the way the • Tempting to create a PERT or Ghant chart for whole project.
development team and customer will work together.
– This does Not give novice managers control.
• Key is intense collaboration with customer and a – Can track individual tasks, compare to actual dates w/planned dates
contract that governed collaboration rather than details and react to discrepancies.
of scope and schedule – But the structure of the chart will degrade
– Details ideally not specified in contract. – As developers gain knowledge of the system and as customer gains
– Rather contracts could pay when a block passed customer’s knowledge about their needs, some tasks will become unnecessary;
acceptance tests. others will be discovered and will be added to ‘the list.’
– With frequent deliverables and feedback, acceptance tests – In short, the plan will undergo changes in shape, not just dates.
never an issue.
17 18
3
2/2/2023
Value 4(cont’d): Responding to Change over The Twelve Principles of Agile Software
Following a Plan The signatories of the Agile s/w manifesto explicitly stated the
principles upon which the formulated manifesto would best be
• Better planning strategy – make detailed plans for the fulfilled and differentiate agile processes from others s/w
next few weeks, very rough plans for the next few development process. They stated; We follow these principles:
months, and extremely crude plans beyond that.
i. Our highest priority is to satisfy the customer through early
• Need to know what we will be working on the next few and continuous delivery of valuable software.
weeks; roughly for the next few months; a vague idea ii. Welcome changing requirements, even late in development.
what system will do after a year. Agile processes harness change for the customer's
• Only invest in a detailed plan for immediate tasks; competitive advantage.
once plan is made, difficult to change due to iii. Deliver working software frequently, from a couple of weeks
momentum and commitment. to a couple of months, with a preference to the shorter
– But rest of plan remains flexible. The lower resolution timescale.
parts of the plan can be changed with relative ease. iv. Business people and developers must work together daily
throughout the project.
19 20
Principle 2: Welcome Changing Requirements, even late in Principle 3: Deliver Working Software Frequently
Development. Agile Processes harness change for the (From a couple of weeks to a couple of months with a
Customer’s Competitive Advantage. preference to the shorter time scale.
• This is a statement of attitude.
• Participants in an agile process are not afraid of change. • We deliver working software.
– Deliver early and often.
– Requirement changes are good;
– Be not content with delivering bundles of
– Mean team has learned more about what it will take to documents, or plans.
satisfy the market.
– Don’t count those as true deliverables.
• Agile teams work to keep the software structure flexible, • The goal of delivering software that satisfies the
so requirement change impact is minimal. customer’s needs.
4
2/2/2023
Principle 4: Business People and Developers Must Work Principle 5: Build Projects around Motivated Individuals.
Together Daily throughout the Project. (Give them the environment and support they need, and
trust them to get the job done.)
• For agile projects, there must be significant and frequent • An agile project has people the most important factor
interaction between the of success.
– customers, – All other factors, process, environment,
management, etc., are considered to be second
– developers, and order effects, and are subject to change if they are
– stakeholders. having an adverse effect upon the people.
An agile project must be continuously guided. • 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.
25 26
Principle 6: The Most Efficient and Effective Method of Principle 7: Working Software is the Primary Measure
Conveying Information to and within a Development of Progress
Team is face-to-face Communications.
• Agile projects measure their progress by measuring the
• In agile projects, developers talk to each other.
amount of working software.
– The primary mode of communication is
– Progress not measusred by phase we are in, or
conversation.
– by the volume of produced documentation or
– Documents may be created, but there is no attempt
to capture all project information in writing. – by the amount of code they have created.
• An agile project team does not demand written specs,
written plans, or written designs. • Agile teams are 30% done when 30% of the necessary
– They may create them if they perceive an immediate functionality is working.
and significant need, but they are not the default.
– The default is conversation.
27 28
5
2/2/2023
Principle 10: Simplicity – the art of maximizing the Principle 11: The Best Architectures, Requirements, and
amount of work not done – is essential. Designs emerge from Self-Organizing Teams
• Agile teams take the simplest path that is consistent • An agile team is a self organizing team.
– Responsibilities are not handed to individual team
with their goals. members from the outside.
– Responsibilities are communicated to the team as a whole,
and the team determines the best way to fulfill them.
– They don’t anticipate tomorrow’s problems and
try to defend against them today. • 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,
– Rather they do the simplest and highest quality or the requirements, or the tests, etc.
work today, confident that it will be easy to – The team shares those responsibilities and each team
member has influence over them.
change if and when tomorrows problems arise.
31 32
Key Features of Agile Development vi. Adaptive: The methodology in general is very adaptive, so that the
application that is developed can cater to the arrival of new
i. Iterative: Entire application is distributed in incremental units requirements throughout its development. Goal is not to remove the
called iterations. Development time of each iteration is small
(couple of weeks), fixed and strictly adhered to. Every Iteration is uncertainty in the very beginning, but is to adapt to the changing needs.
a mini-increment of the functionality and is build on top of vii. Empowered Teams: Project teams are generally small and have lot of
previous iteration. interaction and communication. Since the entire team is actively
ii. Active Customer Involvement: There is a lot of client
involvement and face-to-face interaction. Every iteration is involved, the team is empowered to make decisions
tested and approved by the client. The feedback obtained is viii. People Centric: More emphasis is on using well-skilled people to do the
implemented in subsequent iterations; thus minimizing risk and development than on following specific processes. Documentation and
ensuring higher client satisfaction.
other non-development activities are minimized and more time is
iii. Feature Driven: More emphasis is on providing the required
features in the application. 80/20 principle is applied to decide devoted to development and testing.
the 20% of features which will be used 80% of the time. ix. More Disciplined: Everything should be delivered correctly the first
iv. Fixed Time: Each iteration has a fixed time span (couple of time. So the process involves a lot of team discipline and self-discipline.
weeks) in which it is delivered.
Thus, it requires highly-skilled and organized team members.
v. Priority-Based Delivery: Features are prioritized depending on
customer need, development risk, etc. High priority features are x. Simplicity: Emphasis is on keeping things as simple as possible and
developed first. After every iteration, the project priorities are being open to change.
re-evaluated. 35 36
6
2/2/2023
Agile Iteration Life Cycle Stages The Process of Agile Software Development
I. Kick-off meeting.
II. Known requirements are understood and prioritized.
Development plan is proposed accordingly.
III. Relative complexity of each requirement is estimated.
IV. Sufficient design using simple diagrams is done.
V. Test Driven Development (TDD) approach may be used.
TDD emphases “writing test first and then writing code
to pass the test”. It can help in avoiding over-coding.
VI. Development is done sometimes in pairs with a lot of
team interaction. Ownership of code is shared when
pair programming is done.
VII. Code is tested more frequently.
41 42
7
2/2/2023
43