Lecture 9: Estimation and Scheduling Flashcards
Motivation: Some Facts about Estimates
- Nearly 2/3 of projects significantly overrun their cost estimates (Lederer and Prasad 1992)
- 64% of the features included in products are rarely or never used
- The average project exceeds its schedule by 100% (Extreme Chaos Paper, Standish Group, 2001).
Challenges
- Incomplete knowledge about:
- Project scope and changes
- Prospective resources and staffing
- Technical and organizational environment • Infrastructure
- Feasibility of functional requirements
- Comparability of projects in case of new or changing technologies, staff, methodologies
- Learning curve problem.
Components of an Estimation
-
Cost
- Personnel (in person days or valued in personnel cost)
- Person day: Effort of one person per working day
- Material (PCs, software, tools etc.)
- Extra costs (travel expenses etc.)
- Personnel (in person days or valued in personnel cost)
-
Scope
- Number of requirements
- Complexity of requirements
-
Time
- Development Time
- Project duration
- Dependencies
-
Infrastructure (often forgotten)
- Rooms, technical infrastructure, especially in offshore scenarios
Estimating Personnel Cost
- Personnel type: Team leader, application domain expert, analyst, designer, programmer, tester…
- Cost rate: Cost per person per day
- 2 alternatives for cost rate:
- Single cost rate for all types (no differentiation necessary)
- Assign different cost rates to different personnel types based onexperience, qualification and skills
- Personnel cost: person days x cost rate.
Estimating Development Time
- Development time is often estimated by the formula
- Duration = Effort / People
- Problems with this formula:
- A larger project team increases communication complexity which usually reduces productivity
- It is not possible to reduce duration arbitrarily by adding more people to a project
- “Adding people to a late project makes it even later” – Frederick Brooks, The Mythical Man Months
Basic Estimation Model
Parametric Data –> Model –> Estimate
Example:
- Size & Project Data
- System Model
- Software Process
- Effort
- Schedule
- Cost
How do you Build an Estimation Model?
Insight + Historical Data + Meta Model of SW Process = Estimation Model
Top-Down and Bottom-Up Estimation
- Two common approaches for estimations
- Top-Down Approach
- Estimate effort for the whole project
- Breakdown to different project phases and work products
- –> If you do not have a WBS
- Top-Down Approach
- Bottom-Up Approach
- Start with effort estimates for tasks on the lowest possible level
- Aggregate the estimates until top activities are reached
- –> Preferred if you have a WBS and knowledgeable developers
Methods for estimating cost and effort
Expert estimation
- Based on
- Experience
- Domain knowledge
- Exemplary methods:
- Planning Poker
- Delphi
- Assessment meetings
Algorithmic estimation
- Based on:
- Key performance indicators
- Formulas
- Metrics
- Exemplary methods:
- Lines of Code (LOC)
- COCOMO II
- Aron
- Function Points
Expert Estimation
= Guess from experienced people
- No better than the participants
- Suitable for atypical projects
- Justification of the result difficult
- Important when no detailed estimation can be done (due
- to lacking information about scope)
- Works best if the estimates are for short term items.
Lines of Code
- Traditional way for estimating application size
- Advantage: Easy to do
- Disadvantages:
- Focus on developer’s point of view
- No standard definition for “Lines of Code”
- You get what you measure:
- If LOC is the primary measure of productivity, programmers ignore reuse and refactorings
- Caspers Jones: The use of LOC metrics for productivity should be regarded as professional malpractice.
COCOMO (COnstructive COst MOdel)
- Developed by Barry Boehm in 1981
- Top-down approach to estimate cost, effort and schedule of software projects, based on size and complexity of projects
- Assumptions:
- Derivability of effort by comparing finished projects (“COCOMO database”)
- System requirements do not change during development
- Exclusion of some efforts (for example administration, training, rollout, integration).
Calculation of Effort in COCOMO
- Estimate number of instructions
- KDSI = “Kilo Delivered Source Instructions”
- Two constants describing the complexity of the project: A, B
- 3 levels of difficulty that characterize projects
- Simple project (“organic mode”)
- Semi-complex project (“semidetached mode”)
- Complex project (“embedded mode”)
- Calculate effort
- Effort = A * KDSI
- Calculate development time
- Time = C * Effort
- C, D = constants based on the complexity of the project
- Also called COCOMO I
COCOMO II
- Revision of COCOMO I in 1997
- Provides three models of increasing detail
- Application Composition Model: Estimates for prototypes based on GUI builder tools and existing components
- Early Design Model: Estimates before software architecture is defined
- Post Architecture Model: Estimates once architecture is defined
- Targeted for iterative software lifecycle models such Boehm’s spiral model (COCOMO I was based on the waterfall model)
- COCOMO II includes new equations for reuse •
- Enables build vs. buy trade-offs
- COCOMO II also addresses team experience, developer skills and distributed development
Problems with COCOMO
- Judgment required to determine the influencing factors and their values
- Experience shows that estimation results can deviate from actual effort by a factor of 4
- -> Cone of Uncertainty
- Some important factors are not considered:
- Skills of team members, travel, environmental factors, user interface quality, overhead cost
Estimation Variability: Cone of Uncertainty
- Lessons learned in NASA Projects
- At the beginning of a project, before requirements elicitation, estimates have an uncertainty of factor 4
Problems with Traditional Estimation Techniques
- Focus on the completion of activities and not on the delivery of features
- Customers get no value from the completion of activities J
- Wrong focus in schedule reviews
- The reviewers look for overlooked activities, not for overlooked features
- When faced with overrunning a schedule, teams
- attempt to save time by reducing quality
- introduce change-control policies that constrain highly valuable changes in the software system.
Planning Poker: An agile estimation approach
- Planning poker packages expert estimates into an enjoyable approach to estimating
- All the participants are estimators, in particular all the developers, not just the project manager!
- The estimation team should not have more than 10 people
- If there are more than 10 people, create two or more estimation teams
- The product owner participates in the game, but does not estimate
- Most important aspect of planning poker:
- Estimates are arrived at by consensus building, not by looking at a crystal ball.
Planning Poker Rules
- Start: Each team member is given a set of cards
- One person reads each of the items to be estimated
- Examples of items: Functional requirements, user stories, scenarios, features, design goals, implementation of algorithms, TODOs
- The team discusses each item individually
The product owner can participate, but does not estimate - Each team member estimates the difficulty of the item and privately selects a card representing the estimate
- After all team members have chosen their card, everyone shows their chosen card to the others at the same time
If the team member’s estimates match, the estimate for this item is established (for now) - If estimates are not the same, the group discusses the differences
Steps 4 to 6 are repeated until a consensus is reached.
Important: Don’t Average During Planning Poker
Advantages / Disadvantages of Planning Poker
Disadvantages:
- It is based on expert opinion
- When a same backlog is provided to another Scrum Team, it could come up with estimation that vary drastically different
- Estimation changes with the different skills and experience
- Team estimates while individuals are owners
- “What” factor when not well described makes it harder for the team to estimate.
Advantages:
- Group Estimating: Wisdom of the Crowd
- The conversation following the revealing of initial estimates is a great way to pool important issues
Dependency Diagrams
- Example:
- You are assigned a project consisting of 5 tasks
- Each of these needs one week to be completed
- How long does the project take?
- Another Example:
- You are assigned a project consisting of 5 tasks
- Task 1 has to be finished before any other tasks can start
- Task 2 and 3 can be done in parallel, task 4 and 5 cannot
- Task 5 depends on task 2
- You are assigned a project consisting of 5 tasks
- Can the project be finished in 3 weeks, if each of the tasks takes a week to complete?
- What if 4 and 5 can be done in parallel, but 2 and 3 cannot?
- –> A dependency diagram is a formal notation that helps in the construction and analysis of complex schedules.
Dependency Diagrams (Overview)
- Dependency diagrams consist of 3 elements
- Event: A significant occurrence in the life of a project
- Activity: Amount of work required to move from one event to the next
-
Span time: The actual calendar time required to complete an activity
- Span time parameters: availability of resources, parallelizability of the activity
- Dependency diagrams are drawn as a connected graphs of nodes and arrows. Two commonly used notations are:
- Activity-on-the-arrow notation
- Activity-in-the-node notation.