Lecture for Chapter 13, Configuration Management
Download
Report
Transcript Lecture for Chapter 13, Configuration Management
Using UML, Patterns, and Java
Object-Oriented Software Engineering
Chapter 14: Project Management
Outline
Work breakdown structure
What is it?
Building a work breakdown structure
Project scheduling
Dependency diagrams
Estimating task durations
Project organization
Types of organizations
Communications infrastructure
Software Project Management Plan (SPMP)
Overview of project control activities
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
3
Work Breakdown Structure
The hierarchical representation of all the tasks in a project is called
the work breakdown structure (WBS). First Version of a UML
Model
Work Breakdown Structure
Task
*
But Tasks are Parts of Activities. What would be a better model?
Work Breakdown Structure
*
Work
Task
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
*
Activity
8
Tasks
Smallest unit of management accountability
Atomic unit of planning and tracking
Tasks have finite duration, need resources, produce tangible result
(documents, code)
Specification of a task: Work package
Name, description of work to be done
Preconditions for starting, duration, required resources
Work product to be produced, acceptance criteria for it
Risk involved
Completion criteria
Includes the acceptance criteria for the work products (deliverables)
produced by the task.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
9
Activities
Major unit of work
Culminates in major project
milestone:
Internal checkpoint should not
be externally visible
Scheduled event used to
measure progress
Milestone often produces
project baselines:
Activitites may be grouped into
larger activities:
Establishes hierarchical
structure for project (phase,
step, ...)
Allows separation of concerns
Precedence relations often exist
among activities
formally reviewed work product
under change control (change
requires formal procedures)
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
10
Creating Work Breakdown Structures
Two major philosophies
Activity-oriented decomposition (“Functional decomposition”)
Write the book
Get it reviewed
Do the suggested changes
Get it published
Result-oriented (“Object-oriented decomposition”)
Chapter 1
Chapter 2
Chapter 3
Which one is best for managing? Depends on project type:
Development of a prototype
Development of a product
Project team consist of many unexperienced beginners
Project team has many experienced developers
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
11
Developing Work Breakdown Structures
There are several different approaches to develop and display a work
breakdown structure. Each is effective under different circumstances
Approaches to break activities into detail by
Product component approach
Examples: Design documents, manuals, the running system
Functional approach
Analysis, design, implementation, integration, testing, delivery, reviews
Geographical area
Examples: USA team, China team, India team, ...
Organizational approach
Research, product development, marketing, sales
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
13
When to use what approach
Distributed teams:
Geographical area approach
Experienced teams:
Product component approach
Project has mostly beginners or project manager is inexperienced:
Functional approach
Project is a continuation of previously successful projects, no change
in requirements, no new technology
Organizational approach
When you choose an approach, stick with it to prevent possible
overlap in categories
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
14
How do you develop a good WBS?
Top down approach:
Start at the highest, top level activities and systematically develop
increasing levels of detail for all activities.
Brainstorming:
Generate all activities you can think of that will have to be done and then
group them into categories.
Which one you use depends on
how familiar you and your team are with the project,
whether similar projects have successfully been performed in the past, and
how many new methods and technologies will be used.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
15
The Top Down WBS approach
Specify all activities required for the entire project to be finished
Determine all task required to complete each activity
If necessary specify subactivities required to complete each task
Continue in this way until you have adequately detailed your project.
Approach is good if
You are or your team is familiar with the problem.
You have successfully managed a similar project in the past
You are not introducing new methodologies, methods or tools
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
16
Top-down example: Architecture-centric approach
Work with architect to come up with a tentative top-level design
(software architecture) at the beginning of the project and use this
decomposition to determine the work breakdown structure.
Top-level decomposition can be functional or object-oriented.
This approach is a deviation from traditional practices and may be
feasible in certain domains with emerging standard architectures.
This architecture is used strictly for decomposing the project tasks.
Architecture must be revisited during system design after
requirements analysis.
Project tasks may also be reorganized to reflect the changed
architecture.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
17
The Brainstorming WBS approach
On a single list, write any activities you think will have to be
performed for your project.
Brainstorming means you
Don’t worry about overlap or level of detail
Don’t discuss activity wordings or other details
Don’t make any judgements
Write everything down
Then study the list and group activities into a few major categories
with common characteristics.
If appropriate group activities under a smaller number of tasks
Consider each category you have created and use the top-down WBS
approach to determine any additional activities you may have
overlooked.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
18
Displaying Work Breakdown Structures
Three different formats are usually used
Organization-chart format:
Effectively portrays an overview of your project and the hierarchical
relationships of different activities and tasks.
Outline format
Subactivities and tasks are indented
Bubble format
The bubble in the center represents your project
Lines from the center bubble lead to activities
Lines from activities lead to tasks
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
19
Prepare Report
Prepare Report
Prepare
Draft Report
Review
Draft Report
Org-Chart Format
Write
Final Report
Prepare
Final Report
Print
Final Report
1.0 Prepare draft report
2.0 Review draft report
3.0 Prepare final report
3.1 Write final report
3.2 Print final report
Outline Format
Review
Final Report
Review
Draft Report
Prepare
Report
Bubble Format
Review
Draft Report
Modified from Bruegge & Dutoit’s originals
Write
Final Report
Object-Oriented Software Engineering: Using UML, Patterns, and Java
Print
Final Report
20
Best format for displaying WBS?
Org-chart format:
Often good for a “bird view” of the project (executive summaries,...)
Less effective for displaying large numbers of activities
Outline format:
Easier to read and understand if WBS contains many activities
Bubble format:
Effective for supporting the brainstorming process
Not so good for displaying work breakdown structures to audiences who are not familiar
with the project.
Use bubble format to develop the WBS, then turn it into Org-Chart or outline format.
In large projects:
Use a combination of org-chart and outline formats:
Display activities in org-chart format,
Display subactivities and tasks in outline format.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
21
Heuristics for developing high quality WBS
Involve the people who will be doing the work in the development of the WBS
In particular involve the developers
Review and include information from work breakdown structures that were
developed for similar projects
Use a project template if possible
Use more than one WBS approach
Do project component and functional approach simultaneously
This allows you often to identify overlooked activities
Make assumptions regarding uncertain activities
Identify risky activities
These are often the activities that whose times are hard to estimate
Keep your current work breakdown structure current
Update your WBS regularly
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
22
Heuristic: Use Templates
Try to derive the WBS from a template, either an existing one or one
that you start developing with this project.
A template reflects the cumulative experience gained from doing
numerous projects of a particular type.
Using templates can save you time and improve your accuracy
When developing templates, develop them for frequently performed
tasks (reviews, meetings, …). “Checklists”
Develop and modify your WBS templates from previous projects that
worked, not from plans that looked good.
Use templates as starting points, not as ending points
Continually update your templates to reflect the experience gained from
performing different projects.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
23
Heuristic: Develop always more than one WBS
Consider to create more several different hierarchies with different
categories for your work breakdown structure.
Having two or more different perspectives helps you identify activities you
may overlook.
Good starting point are the following hierarchies:
Entity-oriented decomposition
Activity-oriented decomposition
Example: You are running your first object-oriented project.
Develop a WBS based on the project documents
Develop a WBS based on the software process activities
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
24
WBS Based on Project Documents
(Entity-oriented)
<<Name>>
Project
Problem
Statement
- Write Introduction
- Write Requirements
- Write Constraints
- ...
Modified from Bruegge & Dutoit’s originals
Project
Agreement
- Write Requirements
- Write Constraints
- Write Acceptance Criteria
- Promise delivery date
RAD
- Write Introduction
- Describe Functional
Model
- Describe Object Model
- Describe Dynamic
Model
...
Object-Oriented Software Engineering: Using UML, Patterns, and Java
SDD
- Write Design Goals
- Write Hardware
Software mapping
-Write boundary
conditions
- Write Data Manageme
- Write Open Issues
...
25
WBS Based on Software Process
(Activity-oriented)
<<Name>>
Project
Project
Initiation
- Establish guidelines
- Formulate requirements
with client
- Establish scenarios
- Write project agreement
Planning
- Determine WBS
- Determine dependencies
between tasks
- Write SPMP
- Assign teams to
subsystems
- Establish project calendar
Analysis
- Brainstorm on
application domain objects
- Develop class diagram
- Partition objects into
boundary, entity and
control objects
- Develop use cases
Design
- Develop Models
- Write code
- Present problems to
coach
- Give status reports
- Write RAD
- Write SDD
- Write ODD
Question: Which activities mentioned in the WBS based on Project documents
is left out in the WBS based on Software Process?
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
26
Heuristic: Identifying Risky activities
When you identify activities for a work breakdown structure, you
can also identify the risks in your project.
Risks are usually associated with “unknown information”.
Unknown information comes in two flavors
A known unknown: Information that you don’t have but someone else does.
Find out who has the information and determine what the information is.
(Interviews, Phone calls, tasks analysis)
An unknown unknown: Information that you don’t have because it does not
yet exist.
Develop contingency plans for each of these risks.
These contingency plans need be followed when you find out the information does
not exist.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
27
Choose a single WBS format
Writing the WBS in different formats is good, because it allows you
to identify activities that you may have overlooked
However, after you identify these activities add them to either WBS
Choose a single WBS format to be used in the SPMP and for your
project:
Nothing confuses people fast than trying to use two different work
breakdown structures to describe the same project.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
30
How Detailed should the WBS be?
Sometimes the activities are not clear at all, especially in software
projects:
Unclear requirements and/or changing requirements
Dependency on technology enablers that appear or are promised to appear
after project kickoff
Simultaneous development of hardware and software (“concurrent
engineering”)
A project plan, especially for an innovative software project, should
not address details beyond 3 months.
Even for the first 3 months project activities might not all be detailable,
for example when the requirements are unclear or change or introduction
of technology enablers is expected.
How should we describe a WBS for a longer project?
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
31
Doing a WBS for Long-Term Projects
When developing a work breakdown structure for a long-term
project (longer than 3 months), introduce at least two phases
Phase 1 (3 months): Plan your WBS in detail
Here list all activities that take two weeks or less to complete
Phase 2, Phase 3, … (n-months) Plan the WBS for these phases in
less and less detail
Here list activities that you estimate will take between one and two
months
At the end of phase 1, revise the phase 2 activities to the two week
level for the next 3 months.
Modify any future activities as necessary based on the results of your first
three months work.
Continue to revise the SPMP this way throughout the project.
(SPMP as an “evolving” document)
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
32
Outline
Work breakdown structure
What is it?
Building a work breakdown structure
Project scheduling
Dependency diagrams
Estimating task durations
Project organization
Types of organizations
Communications infrastructure
Software Project Management Plan (SPMP)
Overview of project control activities
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
33
From the WBS to the Dependency Diagram
The work breakdown structure does not show any temporal
dependence among the activities/tasks
Can we excavate before getting the permit?
How much time does the whole project need if I know the individual times?
What can be done in parallel?
Are there any critical actitivites, that can slow down the project significantly?
Temporal dependencies are shown in the dependency diagram
Nodes are activities
Lines represent temporal dependencies
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
34
Dependency Diagrams (Overview)
Dependency diagrams consist of 3 elements
Event (also called milestone): A significant occurrence in the life of a project.
Activity: Work required to move from one event to the next.
Span time ( also called duration or elapsed time): The actual calendar time required
to complete an activity.
Span time parameters: people’s availability, parallelizability of the activity, availability of
nonpersonnel resources, ….
Dependency Diagram are drawn as a connected graph of nodes and arrows.
2 commonly used diagram notations to display dependency diagrams:
1) Activity-on-the-arrow (Mealy automaton)
2) Activity-in-the-node (Moore automaton)
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
35
Why Dependency Diagrams?
Example:
You are assigned a project consisting of 10 activities which take one week
each to be completed.
How long does the project take?
When projects have more than 15-20 activities, one cannot to
compute the schedule in the head any more.
Dependency Diagrams are a formal notation to help in the
construction and analysis of complex schedules
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
36
1) Activity-on-the-arrow Diagram Notation
Activity
A
Event (Milestone
or Deliverable)
RAD
B
t
Event (Milestone
or Deliverable)
Span Time
System Design
SDD
T1 = 4 weeks
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
37
PERT
PERT is an activity-on-the-arrow notation
PERT = Program Evaluation and Review Technique
Developed in the 50s to plan the Polaris weapon system in the USA.
PERT allows to assign optimistic, pessimistic and most likely
estimates for the span times of each activity.
You can then compute the probability to determine the likelihood that
overall project duration will fall within specified limits.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
38
2) Activity-in-the-node Diagram Notation
Activity
A Node is either an event or an activity.
Distinction: Events have span time 0
A
tA = 0
B
tB = 0
C
tC = 0
Event (Milestone
or Deliverable)
Event (Milestone
or Deliverable)
Milestone boxes are often highlighted by double-lines
RAD
available
t=0
Modified from Bruegge & Dutoit’s originals
System Design
t = 2 weeks
Object-Oriented Software Engineering: Using UML, Patterns, and Java
SDD
available
t=0
39
Example of an Activity-in -the -Node Diagram
Activity 1
Activity 2
t1 = 5
t2 = 1
Start
t=0
End
t=0
Activity 3
t3 = 1
Modified from Bruegge & Dutoit’s originals
Activity 4
Activity5
t4 = 3
5= 2
Object-Oriented Software Engineering: Using UML, Patterns, and Java
40
What do we do with these diagrams?
Compute the project duration
Determine activities that are critical to ensure a timely delivery
Analyse the diagrams
to find ways to shorten the project duration
To find ways to do activities in parallel
2 techniques are used
Forward pass (determine critical paths)
Backward pass (determine slack time)
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
41
Definitions: Critical Path and Slack Time
Critical path:
A sequence of activities that take the longest time to complete
The length of the critical path(s) defines how long your project will take to
complete.
Noncritical path:
A sequence of activities that you can delay and still finish the project in the
shortest time possible.
Slack time:
The maximum amount of time that you can delay an activity and still
finish your project in the shortest time possible.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
42
Example of a critical path
Activity 1
Activity 2
t1 = 5
t2 = 1
Start
t=0
End
t=0
Activity 3
t3 = 1
Activity 4
Activity5
t4 = 3
t55 = 2
Critical path in bold face
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
43
Definitions: Start and Finish Dates
Earliest start date:
The earliest date you can start an activity
Earliest finish date:
The earliest date you can finish an activity
Latest start date:
The latest date you can start an activity and still finish the project in the
shortest time.
Latest finish date:
The latest date you can finish an activity and still finish the project in the
shortest time.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
44
2 Ways to Analyze Dependency Diagrams
Forward pass: Goal is the determination of critical paths
Compute earliest start and finish dates for each activity
Start at the beginning of the project and determine how fast you can
complete the activites along each path until you reach the final project
milestone.
Backward pass: Goal the determination of slack times
Compute latest start and finish dates activity
Start at the end of your project, figure out for each activity how late it can
be started so that you still finish the project at the earliest possible date.
To compute start and finish times, we apply 2 rules
Rule 1: After a node is finished, we can proceed to the next node(s) that is
reachable via a transition from the current node.
Rule 2: To start a node all nodes must be complete from which transitions
to that node are possible.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
45
Forward Path Example
Activity 1
Activity 2
t1 = 5
t2 = 1
Start
t=0
End
t=0
Project Duration = 7
Activity 3
tA3 = 1
Activity
A1
A2
A3
A4
A5
Earliest Start(ES)
Start of week 1
Start of week 6
Start of week 1
Start of week 2
Start of week 6
Modified from Bruegge & Dutoit’s originals
Activity 4
Activity5
tA4 = 3
t5 = 2
Earliest Finish(EF)
End of week 5
End of week 6
End of week 1
End of week 4
End of week 7
Object-Oriented Software Engineering: Using UML, Patterns, and Java
46
Backward Path Example
Activity 1
Activity 2
t1 = 5
t2 = 1
Start
t=0
End
t=0
Project Duration = 7
Activity 3
tA3 = 1
Activity
A1
A2
A3
A4
A5
Latest Start(LS)
Start of week 1
Start of week 7
Start of week 2
Start of week 3
Start of week 6
Modified from Bruegge & Dutoit’s originals
Activity 4
Activity5
tA4 = 3
t5 = 2
Latest Finish(LF)
End of week 5
End of week 7
End of week 2
End of week 5
End of week 7
Object-Oriented Software Engineering: Using UML, Patterns, and Java
47
Computation of slack times
Slack time ST of an activity A:
STA = LSA - ESA
Subtract the earliest start date from the latest start date for each activity
Example: STA4 = 3 - 2 = 1
Slack times on the same path influence each other.
Example: When Activity 3 is delayed by one week, activity 4 slack
time becomes zero weeks.
Activity 1
Activity
A1
A2
A3
A4
A5
Slack time
0
1
1
1
0
Modified from Bruegge & Dutoit’s originals
Activity 2
Activity 2
tt2 =
1
2= 1
t1 = 5
Start
t=0
End
t=0
Activity 3
Activity 4
Activity5
tA = 1
tA4 = 3
t5 = 2
Object-Oriented Software Engineering: Using UML, Patterns, and Java
48
Path types in dependency graphs
Critical path: Any path in a dependency diagram, in which all
activities have zero slack time.
Noncritical path: Any path with at least one activity that has a
nonzero slack time.
Overcritical path: A path with at least one activity that has a negative
slack time.
Overcritical paths should be considered as serious warnings: Your plan
contains unreal time estimates
Any dependency diagram with no fixed intermediate milestones has at
least one critical path.
A project schedule with fixed intermediate milestones might have no
critical path
Example: The analysis review must be done 1 month after project start, the
estimated time for all activities before the review is 3 weeks.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
49
Frequently used formats for dependency graphs
Milestone View (“Key-Events report”):
A table that lists milestones and the dates on which you plan to reach
them.
Activities View:
A table that lists the activities and the dates on which you plan to start and
end them
Gantt chart View:
A graphical illustrating on a timeline when each activity will start, be
performed and end.
Combined Gantt Chart and Milestone View:
The Gantt Chart contains activities as well as milestones.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
50
Key-Events Report (example)
Date
August 26
October 16
October 26
November 7
November 20
Nov 26
Dec 11
Milestone
Project Kickoff (with Client)
Analysis Review
System Design Review
Internal Object Design Review
Project Review (with Client)
Internal Project Review
Acceptance Test (with Client)
Good for introduction of SPMP and high executive briefings
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
51
Activities View
Date
Jul 17-Aug 23
Aug 26 - Sep 24
Sep 11-Oct 8
Oct 9 - Oct 26
Oct 28-Nov 7
Nov 8 - Nov 20
Nov 22 - Dec 4
Dec 4 - Dec 10
Dec 11- Dec 18
Project Phases
Preplanning Phase
Project Planning
Requirements Analysis
System Design
Object Design
Implementation & Unit Testing
System Integration Testing
System Testing
Post-Mortem Phase
Good during developer meetings
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
52
Gantt Chart
Activity 1
Activity 2
Activity 3
Activity 4
Activity 5
0
Easy to read
Modified from Bruegge & Dutoit’s originals
1
2
3
4
5
6
7
Time (in weeks after start)
Object-Oriented Software Engineering: Using UML, Patterns, and Java
53
Gantt Chart
with milestones
Project Start
Activity 1
Activity 2
Activity 3
Design Review
Activity 4
Activity 5
Project Finish
0
1
Good for reviews.
Modified from Bruegge & Dutoit’s originals
2
3
4
5
6
7
Time (in weeks after start)
Object-Oriented Software Engineering: Using UML, Patterns, and Java
54
Two Types of Gantt Charts
Person-Centered View
To determine people‘s load
Joe
A1
A2
Activity-Centered View
To identify teams working
together on the same tasks
A3
A1
Joe, Toby
Mary
Toby
A1
Clara
A3
A3
A2
Joe
A3
Clara, Toby, Joe
Time
Time
Choose one view, stay with it. Usually base the view on the WBS structure
Managing Experienced Teams: Person-centered view
Managing Beginners: Activity oriented view
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
55
Tools support for Establishing Schedules
Tool support for
Graphical user interface for entering activity data
Automatic computation of critical paths
Multiple views (PERT, Gantt, table views) and switching between these
views
Many products available. Examples
Fast Track (http://www.aecsoft.com)
Main view: Gantt Charts
Microsoft Project
PERT Charts, Gantt Charts, combined Milestone/Gantt Charts
Tool use and training beyond the scope of this class
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
56
How to develop an Initial Project Schedule
Identify all your activities (reuse a template if possible)
Identify intermediate and final dates that must be met
Assign milestones to these dates
Identify all activities and milestones outside your project that may
affect your project’s schedule
Identify “depends on” relationships between all these identified
activities
Draw a dependency diagram for all identified activities and
relationships
Analyze the diagram to determine critical paths and slack times of
noncritical paths.
Example: Establish a schedule for system integration testing
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
58
Determining Task Sizes
Finding the appropriate task
size is problematic
Todo lists from previous
projects
During initial planning a task is
necessarily large
You may not know how to
decompose the problem into
tasks at first
Each software development
activitity identifies more tasks
and modifies existing ones
Modified from Bruegge & Dutoit’s originals
Tasks must be decomposed into
sizes that allow monitoring
Work package usually
corresponds to well defined
work assignment for one worker
for a week or a month.
Depends on nature of work and
how well task is understood.
Object-Oriented Software Engineering: Using UML, Patterns, and Java
68
How to reduce the planned project time
Recheck the original span time estimates
Ask other experts to check the estimates
Has the development environment changed? (batch vs interactive systems, desktop
vs laptop development)
Hire more experienced personnel to perform the activities
Trade-off: Experts work fast, but cost more
Consider different strategies to perform the activities
Consider to Buy a work product instead of building it (Trade-off: Buy-vs-build)
Consider extern subcontractor instead of performing the work work internally
Try to find parallelizable activites on the critical path
Continue coding while waiting for the results of a review
Risky activity, portions of the work may have to be redone.
Develop an entirely new strategy to solve the problem
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
69
Typical Mistakes when Developing Schedules
The “Backing in” Mistake
Using Fudge Factors
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
70
The “Backing in” Mistake
Definition “Backing In”:
You start at the last milestone of the project and work your way back
toward the starting milestone, while estimating durations that will add up
to the amount of the available time
Problems with Backing in:
You probably miss activities because your focus is on meeting the time
constraints rather than identifying the required work
Your span time estimates are based on what you allow activites to take, not
what they actually require
The order in which you propose activities may not be the most effective
one.
Instead, start with computing all the required times and then try to
shorten the project duration
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
71
Using Fudge Factors
Parkinson formulated this law for project completion:
Work tends to expand to fill the time allotted for it.
Fudge factor:
A fudge factor is the extra amount of time you add to your best estimate of
span time “just to be safe”.
Example: Many software companies double their span time estimates.
Don’t use fudge factors because of Parkinson’s law.
If an activity takes 2 weeks, but you add a 50% fudge factor, chances are
almost zero that it will be done in less then 3 weeks.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
72
Heuristics for dealing with time
1. First Set the Project Start Time =>
Determines the planned project time
Determine the critical path(s)
2. Then try to reduce the planned project time
If you want to get your project done in less time, you need to consider
ways to shorten the aggregate time it takes to complete the critical path.
Avoid fudge factors
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
73
Outline
Work breakdown structure
What is it?
Building a work breakdown structure
Project scheduling
Dependency diagrams
Estimating task durations
Project organization
Types of organizations
Communications infrastructure
Software Project Management Plan (SPMP)
Overview of project control activities
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
75
Organization
Definition Organization: A set of organizational units and their
different relationships with each other.
Organizational units can be organized according to many different
categories, for example by function or by project type. Typical
examples of organizational units:
Functional organization: Research, Development, Marketing, Sales
Project organization: Project 1, Project 2, ….
A organization usually has 3 different types of relationships between
organizational units.
Reporting structure: To report status information
Decision structure: To propagating decisions
Communication structure: To exchange of information
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
76
Functional Organization
Definition: In a functional organization participants are grouped
into so-called departments, each of which addresses a function.
Examples of departments:
Traditional businesses: Research, development, production, sales, finance.
In software companies the departments correspond to the activities in the
software process: Analysis, design, integration, testing departments.
Key properties:
Projects are usually pipelined through the departments of a functional
organization. The project starts in research, then it moves to development,
then it moves to production, ….
Only a few participants are involved in the complete project.
Separate departments often address the same cross-functional needs
(Examples: configuration management, IT infrastructure)
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
78
Properties of Functional Organizations
Advantages:
Members of a department have a good understanding of the functional area they
support.
Departments don‘t compete with another to get the support of their support
teams
Disadvantages:
Because each department has its own support team, different work procedures
and reporting systems are the rule.
It is difficult to make major investments in equipment and facilities.
Example: Two departments with a budget of 50,000 Euro each need a printer that costs
100,000 Euro.
Both need only 50% of the maximum capacity.
Neither department can buy it, because they don‘t have sufficient funds.
High chance for overlap or duplication of work among departments
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
80
Project Organization
In a project organization participants are grouped into projects,
each of which has a problem to be solved within time and budget.
Key properties:
Teams are assembled for a project as it is created. Each project has a
project leader.
All participants are involved in the complete project.
Teams are disassembled when the project terminates
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
81
Properties of Project Organizations
Advantages
Very responsive to new project requests (because the project is newly
established and can be tailored around the problem)
New people can be hired/selected who are very familiar with the problem
or who have special capabilities.
There is no waste of staff workload
Disadvantages:
Teams cannot be assembled rapidly. Often it is difficult to manage the
staffing/hiring process.
Because there are “no predefined lines”, roles and responsibilities need to
be defined at the beginning of the project
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
82
Matrix Organization
In a matrix organization, participants from different departments of the functional
organizastion are assigned to work on projects as they are created.
The project manager and team members may be assigned to the project for <= 100 %
of their time
Executive Office
Finance
Project A
Production
Sales
Marketing
Participants of Project A
Project B
Project C
Modified from Bruegge & Dutoit’s originals
Participants of Project B
Object-Oriented Software Engineering: Using UML, Patterns, and Java
83
Properties of Matrix Organizations
Advantages:
Teams for projects can be assembled rapidly
Scarce expertise can be applied to different projects as needed
Consistent work and reporting procedures can be used for projects of the
same type.
Disadvantages:
Team members usually are not familiar with each
Team member have different working styles
Team members must get used to each other
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
84
New Challenges in Matrix Organizations
Team members must respond to two different bosses with different focus:
Focus of the functional manager: Assignments to different projects, performance
appraisal
Focus of the project manager: Work assignments, project team support
Team members working on multiple projects have competing demands for their
time
Team members working on more than one project have even more project
members to report to
Some people who have claim on the team member’s time may be at similar levels
in the organization’s hierarchy
Multiple work procedures and reporting systems are used by different team
members
Development of common procedures needs to be addressed at project kickoff time
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
85
When to use a Functional Organization
Projects with high degree of certainty, stability, uniformity and
repetition.
Requires little communication
Role definitions are clear
When?
The more people on the project, the more need for a formal structure
Customer might insist that the test team be independent from the design
team
Project manager insists on a previously successful structure
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
86
When to Use a Project or Matrix Organization
Project with degree of uncertainty
Open communication needed among members
Roles are defined on project basis
When?
Requirements change during development
New technology develops during project
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
87
Metamodel for Organizations
Functional
Organization
Project
Organization
Matrix
Organization
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
88
Key Roles in Organizations
Project Manager: The person ultimately responsible for the
successful completion of the project
Project Team Member: Participants who are responsible for
performing individual activities and tasks (in a project or matrix
organization)
Functional Manager: The team member‘s supervisor in the
department (in a functional organization)
Upper management: People in charge of the departments or
projects
In the following we focus only on roles in project and matrix
organizations
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
89
Relationships between Roles
Organizations can have many different types of associations
between roles
The three most important associations for project organizations are:
Reporting, decision making and communicating
Reporting association:
Used for reporting status information
Decision association
Used for propagating decisions
Communication association
Used for exchanging information needed for decisions (e.g., requirements,
design models, issues).
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
90
Hierarchical Organization
Often also called centralized organization. Examples: Military, church, traditional
businesses.
Key property: The organization has a tree structure. Decisions are made at the
root and communicated to the leaf nodes. The decision association is also used for
reporting and communication.
Advantages:
Centralized control over project selection
One set of management and reporting procedures for all project participants
across all projects
Established working relationships among people
Clearly established lines of authority to set priorities and resolved conflicts
Authority to pressure people to honor their action items
Clearly defined career path
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
93
Hierarchical Project Organization
Information Flow
Chief Executive
Control Flow
First Level Manager
(“Front-Line Manager”)
A
B
Project Members
A wants to talk to B: Complicated Information Flow
B wants to make sure A does a certain change: Complicated Controlflow
Basis of organization:
Complicated information and control flow
across hierarchical boundaries
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
94
Disadvantages of Hierarchical Organizations
Slow response time
The process of evaluating and approving change requests often takes too
long because of long reporting/decision lines.
Difficult to manage the workload of the people:
People are assigned fulltime to the organization, but projects don’t’ come
in a smooth stream.
Project request might not require the people who are available or their
expertise.
Unfamiliarity with application or solution domain area
People are usually hired for their technical proficiency in a specialty that
the organization normally performs.
They often have only limited experience, if the problem to be solved is
outside of their field of expertise.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
96
Nonhierarchical Organizations
Key property: The organization has a general graph structure with
different edges for the decision, reporting and communication flows.
Decisions can be made at various nodes in the graph.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
97
Nonhierarchical Project Organization
Project
Leader
Coaches
Subsystem Team
A
Subsystem Team
Subsystem Team
B
Team
Members
A wants to talk to B: Communication Flow
B wants to make sure A does a certain change: Decision Flow
Basis of organization:
Nonlinear information flow across dynamically formed units
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
98
Observations on Organizational Structures
Hierarchical structure
“Reports”, “Decides” and “Communicates-With” all mapped on the same
association
Does not work well with iterative and incremental software development
process
Manager is not necessarily always right
Project-based structures
“Reports”, “Decides” and “Communicates-With”are different
associations
Cuts down on bureaucracy
Reduces development time
Decisions are expected to be made at each level
Hard to manage
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
100
Heuristics for Project Managers
1. Create team identity
Clarify team vision and working relationships
Define team procedures (meeting management, configuration management, system
integration strategy)
Clarify each participant‘s authority
Make sure your team is functioning
Be sure only one person is assigned as project manager
2. Create team member buy-in
Get commitment to the project goals (tough in matrix environment)
Get to know other people‘s style
3. Get support from the environment
Get a project champion (for example a power promoter)
4. Develop general procedures for
Conflict resolution
Communication between teams and project leaders, communication with upper
management and for communication with the client
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
101
Outline
Work breakdown structure
What is it?
Building a work breakdown structure
Project scheduling
Dependency diagrams
Estimating task durations
Project organization
Types of organizations
Communications infrastructure
Software Project Management Plan (SPMP)
Overview of project control activities
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
102
IEEE Std 1058: Standard for Software Project
Management Plans (SPMP)
What it does:
Specifies the format and contents of software project management plans.
It provides a standard set of abstractions for a project manager or a whole
organization to build its set of practices and procedures for developing
software project management plans
Abstractions: Project, Function, Activities, Tasks
What it does not do:
It does not specify the procedures or techniques to be used in the
development of the plan
It does not provide examples .
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
103
Software Project Management Plan Template
0. Front Matter
1. Introduction
2. Project Organization
3. Managerial Process
4. Technical Process
5. Work Elements, Schedule, Budget
Optional Inclusions
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
104
Outline
Work breakdown structure
What is it?
Building a work breakdown structure
Project scheduling
Dependency diagrams
Estimating task durations
Project organization
Types of organizations
Communications infrastructure
Software Project Management Plan (SPMP)
Overview of project control activities
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
105
Project Control
Project management does not end with the creation of the project plan.
Project management is responsible for project control during the steady state phase
of the project.
Project control activities
Project tracking
Development teams are kept accountable for executing their assigned tasks according
to plan.
The plan must be evolved as new tasks are uncovered or estimated tasks durations are
corrected.
Risk monitoring
Contingency plans are drawn up as risks become serious threats to the successful
completion of the project.
Examples include: shifting priorities, reorganizing teams, redefining the problem
statement, modifying the project schedule, etc.
Quality control
Software quality metrics are tracked to ensure that defects are being found.
Configuration management
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
106
Identifying When a Project Goes Off-Track
Determine what went wrong: Why is your project got off
track?
Behind schedule
Overspending of resource budgets
Not producing the desired deliverables
Identify the Reason(s):
You are new on the job, this is your first project, and you made mistakes
Key people left the teams or new ones are joining it
Key people lost interest or new ones entered the picture
The requirements have changed
New technology has emerged
The business objectives have changed
Organizational priorities have shifted (for example after a merger)
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
107
Heuristics to get a project back on track
Reaffirm your plan
Refocus team direction and commitment
Reaffirm your key people
Reaffirm your project objectives
Reaffirm the activities remaining to be done
Reaffirm roles and responsibilities
Revise estimates, develop a viable schedule
Modify your personnel assignments
Hold a midproject kickoff session
Closely monitor and control performance for the remainder of the project
Get practical experience
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
108
Summary
Software engineering is a problem solving activity
Must develop quality software for a complex problem within a limited time while
things are changing
We need system models (object models, dynamic models, etc.) and management
models (WBS, dependency diagrams, issue models, etc.)
WBS: Set of activities to do (“use cases”)
Dependency diagram: identify dependency relationships between activities
Schedule: Dependency diagram with estimates of task durations
Development teams may be organized by function or by project
Communication infrastructure is also needed for reporting, decision propagation,
and exchanging information
Project control is the project management role during the steady state portion of the
software project.
Modified from Bruegge & Dutoit’s originals
Object-Oriented Software Engineering: Using UML, Patterns, and Java
109