ALL UNITS PPTS Walker Royce
ALL UNITS PPTS Walker Royce
ALL UNITS PPTS Walker Royce
Software
requirements
Analysis
Program
● Drawbacks
design
● Protracted integration
Coding
and late design breakage
● Late risk resolution
● Requirements - driven
Testing
functional decomposition
● Adversarial stakeholder relationships
● Focus on document Maintenance
and review meetings and reliance
"Software Project Management" Walker 6/112
Royce
Part 1
1.Finding and fixing a software problem after delivery costs 100 times more
than finding and fixing the problem in early design phases.
2.You can compress software development schedules 25% of nominal, but no
more.
3.For every $1 you spend on development, you will spend $2 on maintenance.
4.Software development and maintenance costs are primarily a function of the
number of source lines of code.
5.Variations among people account for the biggest differences in software
productivity.
6.The overall ratio of software to hardware costs is still growing. In 1955 it was
15:85; in 1985, 85:15.
7.Only about 15% of software development effort is devoted to programming.
8.Walkthroughs catch 60% of the errors.
9.80% of the contribution comes from 20% of contributors.
Effort=(personnel)(quality)(Environment)(size process)
Software manager,
software architecture manager,
software development manager,
software assessment manager
Cost modelers
Risks, options,
trade-offs,
alternatives
Cost estimate
● “An object-oriented model of the problem and its solution encourages a common
vocabulary between the end users of a system and its developers, thus creating a
shared understanding of the problem being solved.”
Here is an example of how object-oriented technology permits corresponding improvements in
teamwork and interpersonal communications.
● “The use of continuous integration creates opportunities to recognize risk early and
make incremental corrections without destabilizing the entire development effort.”
This aspect of object-oriented technology enables an architecture-first process, in which integration
is an early and continuous life-cycle activity.
● An object-oriented architecture provides a clear separation of concerns among
disparate elements of a system, creating firewalls that prevent a change in one part
of the system from rending the fabric of the entire architecture.”
This feature of object-oriented technology is crucial to the supporting languages and environments
available to implement object-oriented architectures.
1 Project Solution: $N
and M months
Many-project solution:
2 Project Solution:
50% more cost and
Operating with high value per
100% more time
Development Cost
nd Schedule Resources unit investment, typical of
5 Project Solution:
125% more cost and
commercial products
components technology
Available now
Dependency on vendor
Run-time efficiency sacrifices
Functionality constraints
Dedicated support organization Integration not always trivial
Hardware/software No control over upgrades and maintenance
Unnecessary features that consume extra
independence
resources
Rich in functionality Often inadequate reliability and stability
Complete change freedom Expensive, unpredictable development
Custom Smaller, often simpler
Multiple-vendor incompatibility
Unpredictable availability date
implementations Undefined maintenance model
development Often better performance Often immature and fragile
Control of development and Single-platform dependency
enhancement Drain on expert resources
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.
1.Inspect code. Inspecting the detailed design and code is a much better way to find errors than testing.
2.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.
3.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.
4.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.
5.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.
6.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.
7.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.
8.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.
9.Design for change. The architectures, components, and specification techniques you use must accommodate change.
10.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.”
1.Use tools, but be realistic. Software tools make their users more efficient.
2.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.
3.Encapsulate. Information-hiding is a simple, proven concept that results in software that is easier to test and much
easier to maintain.
4.Use coupling and cohesion. Coupling and cohesion are the best ways to measure software’s inherent maintainability
and adaptability.
5.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.
6.Don’t test your own software. Software developers should never be the primary testers of their own software.
7.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.
8.Realize that software’s entropy increases. Any software system that undergoes continuous change will grow in
complexity and become more and more disorganized.
9.People and time are not interchangeable. Measuring a project solely by person-months makes little sense.
10.Expert excellence. Your employees will do much better if you have high expectations for them.
●Life-Cycle Phases
● Engineering and Production Stages
● Inception Phase
● Elaboration Phase
● Construction Phase
● Transition Phase
● Essential activities :
o Formulating the scope of the project (capturing the
requirements and operational concept in an information
repository)
o Synthesizing the architecture (design trade-offs, problem space
ambiguities, and available solution-space assets are evaluated)
o Planning and preparing a business case (alternatives for risk
management, iteration planes, and cost/schedule/profitability
trade-offs are evaluated)
● Essential activities :
o Elaborating the vision (establishing a high-fidelity understanding
of the critical use cases that drive architectural or planning
decisions)
o Elaborating the process and infrastructure (establishing the
construction process, the tools and process automation support)
o Elaborating the architecture and selecting components (lessons
learned from these activities may result in redesign of the
architecture)
● Essential activities :
o Resource management, control, and process optimization
o Complete component development and testing against
evaluation criteria
o Assessment of the product releases against acceptance criteria
of the vision
● Essential activities :
o Synchronization and integration of concurrent construction into
consistent deployment baselines
o 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
● Evaluation Criteria :
● Is the user satisfied?
● Are actual resource expenditures
versus planned expenditures acceptable?
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
● 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.
● Poor architectures and immature processes are often given as reasons for
project failures.
● A mature process, an understanding of the primary requirements, and a
demonstrable architecture are important prerequisites for predictable
planning.
● Architecture development and process definition are the intellectual steps
that map the problem to a solution without violating the constraints.
Deployment
Design Process Component View
View View View
● 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, inter-process 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.
● The deployment view addresses the executable realization of the system, including the
allocation of logical processes in the distribution view to physical resources of the
deployment network.
1. Management workflow: controlling the process and ensuring win conditions for all
stakeholders
2. Environment workflow: automating the process and evolving
the maintenance environment
1.Requirements workflow: analyzing the problem space and evolving
the requirements artifacts
2.Design workflow: modeling the solution and evolving the architecture and
design artifacts
3.Implementation workflow: programming the components and evolving
the implementation and deployment artifacts
4.Assessment workflow: assessing the trends in process and product quality
"Software Project Management" Walker 51/112
5.Deployment workflow: transitioning the end products to the user
Royce
Part 2
Workflows of the Process Software Process Workflows
Management
Requirements
Design
Implementation
Assessment
Deployment
Management Management
Requirements Requirements
Design Design
Implementation Implementation
Assessment Assessment
Deployment Deployment
Transition Phase
Management
Requirements
Design
Implementation
Assessment
Deployment
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%
● 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.
Organization
Manager
Software Engineering Project Review
Process Authority Authority
Software Engineering
Infrastructure
Environment Authority
Life-Cycle Focus
Inception Elaboration Construction Transition
Architecture prototyping Architecture base lining Architecture maintenance Architecture maintenance
Make/buy trade-offs Primary scenario demonstration Multiple-component issue Multiple-component issue
Primary scenario definition Make/buy trade-offs base lining resolution resolution
Performance tuning Performance tuning
Architecture evaluation criteria
Quality improvements Quality improvements
definition
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
Software Software
management management
50% 10%
Software Software Software Software Software Software
architecture development assessment architecture development assessment
20% 20% 10% 50% 20% 20%
Inceptio Elaboration
n
Transition Constructio
Software Software
management n management
10% 10%
Software Software Software Software Software Software
architecture development assessment architecture development assessment
5% 35% 50% 10% 50% 30%
● Tools
o Support individual process tasks such as design
consistency checking, text editing, etc.
● Workbenches
o Support a process phase such as specification or design,
Normally include a number of integrated tools.
● Environments
o Support all or a substantial part of an entire software
process. Normally include several integrated
workbenches.
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 rate, People per month added, people per
attrition rate month leaving
Breakage and modularity Convergence, software scrap, quality Reworked SLOC per change, by type, by
indicator release/component/subsystem
Rework and adoptability Convergence, software rework, quality Average hours per change, by type, by
indicator release/component/subsystem
Environment 5% 10%
Requirements 5% 10%
Deployment 5% 5%
● The artifacts are now intended to evolve along with the process, with more
and more fidelity as the life-cycle progresses and the requirements
understanding matures.
"Software Project Management" Walker 85/112
Royce
Part 4
Modern Project ProfilesTeamwork among stakeholders
● Software experts hold widely varying opinions about software economics and its
manifestation in software cost estimation models:
source lines of code function points
productivity quality
measures VERSUS measures
Java C++
object-oriented functionally oriented
● It will be difficult to improve empirical estimation models while the project data
going into these models are noisy and highly uncorrelated, and are based on
differing process and technology foundations.
1. Finding and fixing a software problem after delivery costs 100 times more
than fixing the problem in early design phases
● 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.
By Walker Royce
Tailoring the Process –
Process Discriminants
By Walker Royce
Tailoring the Process –
Process Discriminants -Scale
By Walker Royce