CS615 – Software
Engineering I |
Lecture 2 |
Project Management (Chapter 3)
Management Spectrum
The 4 P’s
-
People — the most important element
of a successful project
-
Senior managers - define business issues
-
Project (technical) managers - control
practitioners
-
Practitioners - design and build systems
-
Customers - set software requirements
-
End-users - interact with delivered software
-
Product — the software to be built
-
Context - how it fits into larger
system
-
Information Objectives - what data comes
into and goes out of the software
-
Function and Peformance
-
Process — the set of framework activities
and software engineering tasks to get the job done
-
Software engineering paradigm used
-
Project — all work required to make
the product a reality
Software Projects
Factors that influence
the end result ...
-
size
-
delivery deadline
-
budgets and
costs
-
application
domain
-
technology
to be implemented
-
system constraints
-
user requirements
-
available resources
Project Management Concerns
-
Product Quality
-
Risk Assessment
-
Measurement
-
Cost Estimation
-
Project Scheduling
-
Customer Communication
-
Staffing
-
Other Resources
-
Project Monitoring
Why Projects Fail
-
an unrealistic deadline
is established
-
changing customer
requirements
-
an honest underestimate
of effort
-
predictable and/or
unpredictable risks
-
technical difficulties
-
miscommunication among
project staff
-
failure in project management
Software Teams
The following factors
must be considered when selecting a
software project
team structure ...
-
the difficulty of
the problem to be solved
-
the size of the resultant
program(s) in lines of code or function points
-
the time that the
team will stay together (team lifetime)
-
the degree to which
the problem can be modularized
-
the required quality
and reliability of the system to be built
-
the rigidity of the
delivery date
-
the degree of sociability
(communication) required for the project
Organizational Paradigms
-
closed paradigm
— structures a team along a traditional hierarchy of authority
-
random paradigm
— structures a team loosely and depends on individual initiative of the
team members
-
open paradigm
— attempts to structure a team in a manner that achieves some of the controls
associated with the closed paradigm but also much of the innovation that
occurs when using the random paradigm
-
synchronous paradigm
— relies on the natural compartment-alization of a problem and organizes
team members to work on pieces of the problem with little active communication
among themselves
Defining the Problem
-
establish scope
— a narrative that bounds the problem
-
decomposition
— establishes functional partitioning
Melding Problem and
Process
Typical Customer Communication Activity
Getting the Essence
of a Project (W5HH Principle - B. Boehm)
-
Why is the system being developed?
-
What will be done? By when?
-
Who is responsible for a function?
-
Where are they organizationally located?
-
How will the job be done technically and
managerially?
-
How much of each resource (e.g., people,
software, tools, database) will be needed?
Critical Practices
-
Formal risk analysis
-
Top 10 risks, probability of becoming a
problem, impact
-
Empirical cost and schedule estimation
-
Current estimated size of program
-
Metrics-based project management
-
Earned value tracking
-
Defect tracking against quality targets
-
People aware project management
Software Process and Project Metrics (Chapter
4)
Measurement & Metrics
... collecting metrics is too
hard ...
... it's too time-consuming
... it's too political
... it won't prove anything ...
Anything that you need to quantify can
be measured
in some way that is superior to not
measuring it at all ...
What is a Metric?
A quantitative measure
of the degree to which a system, component, or process possesses a given
attribute.
Why do we Measure?
-
To characterize
-
To evaluate
-
To predict
-
To improve
A Good Manager Measures
Process Metrics
-
majority focus on
quality achieved as a consequence of a repeatable or managed process
-
statistical SQA data:
error categorization & analysis
-
defect removal efficiency:
propagation from phase to phase
-
reuse data
Project Metrics
-
Effort / time per
SE task
-
Errors uncovered
per review hour
-
Scheduled vs. actual
milestone dates
-
Changes (number)
and their characteristics
-
Distribution of effort
on SE tasks
Product Metrics
-
focus on the quality
of deliverables
-
measures of analysis
model
-
complexity of the
design
-
internal algorithmic
complexity
-
architectural complexity
-
data flow complexity
-
code measures (e.g.,
Halstead)
-
measures of process
effectiveness
-
e.g., defect removal
efficiency
Metrics Guidelines
-
Use common sense
and organizational sensitivity when interpreting metrics data.
-
Provide regular feedback
to the individuals and teams who have worked to collect measures and metrics.
-
Don’t use metrics
to appraise individuals.
-
Work with practitioners
and teams to set clear goals and metrics that will be used to achieve them.
-
Never use metrics
to threaten individuals or teams.
-
Metrics data that
indicate a problem area should not be considered “negative.” These data
are merely an indicator for process improvement.
-
Don’t obsess on a
single metric to the exclusion of other important metrics.
Software Measurement
Measurements
-
Direct - Cost and
effort applied
-
LOC - lines of code
-
execution speed
-
defects reported
over time period
-
Indirect - functionality,
quality, complexity, efficiency, reliability
Normalization for Metrics
-
Normalized data are
used to evaluate the process and the product
-
Size-oriented normalization
- line-of-code approach
-
Function-oriented
normalization - function point approach
Size-Oriented Metrics
-
errors per KLOC (thousand
lines of code)
-
defects per KLOC
-
$ per LOC
-
page of documentation
per KLOC
-
errors per person-month
-
LOC per person-month
-
$ per page of documentation
Function-Oriented Metrics
- Function Points
-
errors per FP
-
defects per FP
-
$ per FP
-
pages of documentation
per FP
-
FP per person-month
Why Use for FP Measures?
-
independent of programming
language
-
uses readily countable
characteristics of the "information domain" of the problem
-
does not penalize
inventive implementations that require fewer lines of code
-
makes it easier to
accomodate reuse and the trend toward object-oriented approaches
Computing Function Points
Sample Table for
Calculating FP
-
number of user inputs
- input that provides distinct data
-
number of user inputs
- provides info to user (e.g. data items, screens, etc)
-
number of user inputs
- online input that creates an intermediate response
-
number of files -
each logical master file
-
number of external
interfaces - machine readable interfaces
Taking Complexity
into Account
(Factors are rated on a scale from 0 (Not
Important) to 5 (Very Important)
data communications |
on-line update |
distributed functions |
complex processing |
heavy usage configuration |
installationease |
transaction Rate |
operational ease |
on-line data entry |
multiple sites |
end user efficiency |
facilitates change |
Measuring Software Quality
-
Correctness — the degree to which a program
operates according to specification
-
Maintainability — the degree to which a
program is amenable to change
-
Integrity — the degree to which a program
is impervious to outside attack
-
Usability — the degree to which a program
is easy to use
Defect Removal Efficiency
DRE = (errors) / (errors + defects)
where
errors = problems found before
release
defects = problems found after release
Ideal DRE = 1
Managing Variation -
Statistical Process Control
The mR (moving range) Control Chart
Software Project Planning (Chapter 5)
-
The overall goal of project planning is
to establish a pragmatic strategy for controlling, tracking, and monitoring
a complex technical project.
-
Probably the most time-consuming
project management activity
-
Continuous activity from initial concept
through to system delivery. Plans must be regularly revised as new information
becomes available
-
Various different types of plan may be
developed to support the main software project plan that is concerned with
schedule and budget
Types of project plan
Steps in Process
-
Scoping — understand the problem and the
work that must be done
-
Estimation — how much effort? how much
time?
-
Risk — what can go wrong? how can we avoid
it? what can we do about it?
-
Schedule — how do we allocate resources
along the timeline? what are the milestones?
-
Control strategy — how do we control quality?
how do we control change?
Understanding Scope
-
understand the customers needs
-
understand the business context
-
understand the project boundaries
-
understand the customer’s motivation
-
understand the likely paths for change
-
understand that ... nothing is guaranteed!
Cost Estimation
-
project scope must be explicitly defined
-
task and/or functional decomposition is
necessary
-
historical measures (metrics) are very
helpful
-
at least two different techniques should
be used
-
remember that uncertainty is inherent
Estimation Techniques
-
past (similar) project experience
-
conventional estimation techniques
-
task breakdown and effort estimates
-
size (e.g., FP) estimates
-
tools (e.g., Checkpoint)
Functional Decomposition
Creating a Task Matrix
(Obtained from “process framework”)
Conventional Methods:
LOC/FP Approach
-
compute LOC/FP using estimates of information
domain values
-
use historical effort for the project
Example: LOC Approach
Example: FP Approach
Tool-Based Estimation
-
project characteristics
-
calibration factors
-
LOC/FP data
Empirical Estimation
Models
Estimation Guidelines
-
estimate using at least two techniques
-
get estimates from independent sources
-
avoid over-optimism, assume difficulties
-
you've arrived at an estimate, sleep on
it
-
adjust for the people who'll be doing the
job
The Make-Buy Decision
Computing Expected Cost
expected cost = SUM[ (path probability)i
x (estimated path cost)i ]
For example, the expected cost to build
is:
expected costbuild
= 0.30($380K)+0.70($450K) = $429 K
similarly,
expected costreuse
= $382K
expected costbuy
= $267K
expected costcontract
= $410K