Software Project Management
Software Project Management
Achievement
Reward Initiative & accomplishment Encourage Controlled risk taking
Influence and team building
Influence the team Read people’s mind and react to their needs
Be controlled in stress situations
Democratic decentralized
No permanent leader Communication is horizontal
Suitable for small projects requiring less than 5 to 6 engineers, research-oriented projects
Advantages
At different times, different members within the team provide technical leadership.
High morale and job satisfaction due to autonomy, hence less employee turnover.
Disadvantages
Team members may waste time arguing about trivial points due to absence of any authority in the team.
Controlled centralized
Defined team leader Communication is vertical
Problem solving , communication and management by team leader
Advantages
The senior engineer/leader partitions tasks, verifies and integrates the products developed by members.
Disadvantages
Too much responsibility & authority is assigned to leader, possibility of single point of failure
Controlled decentralized
Defined team Leader Suitable for large organizations
Horizontal communication Draws upon the ideas from both earlier
structures
Problem solving is a group activity
Seven factors that should be considered when planning team structure:
Difficulty of task Rigidity of delivery date (schedule)
Size of resultant code (no. of lines) Degree of communication
Time that team will stay together Required quality and reliability of the system
being built
Degree of modularization
The People - Agile Teams
Agile software development encourages customer satisfaction and early incremental delivery of software with overall simplicity.
constraints and limitations (e.g., product cost restricts memory size) are noted
and mitigating factors (e.g., algorithms are well understood) described
The Product - Problem Decomposition
Also called partitioning OR problem elaboration. The problem that the product is addressing must be decomposed
This activity is at core of requirements analysis. Divide and conquer policy for complex problems
Decompose problem in tasks
Decomposition in 2 major areas
Functionality that must be delivered Process that will be used to deliver product
A complex problem is partitioned into smaller problems that are more manageable.
Decomposition make planning easier.
Software functions, defined in scope, are evaluated and refined to provide more detail before estimation (part of planning) begins.
The Process:
A software process provides the framework from which a comprehensive plan for software development can be established.
Common process framework activities which are applicable to all software projects are:
Communication Modeling Deployment
Planning Construction
Process models
Linear sequential, Prototyping, RAD, Spiral, Formal
The problem is to select the process model that is appropriate for the software to be engineered by the project team.
To assess product quality on an ongoing basis and when necessary, modify technical approach to improve quality.
Most first application of project metrics on software projects occurs during estimation (of time, effort).
More project metrics are used as technical work of project commences.
Software Measurement
Software measurement can be categorized in two ways
(1) direct measures of software process and product
(2) indirect measures of software product
Direct Measures
of software process are
Cost and effort
of software product are
Line of Code (LOC) Defects over specified period of time
Execution Speed
Indirect Measures
Of product are
Functionality Efficiency Other Abilities
Quality Reliability
Complexity Maintainability
Size Oriented Metrics
These are derived by normalizing quality and/or productivity measures by considering the size of software that
has been produced.
Size-oriented metrics are widely used but not universally accepted as best way to measure a software process
Proponents claim:
o LOC is easy to count
o Many existing estimation models use LOC or KLOC as key input
o Large literature & data based on LOC exists
But opponents argue that
o LOC measures are programming language dependent
o When considering productivity, LOC criteria penalizes well designed short programs
o Cannot accommodate non procedural languages
o Planner must estimate LOC long before analysis and design
Function-oriented Metrics
These use a measure of the functionality delivered by application as a normalization value.
Most widely used function-oriented metric is function point (FP)
FP’s computation is based on characteristics of software information domain and complexity.
Function points are a measure of the size of computer applications and the projects that build them.
The size is measured from a functional or user, point of view.
It is independent of the computer language, development methodology, technology or capability of the project
team used to develop the application.
First proposed by Albrecht; can be used to measure functionality delivered by a system.
Using historical data, FP can be used to:
o Estimate cost and effort required to design, code and test the software,
o Predict no. of errors that will be encountered during testing,
o Forecast the no. of components and/or project source lines in the implemented system.
Following empirical relationship is used to compute Function Point (FP)
FP= count total x [0.65+ 0.01 x Σ(Fi)]
Fi (i=1 to 14 ) are VAF (Value adjustment factors) or simply ‘adjustment values’ based on answers to some
questions (See list of 14 Qs on Page 473 from book 6th edition )
Answer to these questions are on a scale of 0 (not applicable) to 5 (absolutely essential)
Count total is calculated using the following information domain values:
o External inputs (EIs) o Internal logic files (ILFs)
o External outputs (EOs) o External interface files (EIFs)
o External inquiries (EQs)
Each information domain value is multiplied by a weighting factor (simple, average or complex) and all values are
added to get count total.
Like LOC, FP is also controversial
Proponents claim
o It is programming Language independent, hence ideal for conventional and non-procedural languages
o Based on data that can be known early phases of projects
Opponents claim
o Computation is based on subjective rather than objective data
o counts of information domain may be difficult to collect
o FP is just a number and has no physical meaning
Object-oriented Metrics
FP and LOC can be used to estimate OO software projects but these metrics do not address all aspects of such projects.
Problem complexity and risks are considered before final estimate is made.
Estimation and Risk
Estimation carries inherent risk, and risk leads to uncertainty.
Estimation risk is measured by the degree of uncertainty in the quantitative estimates established for resources, cost, and schedule.
Availability of comprehensive historical information and software metrics (from past projects) helps establish better
estimates and hence reduces risk factors.
If project scope is poorly understood or requirements are subject to change then uncertainty and estimation risk
become dangerously high.
Thus variability in software requirements means instability in cost and schedule.
However, a project manager should not become obsessive about estimation as modern software engineering
approaches are iterative in nature hence making it possible to revise estimates.
Software Project Planning Process
Software project planning provides a framework that enables the manager to make reasonable estimates of
resources, cost and schedule.
Although there is inherent uncertainty, the team embarks on a project plan.
But, this plan must be adapted and updated as the project progresses.
Software Project Planning Activities
Establish project scope
Determine feasibility
Analyze risks
Define resources
Estimate cost and effort
Develop project schedule
Software Scope
It is defined in one of the following ways:
A narrative description developed after communication with all stakeholders
A set of use-cases developed by end-user
It describes
functions & features to be delivered to end-user
Input and output data
“content” presented to users as they use the software
Performance considerations (processing and response time, etc)
Constraints (limits placed on software by external hardware, available memory, or existing systems),
interfaces and reliability that bound the system
Software Feasibility
Feasibility check is conducted after scope identification.
It addresses questions like
Can we build software to meet this scope?
Is the project feasible?
These questions are very crucial but often overlooked either by software engineers or by the impatient customers
and managers
Putnam and Myers address feasibility in four dimensions
Technology
Is the project technically feasible? Is it within state of the art? Can defects be reduced as needed?
Finance
Is it financially feasible? Can the development be completed at a cost that the software
organization, the client or the market can afford
Time
Will the project’s time-to-market beat the competition?
Resources
Does the organization have enough resources needed to succeed?
After scope and feasibility, next comes estimation of resources. Three major categories of resources are:
People/Human resources
Reusable software components
Development environment (s/w & h/w tools)
Each resource has 4 characteristics
Description of resource
Statement of availability
Time when resource will be required
Duration of time when resource will be applied
Human resources
This estimation involves
Selecting Skills (required to complete development)
Specifying organizational positions (manager, senior s/w engineering, ..) and specialty
Determining number of people based on development effort
For small projects, single person can do all s/w engineering tasks
For large projects, more number of people involved which may be geographically distributed. So,
location of resource also specified
No. of people can be determined after estimating development effort (e.g., person-months)
Reusable Software Resources
CBSE emphasizes the creation and reuse of software building blocks (components)
4 categories of software components
Off-the-shelf components
Ready-to-use existing software acquired from third party (COTS) or from (internal) past projects
Full-experience components
Existing specifications, designs, code, test data from past projects similar to software to be
developed (for current project). May require little modifications
Partial experience component
Existing specifications, designs, code, test data from past projects related to software to be
developed (for current project) but will require substantial modifications
New components
Software components that must be built for current project
(Development) Environment resources
Software Engineering Environment (SEE) includes hardware and software support for a software project
Hardware and software elements availability and time window must be specified
Software Project Estimation
Options for cost and effort estimates:
Delay estimation until late in project
Not a practical approach
Base estimation on similar past projects
Reasonable approach but not always successful
Use simple decomposition techniques to generate estimates
Divide and conquer approach. Divide project into major activities/functions and make estimates
Use some empirical model for estimation
Complements decomposition techniques
Which option is better?
Each approach can be used as a cross-check for the other
Decomposition Techniques
Decomposition can be performed in two aspects
Decomposition of problem
Decomposition of process
Estimation uses one or both forms of decompositions. But before this, software size must be estimated.
Software Sizing
Proper estimation of software size and mapping of size estimate to human effort, calendar time and cost are
important things which contribute to accuracy of overall software project estimation.
In project planning, size refers to a quantifiable outcome.
Direct approach – size is measured as LOC
Indirect approach – size is measured as function-points
Putnam and Myers suggested 4 different approaches for sizing problem
Fuzzy logic sizing
Function point sizing
Standard component sizing
Change sizing
Other types of estimations…
Problem based estimation (LOC-based and FP-based)
Process-based estimation
Use-case based estimation
Empirical Estimation Models
An estimation model for software uses empirically derived formulas.
These formulas can predict effort as a function of LOC or FP.
Empirical data that support most estimation models are derived from limited sample of projects, that is why, no
estimation model is appropriate for all classes of software and in all development environments.
Estimation model must be calibrated to reflect local conditions.
Structure of Estimation Models
A typical empirical model is derived using regression analysis on data collected from past projects
Overall structure of such models takes the form
E= A+B x (ev)C
A, B and C are empirically derived constants, E is effort in person-months and ev is estimation variable
(either LOC or FP)
The COCOMO Model
In his classic book “Software Engineering Economics”, Barry Boehm suggested the COnstructive COst MOdel (COCOMO).
COCOMO is a software cost estimation method for estimating effort, cost, and schedule for software projects.
It is based on a set of empirically derived equations.
These equations incorporate variables considered to be the major cost drivers of software development and maintenance.
The original COCOMO (COCOMO 81) was first published in 1981 and reflected the software development practices of the day.
A decade and a half later, the software development techniques changed dramatically and the original COCOMO
became problematic.
It then evolved into COCOMO II to fulfill the changing needs.
There are three versions of COCOMO 81:
o Basic
Used for rough, early estimates
o Intermediate
The most commonly used version which includes 15 different factors to account for the influence of various
project attributes such as personnel capability, hardware constraints, etc.
o Detailed
This version accounts for influence of different factors on individual project phases.
It is not used often.
COCOMO applies to three classes of software projects:
o Organic projects - "small" teams with "good" experience working with "less than rigid" requirements
o Semi-detached projects - "medium" teams with mixed experience working with a mix of rigid and less than
rigid requirements
o Embedded projects - developed within a set of "tight" constraints (hardware, software, operational, ...), may
require new technology, unfamiliar algorithms, or new problem solving method
COCOMO II is actually a hierarchy of estimation models that address the following areas:
o Application composition model
Used during the early stages of s/w engg. When prototyping of UI, s/w and system interaction,
performance assessment and tech. evaluation are paramount.
o Early design stage model
Used once requirements have been stabilized and basic architecture has been established
o Post-architecture stage model
Used during the construction of software
Like all estimation models for software, the COCOMO II requires sizing information.
Three different sizing options available as part of model hierarchy are:
o object points,
o function points and
o Lines of source code.
COCOMO II Application composition model uses object points
o Object points is an indirect software measure computed using counts of number of
Screens (at UI)
Reports
Components likely to be required to build the application
o Each object instance is classified into one of these complexity levels (simple, medium, difficult) on criteria
suggested by Boehm.
o Complexity is a function of number of client and server tables required to generate a screen or report and
number of sections or views within a screen or report
o After determining complexity, no. of screens, reports and components are weighted as in figure (23.6).
o The object point count is then determined by multiplying the original no. of object instances by weighting factor
and summing to obtain a total object point count.
For component-based development or when software reuse is applied, the %reuse is estimated and object point
count is adjusted:
o NOP = (object points) x [(100 - %reuse)/100]
NOP is new object points
To derive estimate of effort based on computed NOP value, a productivity rate must be derived
o PROD = NOP / person-month
Estimate of project effort can be derived as:
o Estimated effort = NOP/PROD
The Software Equation
Suggested by Putnam & Myers
It is a multivariable model
It assumes a specific distribution of effort over life of s/w project
It has been derived from productivity data collected for over 4000 modern-day s/w projects
E = [LOC x B0.333 / P]3 x (1/t4)
E = effort in person-months or person-years
B = special skills factor
P = productivity factor
t = project duration (months or years)
P reflects
Overall process maturity
Management practices
Extent to which good s/w engg practices are used
Level of prog. Languages used
State of s/w environment
Skills & experience of team
Application complexity
Typical values of P
P= 2000 - for a real-time embedded s/w
P= 10,000 - for telecomm. & systems s/w
P= 28,000 for business applications
Value of B
Increases slowly as “the need for integration, testing, quality assurance, documentation and management skills grows”.
For small programs (KLOC=5 to 15), B= 0.16, for larger programs (KLOC=more than 70), B=0.39
Software equation has two independent parameters
LOC
t
Minimum dev. Time equations derived from software equation
tmin= 8.14 (LOC/P)0.43
in months for tmin> 6 months
E = 180 Bt3
In person-months for E>= 20 person-months
Estimating Cost
It involves developing an approximation of the costs of resources needed to complete project activities.
Resource Rates
Unit rates (e.g., staff cost per hour, bulk material cost per cubic yard) for each resource must be known to
calculate project cost.
Activity duration estimates
These affect cost estimates on any project where project budget includes an allowance for cost of financing
(i.e., interest charges)
Estimating publications
Commercially available data on cost estimating.
Historical Information
Historical data can be obtained from one or more of the following:
Previous Project files,
Commercial cost estimating databases
Project team knowledge
Chart of accounts
It describes coding structure used by performing organization to report financial information in its general ledger.
Risks
The project team considers the extent to which the effect of risk is included in the cost estimates for each activity.
_____________________________________________
The chart indicates that progress started more rapidly than planned, but slowed significantly and fell behind
schedule at week 7 and 8.
This chart illustrates the schedule performance aspect of EVM .