Agile Inspired
Risk Mitigation Techniques
for
Software Development Projects
Michael Bica, Sogard Inc. Presented at GTISLIG, Toronto
Roadmap
I. Risks
Heuristics
Risks & Estimation
II. Project Management vs. SDLC
III. Agile Methodologies
Manifesto Principles
Brief Descriptions of Some Agile Methodologies IV. Risks vs. Agile Techniques
V. Risks vs. Organization Types
A Few Questions
Who is involved in software development projects? Familiarity with agile methodologies?
Is there a prescribed methodology in your organization?
Waterfall
Rational Unified Process (RUP) Agile
What Is a Risk?
Merriam-Webster
Risk
= Possibility of Loss or Injury
This evening
Risk
= Any factor, situation or event that may
Success vs. Failure
Success = project is on time, on budget and delivers all
the required functionality
Failure = project is late, over budget, not meeting
Chaos Report
Source - Standish Group
Issued in 1995
Interviewed 365 senior managers
Covered approximately 8500 projects
Project outcome (resolution) types
Project Succeeded – completed on time, on budget, with
all features as initially specified (16.2%)
Project Was Challenged – completed and operational,
but over budget, over time estimate or did not meet initial scope (52.7%)
Chaos Report - Overruns
< 20% 21 – 50% 51 – 100% 101 – 200% 201 – 400% > 400% 0.00% 2.50% 5.00% 7.50% 10.00% 12.50% 15.00% 17.50% 20.00% 22.50% 25.00% 27.50% 30.00% 32.50% 35.00% 37.50%Cost & Time Overruns
Cost Schedule Overrun Amount [%] N o P ro je ct s [% ]
Chaos Report - Success Factors
User Involvement
Executive Management Support Clear Statement of Requirements Proper Planning
Realistic Expectations
Smaller Project Milestones Competent Staff
Ownership
Clear Vision and Objectives Hard-working, focused staff
Chaos Report - Challenging Factors
Lack of User Input
Incomplete Requirements & Specifications Changing Requirements & Specifications Lack of Executive Support
Technology Incompetence Lack of Resources
Unrealistic Expectations Unclear Objectives
Unrealistic Time Frames New Technologies
Chaos Report - Cancellation Factors
Incomplete Requirements & Specifications Lack of User Involvement
Lack of Resources
Unrealistic Expectations Lack of Executive Support
Changing Requirements & Specifications Lack of Planning
Didn't Need It Any Longer Lack of IT Management Technology Illiteracy
Waltzing with Bears
Tom De Marco, Timothy Lister – Waltzing with Bears –
Managing Risks on Software Projects
Core software development risks
Schedule flaw
Requirements inflation Specification breakdown Team Turnover
Estimation Process
Estimation Types
Bottom up Top down
Bottom Up
Done by the team
Depends on team self knowledge and maturity Hard to challenge
Top down
Historical - works for similar projects
Parametric Estimation
Algorithm based, proprietary or public One of the best known public tools
COCOMO
Estimates the effort, cost, schedule
and team needed to build a given software project
Model first published by Barry Bohem in Software
Engineering Economics, Prentice-Hall (1981) for waterfall approach
The current model COCOMOII available since 2000
COCOMO II Inputs and Outputs
Inputs
SLOC – single lines of code
Function Points – quantifying the information processing
functionality associated with major external data input, output, internal file types, and external interfaces
Outputs
Effort
Schedule Cost
Scaling Factors
Estimation algorithm uses scaling factorsscaling factors to include
effect of risks on project outcome
Precedentness – Has the team done it before
(technology, business domain)?
Requirements Flexibility – Can development team
influence requirements?
Architecture Risk Resolution – Has the architecture
addressed all the required quality attributes (response time, capacity, availability, security) ?
Team Cohesion – Has the team worked together before? Project Management Maturity
Scaling Factors
Scaling factors can be assigned 6 values:
VLO, LO N
H, VH, XVH
The selection of scale drivers is based on the rationale
that they are a significant source of exponential variationexponential variation
on a project’s effort or productivity.
Each scaling factor affects the project outcome
independent of the others
Scaling Factors Influence on Effort
VLO LO NOM HI VHI XHI
0 10 20 30 40 50 60 70 80 90 100 110 120
Scaling Factors Influence on Effort Variance (%)
Precedentness Dev. Flexibility Architecture Team Coehision Process Maturity
Cumulative Effect of Scaling Factors
VLO LO NOM HI VHI XHI
0 20 40 60 80 100 120 140 160 180 200
Best vs. Worst Case Scenario (%)
Effort Time
Additional Factors
Contributing factors to a project’s schedule and effort Project outcome is affected by
Product attributes Platform attributes Personnel attributes Project attributes
Project Management vs. Engineering Process
Project Management is a generic discipline, applicable to
any engineering domain
Different engineering processes can be managed with a
common Project Management Framework (PMF)
Engineering domains require different activities
For example, any software development project includes
some form of: a) Requirements Gathering, b) Design, c) Coding d) Testing and e) Deploying in production
For software development, the engineering process has
Many SDLCs
Waterfall and Rational Unified Process (RUP) are two
of the best known SDLCs
Newer SDLCs have been bundled under the “Agile”
umbrella, e.g.:
SCRUM
Extreme Programming (XP) Feature Driven Development Lean Development
All methodologies employ same activity types
Waterfall
Assumes:
Linear development phases
Predictable development activities Immutable requirements
Perfectionism
These assumptions are too strong, because:
Requirements change
Technologies change, most activities are new Teams change
Requirements
Gathering Analysis & Design Coding Testing Release
Rational Unified Process
RUP is a process framework, focused on software
development
Provides a generic, flexible, iterative life cycle –
described by the RUP Chart: 4 phased and 9 disciplines
Provides guidance in terms of
Roles described in terms of competencies, responsibilities Activities to be performed during each phase
Tools to be employed
Artifacts to be produced
Rational Unified Process
RUP phases & their goals
Inception – determine project scope, business case
Elaboration – refine requirements, establish architecture,
mitigate most technical risks
Construction – build the system up to deployment point
in limited environment (“beta testing”)
Transition – finish product and deploy in production
Rational Unified Process
RUP disciplines & phases where most effort spent
Business Modeling - Inception Requirements - Elaboration
Analysis & Design – Elaboration, Construction Implementation - Construction
Test - Construction
Deployment – Construction, Transition
Configuration & Change Management - All Project Management - All
Environment - All
Iterative Development & Incremental Releases
Iterations end with potentially releasable code Iterations are demonstrated to the client
Iterations are feature driven
May have parallel activity streams
Requirements Development Testing – UAT Defect fixes
Iteration Example
Detail Requirements
(N+1) User Acceptance Testing ( N-1)
Design ( N)
Code ( N)
Integrate (N)
Test (N)
Agile Manifesto
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.”
Principles of the Agile Manifesto
Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
Welcome changing requirements, even late in
development. Agile processes harness change for the customer's competitive advantage.
Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the shorter time scale.
Business people and developers must work together
daily throughout the project.
Build projects around motivated individuals.
Principles of the Agile Manifesto
Give them the environment and support they need, and
trust them to get the job done.
The most efficient and effective method of conveying
information to and within a development team is face-to-face conversation.
Working software is the primary measure of progress. Agile processes promote sustainable development. The
sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good
design enhances agility.
Principles of the Agile Manifesto
Simplicity--the art of maximizing the amount of work
not done--is essential.
The best architectures, requirements, and designs emerge
from self-organizing teams.
At regular intervals, the team reflects on how to become
more effective, then tunes and adjusts its behavior accordingly.
Pre Manifesto Agile Methodologies
SCRUM – Ken Schwaber
Extreme Programming – Kent Beck
Feature Driven Development - Jeff De Luca Crystal Clear - Alistair Cockburn
Adaptive Software Development – Jim Highsmith DSDM – DSDM Consortium
SCRUM
Scrum Master – manages the team, interacts with
project sponsor
Product Backlog
An evolving, prioritized queue of product features Owned by Product Owner
Contains the requirements for the system or product being
developed by the project
Sprint – a 30 day development iteration, includes all
software development activities, results in executable code, potentially releaseble, which is demonstrated to the client
SCRUM
Sprint Goal - functionality from the Product Backlog
that the team commits to implement during the Sprint
Sprint Backlog - what work will have to be performed
in order to reach the sprint goal (team determined)
Daily Scrum – 15 min. standing meeting with team
members, covering “What I've done yesterday”, “What I'm doing today”, and “What is holding me back”
Notes:
Features assigned to the current Sprint are immutable Progress is measured through “Effort Remaining”
XP (Extreme Programming)
Fine scale feedback
Pair Programming Planning Game Test First Whole team Continuous process Continuous Integration Design Improvement Small Releases Shared understanding Coding Standards Collective Code Ownership Simple Design Programmer welfare Sustainable Pace
Feature Driven Development
Iterative and incremental Activities:
Develop overall model Assemble feature list Plan by feature
Design by feature Build by feature
Best Practices:
Domain Object Model Develop by Feature Individual code ownership Feature teams Inspections Regular Builds Visibility of progress
Lean Development
Eliminate Waste – extra features, requirements churn,
crossing organizational boundaries
Focus on Learning
Build Quality In – test driven development
Defer Commitment – take irreversible decisions at the
latest responsible moment
Deliver Fast
Respect People
Agile Common Denominators
Activities
Test driven development Light on documentation
Scheduling
Iterative development
Time bound Feature driven
Full development cycle Incremental releases Requirements No gold plating Flexibility Early feed-back Defer implementation Team Small teams Co-location
Daily status reports Communication
Fuzzy Issues in the Agile Domain
Estimation – hard to do with “just-in-time” requirements Architecture
Poor system architecture is a risk factor
Feature Driven Development, SCRUM friendly
XP requires YANGTNI (you are not going to need it)
Scalability
Small teams are a core factor in agility Proposed team size is ~ 10 developers For larger teams scalability not known
Compressed schedules - requiring extensive parallel work
Requirements
Risks:
Incomplete requirements
Uncontrolled requirement changes Scope creep
Techniques:
Flexibility in change control (e.g. Backlog)
Defer implementation - iterative development Obtain early feed-back from users
Architecture
Risks: Unproven architecture Brittle architecture Inconsistent architecture Techniques: Short, time bound iterations Continuos refactoring
Team
Risks:
Team has not worked together before Lack of cohesion
Lack of technical skill High turnover
Techniques:
Small team
Co-located team
Daily status reports Whole team design
Pair programming, code reviews Sustainable pace
Communications
Risks:
Poor communication between client and team Poor communication inside team
Techniques:
Include client representatives and users on the team Daily status updates
Co-located team members
Schedule
Risk:
Underestimation
Techniques:
High level estimates
Only next iteration is precisely estimated - “Rolling wave
SD as Core Business
Software assets are core products of the organization Typical examples: Microsoft, Corel
Marketing group drives the product definition – they are
the clients of software development teams
SD teams are fairly stable, well tuned together Technologies are well understood
Development is focused on adding new features to the
product
SD for Business Support
Software is developed to support core business processes Typical examples: banking, insurance
Business departments are clients of SD teams
Development is focused to meet business needs for
increased agility, better operational support, regulatory
Two types of projects:
Maintenance – fairly stable teams, well understood
technologies, lower risk
New technologies – most of the times the organization
does not have very senior people available, architecture not proven, higher risk
SD as Consulting
Consulting companies are brought in to deliver turn key
projects when the client does not have the resources or the technological savvy to do it internally
Most projects involve new technologies
Teams are assembled from pools of resources
Most of the time teams are low cohesion and high
technical capabilities
Client constrains may force projects into sub-optimal
technical decisions
Project Manager Context
PM works within organization's constrains
Process
Resources Location
Tools, infrastructure, architecture
Can influence requirements
Can influence or control project schedule
Can influence or control the team composition Controls project execution
Requirements
Flexibility
Assume requirements are negotiable
Offer same business functionality for less Cost is a strong argument
Bundle requirements in features
Easier to deliver releases earlier in project life-cycle
Obtain early feed-back from users on requirements
Screen mock-ups
Iterative Development
Feature driven
Time bound – duration of 2-6 weeks
Complete – team delivers fully tested deployable code Advantages:
User-feedback on the actual product is elicited sooner,
thus minimizing the possibility of requirement changes later in the life cycle of the project
Team performance issues are identified early in the
Incremental Releases
Improves the project ROI by providing business value at
an earlier stage (Minimum Marketable Features)
Example:
1 Release 2 Releases 4 Releases
Cost $1,000,000.00
Duration 12 months
Benefits 600K savings/year
Incremental no yes yes
ROI
1 year -$1,000,000.00 -$700,000.00 -$550,000.00
2 year -$400,000.00 -$100,000.00 $50,000.00
Test-Driven Development
Develop test cases before actual code is written Mandate all development team to employ test
frameworks, such as JUnit for Java (long term benefit – helps with regression testing as well)
Team
Bring senior people on the team
Build team with people you have previously worked
with
Co-locate development team
Hijack a conference room for the duration of the project Great sponsorship support (they want the room back) Very short communication paths
Very efficient for team building
Further Reading
Boehm, Barry; R. Turner - Balancing Agility and
Discipline: A Guide for the Perplexed, 2004; Boston, MA; Addison-Wesley, 2004, ISBN 0-321-18612-5
References
[1] Boehm, Barry; R. Turner - Balancing Agility and Discipline: A Guide for the Perplexed, 2004; Boston, MA; Addison-Wesley, 2004, ISBN 0-321-18612-5
[2] Boehm, Barry- Software Cost Estimation with COCOMO II, Prentice Hall 2000, ISBN 0-13-026692-2 [3] DeMarco, Tom; Lister, Timothy – Waltzing with Bears – Managing Risk on Software Projects; Dorset
House Publishing 2003, ISBN 0-932633-60-9
[4] Gramus, David; Herron, David – Function Point Analysis: Measurement Practices for Successful Software Projects; Addison-Wesley 2000; ISBN 0201699449
[5] Highsmith, J.A. - Adaptive Software Development: A Collaborative Approach to Managing Complex Systems, 2000, New York: Dorset House, ISBN 0-932633-40-4
[6] Highsmith, J.A. - Agile Project Management: Creating Innovative Products, Addison-Wesley, 2004, ISBN 0-321-21977-5
[7] Beck, K. - Extreme Programming Explained: Embrace Change, Addison-Wesley, 1999, ISBN 0-321-27865-8
[8] Schwaber, Ken – Agile Project Management with Scrum, Microsoft Press, 2003, ISBN 0-7356-1993-x [9] Schwaber, Ken; Beedle, Mike – Agile Software Development with Scrum, Prentice Hall, 2002, ISBN 0
Scale Driver Descriptions
Weighted average of "Yes" answers to CMM Maturity Questionnaire
PROJECT MATURITY seamless interactions highly cooperative largely cooperative basically cooperative interactions some difficult interactions very difficult interactions TEAM COEHISION full (100%) mostly (90%) generally (75%) often (60%) some (40%) little (20%) ARCHITECTURE RISK RESOLUTION general goals some conformity general conformity some relaxation occasional relaxation rigorous REQUIREMENTS FLEXIBILITY thoroughly familiar largely familiar generally familiar somewhat unprecedented largely unprecedented thoroughly unprecedented PRECEDENTNESS Extra High Very High High Nominal Low Very Low Scale Factor
Product Attributes
Constraints and requirements placed upon the project to
be developed
Required software reliability (RELY) Database size (DATA)
Documentation match to life-cycle needs (DOCU) Product complexity (CPLX)
Platform Attributes
Limitations placed upon development effort by the
hardware and operating system being used to run the project
Execution time constraint (TIME) Main storage constraint (STOR) Platform volatility (PVOL)
Personnel Attributes
Personnel attributes refer to the level of skills that are
possessed by the personnel.
The skills in question are general professional ability,
programming ability, experience with the development environment and familiarity with the project’s domain.
Analyst capabilities (ACAP)
Applications experience (APEX) Programmer capabilities (PCAP) Platform experience (PLEX)
Programming language experience (LTEX) Personnel Continuity (PCON)
Project Attributes
Project attributes refer to the constraints and conditions
under which project development takes place.
Use of software tools (TOOL) Multi-site Development (SITE)
What Are Function Points?
Function Points measure a software project by
quantifying the information processing functionality
associated with major external data input, output, or file types.
Five user function types need to be taken into account
External Inputs (EI) External Outputs (EO) External Queries (EQ)
Internal Logical Files (ILF) External Interface Files (EIF)
Function Point Descriptions
Function Point Type Description
External Inputs
External Outputs External Queries
Internal Logical Files
Each unique user data or user control input type that (i) enters the exter-nal boundary of the software system being measured and (ii) adds or changes data in a logical internal file.
Each unique user data or control output type that leaves the external boundary of the software system being measured.
Each unique input-output combination, where an input causes and gen-erates an immediate output.
Each logical group of user data or control information in the software system. Include each logical file (e.g., each logical group of data) that is generated, used, or maintained by the software system.
External Interface Files
Files passed or shared between software systems should be counted as external interface file types within each system.
Counting Function Points
P re se nt at io n T ie r ( E I, E O , E Q ) B2B Interface (EIF) P er sis te nc e T ie r ( IL F ) Business Logic Database System Services (Framework)Function Points Complexity
There are three levels of
complexity both for
screens (EI, EO and EQ, respectively) as well as data storage (ILF) and external interfaces (EIF)
Complexity of Data Elements
No of Data Elements 1-4 5-15 >15 <2 L L M 2 L M H >2 M H H No of File Types (Domain Types) Complexity of ILF No of Data Elements 1-19 20-50 >50 1 L L M 2-5 L M H >5 M H H No of Element Types (DB Tables)
Counting Precision (Granularity)
Factors to be considered:
Cost
Accuracy
Counting types:
Detailed: +-10% precision, not cost effective
Average: +- 15% precision, somewhat cost effective High Level: +- 20% precision, very cost effective