0% found this document useful (0 votes)
6 views33 pages

Estimation and Planning in Software Projects

This document provides an overview of various project estimation and planning techniques including task integration, creating PERT/CPM graphs, Gantt charts, and COCOMO cost estimation. It discusses task integration examples, integration task diagrams, and test plans. It then covers creating PERT/CPM graphs, earliest and latest completion times, and fixed CPM graphs. Gantt chart examples are shown and creating reasonable timelines with critical paths indicated is discussed. COCOMO cost estimation is introduced along with organic, embedded, and semi-detached project types and adjusting effort factors. The challenges of real-world estimation are also acknowledged.

Uploaded by

KavithaD
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views33 pages

Estimation and Planning in Software Projects

This document provides an overview of various project estimation and planning techniques including task integration, creating PERT/CPM graphs, Gantt charts, and COCOMO cost estimation. It discusses task integration examples, integration task diagrams, and test plans. It then covers creating PERT/CPM graphs, earliest and latest completion times, and fixed CPM graphs. Gantt chart examples are shown and creating reasonable timelines with critical paths indicated is discussed. COCOMO cost estimation is introduced along with organic, embedded, and semi-detached project types and adjusting effort factors. The challenges of real-world estimation are also acknowledged.

Uploaded by

KavithaD
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Tutorial: Estimation and Planning Examples

Friday, October 25th

Overview
Task Integration Example Pert/CPM Graph Gantt Chart COCOMO Quick SDL refresher

Task Integration
Modules taken from design doc Integration tasks taken from architecture doc Should reinforce architecture chosen
Be wary of odd dependencies

Integration Task Diagram

Task Integration Matrix

Test Plan Notes


Give reasons for why test plan was chosen

Creating Pert/CPM Graph


Integration task diagram often shows what tasks can be done concurrently In real world setting, priorities not necessarily follow ITG
This is why we need schedule priority charts Certain tasks may need to be done by certain people (domain knowledge, etc)

Vaguely Familiar Ground

CPM Graph

Earliest Completion Times

Latest Completion Times

Fixed CPM Graph


Missing labels: [0](0) [0](3) [0](5)

Coming up with Gantt Chart


Try to pick reasonable timelines
Usually earliest completion time is chosen Factor in vacations, breaks, etc

Make note of critical path


Helpful to indicate on Gantt chart

Try to evenly divide up workload

Gantt Chart Example 1

Gantt Chart Example 2

Why are we doing this?


Poor management is the downfall of many software projects. Delivered software may be late, unreliable, cost several times the original estimates and often exhibits poor performance characteristics. Software project management is different from other engineering management. Product is intangible to a certain extent. Most software projects are new and technically innovative. (myth?) Good management cannot guarantee project success but bad management usually results in project failure.

COCOMO
COnstructive COst MOdel Created by Barry Boehm in 1981 Essentially: EFF = a * SIZEb Based on a large number of projects from the 70s Very simple estimation tool which may or may not work depending on how closely project fits in with original study

Estimating Is Hard To Do

Basic Idea
Small Projects
Small teams (2-3 people) Easy to have mental model Fewer things in the way of completion EFFORT = a * SIZE + b

Large Projects
The more people there are, the harder it becomes EFFORT = a * SIZEb

a and b are scaling factors

Project Types
Organic
Routine project Well understood domain Team works well and efficiently together Project expected to run smoothly Typically a smaller system

Project Types
Embedded
Difficulties expected Project that is hard (control software for a nuclear plant, or spacecraft) Team has little experience in domain New or inexperienced team Tend to be large projects with lots of constraints

Project Types
Semi-Detached
In the middle Complex system, but something the company is familiar with Teams may be made up of experienced and inexperienced members System not huge, but not small either

What is a and b?
Organic
Person months = 2.4 * KDSI1.05

Semi-Detached
Person months = 3.0 * KDSI1.12

Embedded
Person months = 3.6 * KDSI1.20

Slightly More Advanced


Add in an adjustment factor
EFFORT = EAF * a * SIZEb Adjustment factors cover wide range of development aspects Factor all adjustment factors together to get EAF

Slightly More Advanced


The factors a and b differ Organic
a = 3.2, b = 1.05

Semi-Detached
a = 3.0, b = 1.12

Embedded
a = 2.8, b = 1.20

How to use COCOMO


Simply: Plug and Chug What if it doesnt work?
Play with adjustment factors Tweak a and b to make the equation fit the result Use a more complex metric

In Reality
Estimating comes with experience Using something like Function Points to come up with code size doesnt really work
(personal belief)

COCOMO is too simple and too old to really be of use


Good starting point, more advanced models available Tweaking formulas might yield good results

Quick Look At SDL

Credits
Lots of COCOMO info taken from
[Link] 45/[Link]

CPM slide Why Are We Doing This taken from another presentation (cant find URL)

Common questions

Powered by AI

The COCOMO model differentiates project types by using different constants 'a' and 'b' and adjusting the formula accordingly. For organic projects, it uses a = 2.4, b = 1.05, suitable for well-understood domains with small teams. Semi-detached projects utilize a = 3.0, b = 1.12, representing moderately complex systems familiar to the company. Embedded projects, which are highly complex and constrained, use a = 3.6, b = 1.20, reflecting expected difficulties and larger scale .

The COCOMO (COnstructive COst MOdel) is used for estimating the cost of software projects based on past data. It involves a basic formula EFF = a * SIZE^b to calculate the effort required in person-months, where 'a' and 'b' are constants differing based on the project type (Organic, Semi-Detached, Embedded), and SIZE denotes the amount of code in Kilo Delivered Source Instructions (KDSI). Adjustment factors are applied to refine the estimates to account for development aspects .

The COCOMO model, though foundational, has limitations in modern contexts. It is considered too simplistic and potentially outdated as it heavily relies on historical data from the 1970s, which might not align with current technological and organizational practices. Moreover, it does not easily accommodate the dynamics of modern development methodologies, such as agile, which require more flexible estimation approaches. Using only 'a' and 'b' values with size-based formulas may not capture the complexity of modern projects, necessitating adjustments or more sophisticated models .

A Gantt Chart improves project management by providing a visual timeline for project tasks. It illustrates the start and end dates, duration, and dependencies of each task, allowing project managers to allocate resources efficiently and ensure tasks are completed on schedule. By indicating the critical path, Gantt Charts help identify which tasks are essential for timely project completion and ensure even workload distribution among team members .

Software project management presents unique challenges such as the intangibility of the software product, the technical novelty of many projects, and the relatively high rate of late delivery, cost overruns, and poor performance compared to other engineering disciplines. Furthermore, many software projects involve unprecedented tasks, requiring innovative approaches to management. It's noted that while good management doesn't guarantee project success, bad management usually leads to failure .

Integration tasks and dependency management are critical in software project planning as they ensure that the workflow aligns with the project's architecture and design. Proper management helps avoid conflicts and unforeseen dependencies that can delay the project. It's essential to reinforce the chosen architecture and acknowledge certain tasks that require individuals with specific domain knowledge. Tools like the Integration Task Diagram and Task Integration Matrix are used to identify and plan tasks that can be worked on concurrently, optimizing the project timeline .

Tweaking adjustment factors in the COCOMO model can refine its accuracy for specific projects by incorporating environmental and procedural modifications that affect productivity. Adjustments might include considerations for team experience, programming language efficiency, or project complexity nuances. By calibrating these factors, managers can tailor the model to better predict effort requirements and project costs, thus enhancing its precision beyond the default parameters .

Management is critical because poor management commonly leads to project failure. Key reasons include the intangible nature of software products, the novel and innovative aspects of most software projects, and the adaptability required in the face of complexity and changing requirements. Effective management can help mitigate these risks, although it cannot completely guarantee success .

A manager might modify PERT/CPM time estimates to account for real-world factors not captured in the initial analysis, such as staff availability, holidays, and unexpected delays. PERT/CPM provides a structured view of critical and non-critical tasks, but real-life constraints and priorities can necessitate adjustments for more accurate scheduling. These modifications help optimize resource allocation and ensure realistic and achievable project timelines .

PERT (Program Evaluation Review Technique) and CPM (Critical Path Method) graphs are vital for effective project scheduling as they visually represent the sequence of tasks, durations, and dependencies. They help identify critical tasks that determine the project's minimum completion time, thereby allowing managers to allocate resources efficiently and prioritize tasks. Adjustments can be made based on this analysis, accounting for factors like breaks and vacations .

You might also like