Unit 1 Chap 2
Unit 1 Chap 2
Introduction
In the past ten years, typical goals in the software
“The best thing about software is its flexibility”
It can be programmed to do almost anything.
“The worst thing about software is also its flexibility”
The “almost anything ” characteristic has made it difficult to plan, monitor,
and control software development.
The Old Way
The Waterfall Model
System
System
requirements
requirements
Software
Software
requirements
requirements
Analysis
Analysis
Drawbacks Program
Program
design
design
Protracted integration
and late design breakage Coding
Coding
Late risk resolution
Requirements - driven
functional decomposition Testing
Testing
Adversarial stakeholder relationships
Focus on document Maintenance
Maintenance
and review meetings and
andreliance
reliance
The Old Way
Conventional Software Management Performance
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.
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.
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.”
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.
The Old Way and the New
The Principles of Modern Software Management
desired capabilities.
Function Points – a better metric earlier in project
These are not new metrics for measuring size, effort, personnel needs,…
activities
Process critical in determining software economics
Component-based development; application domain…iterative approach, use-case driven…
Personnel – capabilities of the personnel in general and in
a team;
Environment – the tools / techniques / automated procedures
Effort = (personnel)(environment)(quality)(size )
(Note: effort is exponentially related to size….)
Notice the Process Trends….for three generations of
software economics
Conventional development (60s and 70s)
Application – custom; Size – 100% custom
Process – ad hoc
70s - SDLC; customization of process to domain / mission, structured analysis, structured design, code.
Process: repeatable
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
Metrics (SLOC, function points, etc.) NOT consistently applied EVEN in the same
application domain!
Definitions of SLOC and function points are not even consistent!
https://www.geeksforgeeks.org/software-cost-estimation/
Three Issues in Software Cost Estimation:
1. Which cost estimation model should
be used?
2. Should software size be measured
histories, experiences…
Oftentimes, these are super if ‘other’ parameters held constant, such as
estimation model.
Two primary approaches:
Source lines of code (SLOC) and
custom-built.
Easy to measure & instrument – have tools.
external outputs,
Can create organization’s own methods of measurement on how to ‘count’ these metrics...
Cost estimating is still disconcerting when one realizes that there are already a
plethora of missed dates, poor deliverables, and significant cost overruns that
characterize traditional development.
RFPs on contracts force contractors to estimate the project costs for their survival.
Any approach should force the project manager to assess risk and
not uncommon)
Independent cost estimators (consultants…) not reliable.
Author suggests:
Likely best cost estimate is undertaken by an experienced
project manager, software architect, developers, and test
managers – and this process can be quite iterative!
estimate.
A Good Project Estimate:
1. It is simply conceived i.e. planned and supported by project manager. architecture team,
development team, and test team responsible for performing work and task.
4. It is also based on a similar project experience database that includes and contains similar
processes, relevant technologies, relevant environments, relevant quality requirements, and
all similar people.
5. It is also defined and explained in much amount of detail so that all of its key risks are simply
understood and probability of success is objectively assessed.
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