SPPM Note
SPPM Note
SPPM Note
Management
1
Part 1
Software Management Renaissance
Introduction
2/112
Part 1
Software Management Renaissance
3/112
Part 1
Software Management Renaissance
Table of Contents (1)
4/112
Part 1
Software Management Renaissance
Table of Contents (2)
5/112
The Old Way
6/112
Part 1
The Old Way
Software crisis
7/112
Part 1
The Old Way
The Waterfall Model
System
System
requirements
requirements
Software
Software
requirements
requirements
Analysis
Analysis
Program
Drawbacks Program
design
design
Protracted integration
and late design breakage Coding
Coding
Late risk resolution
Requirements - driven
functional decomposition Testing
Adversarial stakeholder relationships Testing
Focus on document
and review meetings Maintenance
Maintenance
and
andreliance
reliance
8/112
Part 1
The Old Way
Conventional Software Management Performance
9/112
Part 1
Evolution of Software Economics
10/112
Part 1
Evolution of Software Economics
Most software cost models can be abstracted
into a function of five basic parameters:
Size (typically, number of source instructions)
Process (the ability of the process to avoid non-value-
adding activities)
Personnel (their experience with the computer science
issues and the applications domain issues of the project)
Environment (tools and techniques available to support
efficient software development and to automate
process)
Quality (performance, reliability, adaptability…)
11/112
Part 1
Evolution of Software Economics
Three generations of software economics
Cost
Software size
1960s-1970s 1980s-1990s 2000 and on
Waterfall model Process improvement Iterative development
Functional design Encapsulation-based Component- based
Diseconomy of scale Diseconomy of scale Return to investment
12/112
Part 1
Evolution of Software Economics
The predominant cost estimation process
Software manager,
software architecture manager,
software development manager,
software assessment manager
Cost modelers
Risks, options,
trade-offs,
alternatives
Cost estimate
13/112
Part 1
Evolution of Software Economics
Pragmatic software cost estimation
14/112
Part 1
Improving Software Economics
15/112
Part 1
Improving Software Economics
Important trends in improving software economics
17/112
Part 1
Improving Software Economics
Reducing Software Product Size - Languages
18/112
Part 1
Improving Software Economics
Reducing Software Product Size – Object-Oriented Methods
19/112
Part 1
Improving Software Economics
Reducing Software Product Size – Reuse
1 Project Solution:
$N and M months Many-project
solution: Operating
with high value per unit
and Schedule Resources
5 Project Solution:
125% more cost and
150% more time
20/112
Part 1
Improving Software Economics
Reducing Software Product Size – Commercial Components
21/112
Part 1
Improving Software Economics
Improving Software Processes
24/112
Part 1
Improving Software Economics
Improving Team Effectiveness (2)
25/112
Part 1
Improving Software Economics
Achieving Required Quality
26/112
Part 1
The Old Way and the New
27/112
Part 1
The Old Way and the New
The Principles of Conventional Software Engineering
1. Make quality #1. Quality must be quantified and mechanism put into place to motivate its
achievement.
2. High-quality software is possible. Techniques that have been demonstrated to increase quality
include involving the customer, prototyping, simplifying design, conducting inspections, and hiring the
best people.
3. Give products to customers early. No matter how hard you try to learn users’ needs during the
requirements phase, the most effective way to determine real needs is to give users a product and let
them play with it.
4. Determine the problem before writing the requirements. When faced with what they believe is
a problem, most engineers rush to offer a solution. Before you try to solve a problem, be sure to
explore all the alternatives and don’t be blinded by the obvious solution.
5. Evaluate design alternatives. After the requirements are agreed upon, you must examine a variety
of architectures and algorithms. You certainly do not want to use an “architecture” simply because it
was used in the requirements specification.
6. Use an appropriate process model. Each project must select a process that makes the most sense
for that project on the basis of corporate culture, willingness to take risks, application area, volatility
of requirements, and the extent to which requirements are well understood.
7. Use different languages for different phases. Our industry’s eternal thirst for simple solutions to
complex problems has driven many to declare that the best development method is one that uses the
same notation through-out the life cycle. Why should software engineers use Ada for requirements,
design, and code unless Ada were optimal for all these phases?
8. Minimize intellectual distance. To minimize intellectual distance, the software’s structure should be
as close as possible to the real-world structure.
9. Put techniques before tools. An undisciplined software engineer with a tool becomes a dangerous,
undisciplined software engineer.
10. Get it right before you make it faster. It is far easier to make a working program run than it is to
make a fast program work. Don’t worry about optimization during initial coding.
28/112
Part 1
The Old Way and the New
The Principles of Conventional Software Engineering
11. Inspect code. Inspecting the detailed design and code is a much better way to find errors than testing.
12. Good management is more important than good technology. The best technology will not compensate for
poor management, and a good manager can produce great results even with meager resources. Good
management motivates people to do their best, but there are no universal “right” styles of management.
13. People are the key to success. Highly skilled people with appropriate experience, talent, and training are key.
The right people with insufficient tools, languages, and process will succeed. The wrong people with appropriate
tools, languages, and process will probably fail.
14. Follow with care. Just because everybody is doing something does not make it right for you. It may be right,
but you must carefully assess its applicability to your environment. Object orientation, measurement, reuse,
process improvement, CASE, prototyping-all these might increase quality, decrease cost, and increase user
satisfaction. The potential of such techniques is often oversold, and benefits are by no means guaranteed or
universal.
15. Take responsibility. When a bridge collapses we ask, “what did the engineers do wrong?” Even when software
fails, we rarely ask this. The fact is that in any engineering discipline, the best methods can be used to produce
awful designs, and the most antiquated methods to produce elegant design.
16. Understand the customer’s priorities. It is possible the customer would tolerate 90% of the functionality
delivered late if they could have 10% of it on time.
17. The more they see, the more they need. The more functionality (or performance) you provide a user, the
more functionality (or performance) the user wants.
18. Plan to throw one away .One of the most important critical success factors is whether or not a product is
entirely new. Such brand-new applications, architectures, interfaces, or algorithms rarely work the first time.
19. Design for change. The architectures, components, and specification techniques you use must accommodate
change.
20. Design without documentation is not design. I have often heard software engineers say, “I have finished
the design. All that is left is the documentation.”
29/112
Part 1
The Old Way and the New
The Principles of Conventional Software Engineering
21. Use tools, but be realistic. Software tools make their users more efficient.
22. Avoid tricks. Many programmers love to create programs with tricks- constructs that perform a
function correctly, but in an obscure way. Show the world how smart you are by avoiding tricky code.
23. Encapsulate. Information-hiding is a simple, proven concept that results in software that is easier to
test and much easier to maintain.
24. Use coupling and cohesion. Coupling and cohesion are the best ways to measure software’s
inherent maintainability and adaptability.
25. Use the McCabe complexity measure. Although there are many metrics available to report the
inherent complexity of software, none is as intuitive and easy to use as Tom McCabe’s.
26. Don’t test your own software. Software developers should never be the primary testers of their
own software.
27. Analyze causes for errors. It is far more cost-effective to reduce the effect of an error by
preventing it than it is to find and fix it. One way to do this is to analyze the causes of errors as they
are detected.
28. Realize that software’s entropy increases. Any software system that undergoes continuous
change will grow in complexity and become more and more disorganized.
29. People and time are not interchangeable. Measuring a project solely by person-months makes
little sense.
30. Expert excellence. Your employees will do much better if you have high expectations for them.
30/112
Part 1
The Old Way and the New
The Principles of Modern Software Management
31/112
Part 2
A Software Management Process Framework
32/112
Part 2
A Software Management Process Framework
Table of Contents (1)
Life-Cycle Phases
Engineering and Production Stages
Inception Phase
Elaboration Phase
Construction Phase
Transition Phase
Artifacts of the Process
The Artifact Sets
Management Artifacts
Engineering Artifacts
Pragmatic Artifacts
33/112
Part 2
A Software Management Process Framework
Table of Contents (2)
34/112
Part 2
Life-Cycle Phases
Engineering and Production Stages
36/112
Part 2
Life-Cycle Phases
Inception Phase
Essential activities :
Formulating the scope of the project (capturing the
requirements and operational concept in an
information repository)
Synthesizing the architecture (design trade-offs,
problem space ambiguities, and available solution-
space assets are evaluated)
Planning and preparing a business case (alternatives
for risk management, iteration planes, and
cost/schedule/profitability trade-offs are evaluated)
37/112
Part 2
Life-Cycle Phases
Elaboration Phase
Essential activities :
Elaborating the vision (establishing a high-fidelity
understanding of the critical use cases that drive
architectural or planning decisions)
Elaborating the process and infrastructure
(establishing the construction process, the tools and
process automation support)
Elaborating the architecture and selecting components
(lessons learned from these activities may result in
redesign of the architecture)
38/112
Part 2
Life-Cycle Phases
Construction Phase
Essential activities :
Resource management, control, and process
optimization
Complete component development and testing against
evaluation criteria
Assessment of the product releases against
acceptance criteria of the vision
39/112
Part 2
Life-Cycle Phases
Transition Phase
Essential activities :
Synchronization and integration of concurrent
construction into consistent deployment baselines
Deployment-specific engineering (commercial
packaging and production, field personnel training)
1. Assessment of deployment baselines against the
complete vision and acceptance criteria in the
requirements set
40/112
Part 2
Life-Cycle Phases
Evaluation Criteria :
Is the user satisfied?
Are actual resource expenditures
versus planned expenditures acceptable?
41/112
Part 2
Artifacts of the Process
Requirements Design Set Implementation Deployment
Set Set Set
1.Vision document
2.Requirements 1.Design model(s) 1.Source code 1.Integrated
model(s) 2.Test model baselines product executable
3.Software 2.Associated baselines
architecture compile-time files 2.Associated
description 3.Component run-time files
executables 3.User manual
Management Set
Planning Artifacts Operational Artifacts
1.Work breakdown structure 5.Release descriptions
2.Bussines case 6.Status assessments
3.Release specifications 7.Software change order database
4.Software development plan 8.Deployment documents
9.Enviorement
42/112
Part 2
Artifacts of the Process
Management Artifacts
43/112
Part 2
Artifacts of the Process
Management Artifacts
Release Specifications
Typical release specification outline :
I. Iteration content
II. Measurable objectives
A. Evaluation criteria
B. Follow-through approach
III. Demonstration plan
A. Schedule of activities
B. Team responsibilities
IV. Operational scenarios (use cases demonstrated)
A. Demonstration procedures
B. Traceability to vision and business case
45/112
Part 2
Artifacts of the Process
Engineering Artifacts
Vision document – supports the contract between the funding authority and
the development organization.
It is written from the user’s perspective, focusing on the essential features
of the system.
It should contain at least two appendixes – the first appendix should describe
the operational concept using use cases,
the second should describe the change risks inherent in the vision statement.
46/112
Part 2
Artifacts of the Process
Engineering Artifacts
48/112
Part 2
Model-Based Software Architectures
A Management Perspective
49/112
Part 2
Model-Based Software Architectures
A Management Perspective
Use Case
View
Deployment
Design Process Component View
View View
View
51/112
Part 2
Model-Based Software Architectures
A Technical Perspective
The use case view describes how the system’s critical use cases are realized
by elements of the design model.
It is modeled statically using case diagrams,
and dynamically using any of the UML behavioral diagrams.
The design view addresses the basic structure and the functionality
of the solution.
The process view addresses the run-time collaboration issues involved in
executing the architecture on a distributed deployment model,
including the logical software network topology, interprocess communication
and state management.
The component view describes the architecturally significant elements of
the implementation set and addresses the software source code realization
of the system from perspective of the project's integrators and developers.
54/112
Part 2
Workflows of the Process
Iteration Workflows
Management
Requirements
Design
Implementation
Assessment
Deployment
55/112
Part 2
Workflows of the Process
Iteration Workflows
Management Management
Requirements Requirements
Design Design
Implementation Implementation
Assessment Assessment
Deployment Deployment
Transition Phase
Management
Requirements
Design
Implementation
Assessment
Deployment
56/112
Part 2
Checkpoints of the Process
It is important to have visible milestones in the life cycle , where
various stakeholders meet to discuss progress and planes.
57/112
Part 2
Checkpoints of the Process
Three types of joint management reviews are conducted
throughout the process:
59/112
Part 3
Software Management Disciplines
Table of Contents (1)
60/112
Part 3
Software Management Disciplines
Table of Contents (2)
61/112
Part 3
Iterative Process Planning
Work Breakdown Structures
62/112
Part 3
Iterative Process Planning
Planning Guidelines
Environment 10%
Effort 5% 20% 65% 10%
Requirements 10%
Implementation 25%
The second guideline prescribes the allocation
Assessment 25%
of effort and schedule across the life-cycle phases
Deployment 5%
Total 100%
63/112
Part 3
Iterative Process Planning
The Cost and Schedule Estimating Process
64/112
Part 3
Iterative Process Planning
The Cost and Schedule Estimating Process
Backward-looking:
1. The lowest level WBS elements are elaborated into detailed tasks,
for which budgets and schedules are estimated by the responsible
WBS element manager.
2. Estimates are combined and integrated into higher level budgets
and milestones.
3. Comparisons are made with the top-down budgets and schedule
milestones. Gross differences are assessed and adjustments are
made in order to converge on agreement between the top-down
and the bottom-up estimates.
65/112
Part 3
Iterative Process Planning
The Iteration Planning Process
66/112
Part 3
Project Organizations and Responsibilities
Line-of-Business Organizations
Organization
Manager
Software Engineering Project Review
Process Authority Authority
Software Engineering
Infrastructure
Environment Authority
67/112
Part 3
Project Organizations and Responsibilities
Project Organizations
68/112
Part 3
Project Organizations and Responsibilities
Project Organizations
Life-Cycle Focus
Inception Elaboration Construction Transition
Architecture prototyping Architecture base lining Architecture maintenance Architecture maintenance
Make/buy trade-offs Primary scenario Multiple-component issue Multiple-component issue
Primary scenario definition demonstration resolution resolution
Make/buy trade-offs base Performance tuning Performance tuning
Architecture evaluation Quality improvements Quality improvements
criteria definition lining
69/112
Part 3
Project Organizations and Responsibilities
Project Organizations
Artifacts Responsibilities
Design set Component design
Implementation set Component implementation
Deployment set Component stand-alone test
Component maintenance
Component documentation
Life-Cycle Focus
Inception Elaboration Construction Transition
Prototyping support Critical component design Component design Component maintenance
Make/buy trade-offs Critical component Component implementation Component documentation
implementation and test Component stand-alone test
Critical component base line Component maintenance
70/112
Part 3
Project Organizations and Responsibilities
Project Organizations
71/112
Part 3
Project Organizations and Responsibilities
Evolution of Organizations
Software Software
management management
50% 10%
Inception Elaboration
Transition Construction
Software Software
management management
10% 10%
72/112
Part 3
Process Automation
Computer-aided software engineering
73/112
Part 3
Process Automation
Computer-aided software engineering (CASE) Technology
74/112
Part 3
Process Automation
CASE Classification
75/112
Part 3
Process Automation
Functional Tool Classification
76/112
Part 3
Process Automation
CASE Integration
Tools
Support individual process tasks such as design
consistency checking, text editing, etc.
Workbenches
Support a process phase such as specification or
design, Normally include a number of integrated
tools.
Environments
Support all or a substantial part of an entire
software process. Normally include several
integrated workbenches.
77/112
Part 3
Process Automation
Tools, Workbenches, Environments
CASE
technolo g y
Analysis and
Pro gramming Testing
design
78/112
Part 3
Project Control and Process Instrumentation
The Core Metrics
Budget cost and expenditures Financial insight, plan vs. actuals, Cost per month, full-time staff per
management indicator month, percentage of budget
expended
Staffing and team dynamics Resource plan vs. actuals, hiring People per month added, people
rate, attrition rate per month leaving
Breakage and modularity Convergence, software scrap, Reworked SLOC per change, by
quality indicator type, by
release/component/subsystem
Rework and adoptability Convergence, software rework, Average hours per change, by
quality indicator type, by
release/component/subsystem
79/112
Part 3
Tailoring the Process
Process Discriminants
80/112
Part 3
Tailoring the Process
Example: Small-Scale Project vs. Large-Scale Project
1 Design Management
2 Implementation Design
Deployment Requirements
3
4 Requirements Assessment
5 Assessments Environment
6 Management Implementation
7 Environment Deployment
81/112
Part 4
Looking Forward
82/112
Part 4
Looking Forward
Table of Contents
83/112
Part 4
Modern Project Profiles
Continuous Integration
Environment 5% 10%
Requirements 5% 10%
Deployment 5% 5%
84/112
Part 4
Modern Project Profiles
Continuous Integration
85/112
Part 4
Modern Project Profiles
Early Risk Resolution
86/112
Part 4
Modern Project Profiles
Evolutionary Requirements
87/112
Part 4
Modern Project Profiles
Teamwork among stakeholders
88/112
Part 4
Modern Project Profiles
Top 10 Software Management Principles
89/112
Part 4
Modern Project Profiles
Top 10 Software Management Principles
90/112
Part 4
Modern Project Profiles
Software Management Best Practices
91/112
Part 4
Next-Generation Software Economics
Next-Generation Cost Models
productivity quality
measures VERSUS measures
Java C++
Some of today’s popular software cost models are not well matched
to an iterative software process focused an architecture-first approach
Many cost estimators are still using a conventional process experience
base to estimate a modern project profile
A next-generation software cost model should explicitly separate
architectural engineering from application production,
just as an architecture-first process does.
Two major improvements in next-generation software
cost estimation models:
Separation of the engineering stage from the production stage
will force estimators to differentiate between architectural scale and
implementation size.
Rigorous design notations such as UML will offer an opportunity
to define units of measure for scale that are more standardized and
therefore can be automated and tracked.
93/112
Part 4
Next-Generation Software Economics
Modern Software Economics
94/112
Part 4
Next-Generation Software Economics
Modern Software Economics
Aim.
Select a critical project. Staff it with the right team
of complementary resources and demand improved results.
Fire.
Execute the organizational and project-level plans with vigor and
follow-through.
97/112