Unit 3: Estimation and Scheduling
Estimation for Software Projects: The Project Planning Process, Defining Software Scope and
Checking Feasibility, Resources management, Reusable Software Resources, Environmental
Resources, Software Project Estimation, Decomposition Techniques, Software Sizing,
Problem-Based Estimation, LOC-Based Estimation, FP-Based Estimation, Object Point (OP)-based
estimation, Process Based Estimation, Process-Based Estimation, Estimation with Use Cases,
Use-Case–Based Estimation, Reconciling Estimates, Empirical Estimation Models,
The Structure of Estimation Models, The COCOMO II Mode, Preparing Requirement Traceability Matrix
Project Scheduling: Project Scheduling, Defining a Task for the Software Project, Scheduling.
The Project Planning Process
There are total 10 steps:
-> Define stakeholders
-> Define Roles
-> Introduce stakeholders
-> Set goals
-> Prioritise Tasks
-> Create a schedule
-> Assess risks
-> Communicate
-> Reassess
-> Final evaluation
Defining Scope and checking feasibility
Software scope:
-> functions and features
-> data
-> content of the software presented to the user.
-> Performance
-> Scalibility
-> Reliability
-> Constraints
After developing the scope of the project its feasibility must be ensured.
* Software Feasibility
-> It refers to the process of evaluating how practical and achievable a software
project is.
-> There are multiple types of software feasibility.
1. Technical Feasibility: Assess whether the tech required for software
is available. It can vary from tech skills to frameworks.
2. Operational Feasibility: Evaluates whether the project can be integrated
into the current operations and whether it will be acceptedby
users and stakeholders.
3. Finance Feasiblity: Evaluates if the project can be built under the defined
budget
4. Schedule Feasiblity: Assesses whether the project can be compeleted
within the desired timeframe.
Resource Management
* There are three major categories of SE resources:
-> Human resources
# They include all the techincal and non techincal individuals.
# Usually there is a heirarchy in human resources.
# For smaller projects, human resource may be very limited but
this might get complicated with larger projects.
-> Reusable Software Resources
# Components or assets that can be used across multiple software
project to save time, reduce costs and improve quality.
# There are four reusable categories:
= OTS Components [ 3rd party components]
= Full Experience Components
= Partial Components
= New Components
-> Environment Resources
# It includes hardware and software.
# Hardware is the physical component.
# Software is like the interface.
Software Project Estimation
* Software project estimation is the process of predicting the most realistic amount
of effort, time, and resources required to complete a software project.
* Accurate estimation is crucial for project planning, budgeting, resource allocation
and risk management.
* Importance
It helps in deciding various aspects of any project.
-> Budget
-> Resource Requirement
-> Expected time for building
-> Expected time for testing
-> Decision Making
Decomposition Techniques
* Software Sizing
-> Size is a quantifiable entity.
-> You can use two approaches
# Direct approach: Counting the lines of code.
# Indirect approach: computation of function point is done.
* Problem based Estimation
-> It can be done using two techniques
# LOC Based estimation
> software project estimation technique that predicts time needed
to complete a project by estimating the lines of code.
> This is one of the simplest and easiest methods for software
project estimation.
> What all is included in LOC?
- Declarations
- conditional statements
- looping statements
- Braces, etc.
> What is not included in LOC?
- Comments
- Blank lines
> Advantages
- Easy to implement
- Good option for smaller projects.
> Disadvantages
- Different standards for different organisations may create
discrepancies.
- Quantity matters a lot instead of quality.
Example of LOC
Module LOC
User authentication 2000
Lander Page 5000
Payment Gateway 3000
Backend 4000
Total LOC: 2000+5000+3000+4000 = 14000
Productivity Rate: 70 LOC/day
Effort : 14000/ 70 = 200 days
No. of developers : 5
Total time required : 40 days
Additional Overhead: 40 + 20 = 60 Days
FP Based Estimation
* It measures the functionality provided by a software application based on the
user's perspective.
* It focuses on what functionality is being delivered.
* There are two functional points:
# Transactional Function Type
> External Input : It is responsible for input.
> External Output: It is responsible for output.
> External Inquries: It is combination of input/output.
# Data Function Type
> Internal Logical File: It is the actual built system.
> External Logical File: It is the pre built system which is being outsourced.
* Advantages
# Better accurate project estimation
# Improved Interaction
# Technological Independence
* Disadvantages
# Low accuracy
# Time consuming
# Subjective Judgement
Process Based Estimation
* process-based estimation is a method used to estimate the effort, cost, and
duration of a software project by breaking down the project into a series
of tasks or processes.
* Example:
-> Consider you are building a new e-commerce website.
-> Step 1 - Define the project scope
-> Step 2 - Break down the project into the tasks
# task 1: requirement gathering
# task 2: design
# task 3 : development
# task 4 : testing
# task 5 : deployment
-> step 3 - Estimate the effort in each task
# task 1 : 20 hrs
# task 2: 10 hrs
# task 3: 50 hrs
#task 4 : 20 hrs
# task 5 : 5 hrs
-> Step 4 - Determine resource requirements
-> Step 5 - Calculate task duration
-> Step 6 - Schedule Tasks
-> Step 7 - Calculate total project effort and duration
-> Step 8 - Review and refine estimates
Use Case Based estimation
* A use case is a description of how a user interacts with a software system to
achieve a specific goal.
* Key components of use case:
-> Actor
-> Goal
-> Preconditions
-> Main flow
-> Alternate flow
-> Postconditions
-> Exceptional flow
* use case based estimation involves giving use case points to all the tasks.
* The steps are:
-> Identify use cases
-> Categorise use cases
-> Assign weights to use cases
-> Calculate total effort
-> Estimate effort
-> Calculate overall effort after adding overheads
Use Case Based estimation
* Example
-> identify test cases
# user login
# view account balance
# transfer funds
# pay bills
# generate account statement
-> Categorise test cases
# user login : simple
# view account balance: simple
# transfer funds: complex
# pay bills : avg
# generate account statement : avg
-> assign weights for each category
# simple : 5 points
# avg : 10 points
# complex : 15 points
-> calculate total efforts
# total points : 45 points
-> estimate effort per point
# avg effort per points = 8 hours
-> calculate overall effort
# 45 * 8 = 360 hours
-> total including overhead
# 360 + 50 = 410 hours
COCOMO II Model
* It is the model that allows one to estimate the cost, effort, and schedule when
planning a new software development activity.
* It is also known as constructive cost model II
* It consists of 3 stages
-> Application Composition Model: Used for applications using RAD.
-> Early Design Model: used when only rough estimates are available.
-> Post architecture model: used after the architecture has been defined
and provides most detailed estimation.
* Effort computation in application composition model
-> In this estimation is based on the number of application points.
-> PM : efforts in terms of person months
-> NAP: Number of application points required
-> %reuse : amount of reused components
-> prod : object point productivity. It is fetched from the table
* Effort computation in early design model
-> In this estimation is based on functional points
-> A = 2.94
-> size is number of Kilo LOC
-> B varies from 1.1 to 1.24
-> M is based on different aspects like schedule, support facilities, personnel
experience, etc.
Project Scheduling
* A project schedule provides your project's clear, up-to-date status, including tasks,
assignments, dependencies, and milestones.
* Why?
-> Clarity and direction
-> Proper plan
-> Time management
* Steps to create a project schedule
-> Define tasks and milestones
-> Sequence tasks.
-> Estimate task durations.
-> Assign tasks to team members
-> Finalise and schedule
-> Monitoring
Princples of Project Scheduling
* Compartmentalisation
-> divide into small activities and tasks
* Interdependency
-> interrelation between each compartments should be defined
* Time allocation
* Effort validation
* Defined responsibilities
* Defined outcomes
* Defined Milestones
Time Line Chart
* It is also known as gantt chart.
* It is generated on the basis of the start date inputs for each task.
* It is one of the great ways to track all the activities.
* It can vary depending on the abstraction level.
* The left side indicates all the task performed.
* On the right side we have the time/data/day and horizontal boxes which indicate
the time lapse of the activity.
Earned Value Analysis
* Earned value analysis compares a performance measurement baseline to the
actual schedule and cost performance.
* Earned Value Analysis is a technique using formulas to understand where you
are in the project.
* Methods
-> 0/100 - Task is assigned a value of zero until it's completed then it is
assigned value of 100
-> 50/50 technique
-> 75/25 technique