SE 616 –
Introduction to Software Engineering
Management (Chapter 21)
The 4 P’s
- People — the most important element of
a successful project
- Senior managers - define
- Project (technical) managers -
- Practitioners - design and build
- Customers - set software
- End-users - interact with
- Product — the software to be built
- Context - how it fits into
- 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
- Project — all work required to make the
product a reality
- Senior managers who define the business issues that often have
significant influence on the project.
- Project (technical) managers who must plan, motivate,
organize, and control the practitioners who do software work.
- Practitioners who deliver the technical skills that are necessary
to engineer a product or application.
who specify the requirements for the software to be engineered and other
stakeholders who have a peripheral interest in the outcome.
- End-users who interact with the software
once it is released for production use.
that influence the end result ...
- delivery deadline
- budgets and costs
- application domain
- technology to be implemented
- system constraints
- user requirements
- available resources
Project Management Concerns
- Product Quality
- Risk Assessment
- Cost Estimation
- Project Scheduling
- Customer Communication
- 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
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
- 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
- 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
- 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
Avoid Team “Toxicity”
- A frenzied work atmosphere in
which team members waste energy and lose focus on the objectives of the
work to be performed.
- High frustration caused by
personal, business, or technological factors that cause
friction among team members.
- “Fragmented or poorly coordinated
procedures” or a poorly defined or improperly chosen process model that
becomes a roadblock to accomplishment.
- Unclear definition of roles
resulting in a lack of accountability and resultant finger-pointing.
- “Continuous and repeated exposure
to failure” that leads to a loss of confidence and a lowering of morale.
- Team members must have trust in
- The distribution of skills must
be appropriate to the problem.
- Mavericks may have to be excluded
from the team, if team cohesiveness is to be maintained.
- Team is “self-organizing”
- An adaptive team structure
- Uses elements of Constantine’s
random, open, and synchronous paradigms
- Significant autonomy
Team Coordination & Communication
- Formal, impersonal approaches
- software engineering documents
and work products (including source code),
- technical memos,
- project milestones,
- project control tools (Chapter
- change requests and related
- error tracking reports, and
repository data (see Chapter 26).
- Formal, interpersonal procedures
focus on quality assurance activities (Chapter 25) applied to software
engineering work products. These include status review meetings and design
and code inspections.
- Informal, interpersonal
procedures include group meetings for information dissemination and
problem solving and “collocation of requirements and development staff.”
- Electronic communication
encompasses electronic mail, electronic bulletin boards, and by extension,
video-based conferencing systems.
- Interpersonal networking includes
informal discussions with team members and those outside the project who may
have experience or insight that can assist team members.
Defining the Problem
The Product Scope
- Context. How does the software
to be built fit into a larger system, product, or business context and
what constraints are imposed as a result of the context?
- Information objectives. What
customer-visible data objects (Chapter 8) are produced as output from the
software? What data objects are required for input?
- Function and performance. What function does the software perform
to transform input data into output? Are any special performance
characteristics to be addressed?
- Software project scope must be
unambiguous and understandable at the management and technical levels.
- Sometimes called partitioning or
- Once scope is defined …
- It is decomposed into
- It is decomposed into
user-visible data objects
- It is decomposed into a set of
- Decomposition process continues
until all functions or problem classes have been defined
- Once a process framework has been
the degree of rigor required
- Define a task set for each
software engineering activity
- Software engineering tasks
- Work products
- Quality assurance points
Melding Problem and Process
Typical Customer Communication Activity
- Projects get into trouble when …
- Software people don’t understand
their customer’s needs.
- The product scope is poorly
- Changes are managed poorly.
- The chosen technology changes.
- Business needs
change [or are
- Deadlines are unrealistic.
- Users are resistant.
- Sponsorship is lost [or was never
- The project team lacks people
with appropriate skills.
- Managers [and practitioners]
avoid best practices and lessons learned.
Common-Sense Approach to
- Start on the right foot.
This is accomplished by working hard (very hard) to understand the
problem that is to be solved and then setting realistic objectives and
- Maintain momentum. The project manager must provide
incentives to keep turnover of personnel to an absolute minimum, the team
should emphasize quality in every task it performs, and senior management
should do everything possible to stay out of the team’s way.
- Track progress.
For a software project, progress is tracked as work products (e.g.,
models, source code, sets of test cases) are produced and approved (using
formal technical reviews) as part of a quality assurance activity.
- Make smart decisions. In essence, the decisions of the
project manager and the software team should be to “keep it simple.”
- Conduct a postmortem analysis.
Establish a consistent mechanism for extracting lessons learned for
Getting the Essence of a Project (W5HH Principle - B.
- Why is the system being developed?
- What will be done? By when?
- Who is responsible for a function?
- Where are they
- How will the job be done technically and
- How much of each resource (e.g., people, software,
tools, database) will be needed?
- Formal risk analysis
- Top 10 risks, probability of
becoming a problem, impact
- Empirical cost and schedule estimation
- Current estimated size of
- Metrics-based project management
- Earned value tracking
- Defect tracking against quality targets
- People aware project management
and Project Metrics (Chapter 22)
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?
quantitative measure of the degree to which a system, component, or process
possesses a given attribute.
Why do we Measure?
- assess the status of an ongoing
- track potential risks
- uncover problem areas before they
- adjust work flow or tasks,
- evaluate the project team’s ability to control quality of software
A Good Manager Measures
- We measure the efficacy of a
software process indirectly.
- That is, we derive a set of
metrics based on the outcomes that can be derived from the process.
- Outcomes include
- measures of errors uncovered
before release of the software
- defects delivered to and
reported by end-users
- work products delivered
- human effort expended
- calendar time expended
- schedule conformance
- other measures.
- We also derive process metrics by
measuring the characteristics of specific software engineering tasks.
Process Metrics Guidelines
- Use common sense and
organizational sensitivity when interpreting metrics data.
- Provide regular feedback to the
individuals and teams who collect measures and metrics.
- Don’t use metrics to appraise
- 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.
- majority focus on quality achieved as a consequence
of a repeatable or managed process
- statistical SQA data: error categorization &
- defect removal efficiency: propagation from
phase to phase
- reuse data
- 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
- 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
- Effort/time per software
- Errors uncovered per review hour
- Scheduled vs. actual milestone
- Changes (number) and their
- Distribution of effort on
software engineering tasks
- 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
- Don’t obsess on a single metric to the exclusion of
other important metrics.
- Direct - Cost and effort applied
- LOC - lines of code
- execution speed
- defects reported over time
- Indirect - functionality, quality, complexity,
Normalization for Metrics
- Normalized data are used to evaluate the process and
- Size-oriented normalization -
- Function-oriented normalization
- function point approach
- 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
- number of user inputs - provides info to user (e.g.
data items, screens, etc)
- number of user inputs - online input that creates an
- number of files - each logical master file
- number of external interfaces - machine readable
Taking Complexity into Account
are rated on a scale from 0 (Not Important) to 5 (Very Important)
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
Defect Removal Efficiency
= (errors) / (errors + defects)
errors = problems found before release
= problems found after release
DRE = 1
Metrics for Small Organizations
- time (hours or days) elapsed from the
time a request is made until evaluation is complete, tqueue.
- effort (person-hours) to perform the
- time (hours or days) elapsed from
completion of evaluation to assignment of change order to personnel, teval.
- effort (person-hours) required to make
the change, Wchange.
- time required (hours or days) to make
the change, tchange.
- errors uncovered during work to make
- defects uncovered after change is
released to the customer base, Dchange.
- Identify your business goals.
- Identify what you want to know or
- Identify your subgoals.
- Identify the entities and
attributes related to your subgoals.
- Formalize your measurement goals.
- Identify quantifiable questions
and the related indicators that you will use to help you achieve your
- Identify the data elements that
you will collect to construct the indicators that help answer your
- Define the measures to be used,
and make these definitions operational.
- Identify the actions that you
will take to implement the measures.
- Prepare a plan for implementing
Managing Variation - Statistical Process Control
The mR (moving range) Control Chart