Lecture 3 - Software Economics
Lecture 3 - Software Economics
Renaissance
Mekonnen Wagaw (PhD)
Outline
Conventional Software Management
Software crisis
“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
requirements
Softwar
e
require
ments
Analysis Program
Drawbacks design
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 software development
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…)
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
Software manager,
software architecture manager,
software development manager,
software assessment manager
Cost modelers
Risks, options,
trade-offs,
alternatives
Cost estimate
Pragmatic software cost estimation
A good estimate has the following attributes:
It is conceived and supported by the project manager,
architecture team, development team, and test team
accountable for performing the work.
It is accepted by all stakeholders as ambitious but
realizable.
It is based on a well defined software cost model with a
credible basis.
It is based on a database of relevant project experience that
includes similar processes, technologies, environments,
quality requirements, and people.
It is defined in enough detail so that its key risk areas are
understood and the probability of success is objectively
assessed.
Improving Software Economics
5 Project Solution:
125% more cost and
150% more time
The principle of job matching: Fit the task to the skills and motivation of
the people available.
The principle of career progression: An organization does best in the
long
run by helping its people to self-actualize.
The principle of team balance: Select people who will complement
and harmonize with one another.
The principle of phase-out: Keeping a misfit on the team doesn’t
benefit
anyone.
Improving Team Effectiveness (2)
Important Project Manager Skills on improving team effectiveness:
Hiring skills. Few decisions are as important as hiring decisions. Placing the
right person in the right job seems obvious but is surprisingly hard to achieve.
Customer-interface skill. Avoiding adversarial relationships among stake-
holders is a prerequisite for success.
Decision-making skill. The Jillion books written about management have failed
to provide a clear definition of this attribute. We all know a good leader when we
run into one, and decision-making skill seems obvious despite its intangible
definition.
Team-building skill. Teamwork requires that a manager establish trust,
motivate progress, exploit eccentric prima donnas, transition average people into
top performers, eliminate misfits, and consolidate diverse opinions into a team
direction.
Selling skill. Successful project managers must sell all stakeholders (including
themselves) on decisions and priorities, sell candidates on job positions, sell
changes to the status quo in the face of resistance, and sell achievements
against objectives. In practice, selling requires continuous negotiation,
compromise, and empathy.
Achieving Required Quality
Key practices that improve overall software quality:
Focusing on driving requirements and critical use cases
early in the life cycle, focusing on requirements
completeness and traceability late in the life cycle, and
focusing throughout the life cycle on a balance between
requirements evolution, design evolution, and plan
evolution
Using metrics and indicators to measure the progress
and quality of an architecture as it evolves from a high-
level prototype into a fully compliant product
Achieving Required Quality
Key practices that improve overall software
quality:
Providing integrated life-cycle environments that
support early and continuous configuration control,
change management, rigorous design methods,
document automation, and regression test automation
Using visual modeling and higher level language that
support architectural control, abstraction, reliable
programming, reuse, and self-documentation
Early and continuous insight into performance issues
through demonstration-based evaluations
The Old Way and the New
The Principles of Conventional Software
Engineering
1. Make quality #1.
2. High-quality software is possible.
3. Give products to customers early.
4. Determine the problem before writing the requirements.
5. Evaluate design alternatives.
6. Use an appropriate process model.
7. Use different languages for different phases.
8. Minimize intellectual distance.
9. Put techniques before tools.
10. Get it right before you make it faster.
The Principles of Conventional Software
Engineering
11. Inspect code.
12. Good management is more important than good technology.
13. People are the key to success.
14. Follow with care.
15. Take responsibility.
16. Understand the customer’s priorities.
17. The more they see, the more they need.
18. Plan to throw one away .
19. Design for change.
20. Design without documentation is not design.
The Principles of
Conventional Software
Engineering
21. Use tools, but be realistic.
22. Avoid tricks.
23. Encapsulate.
24. Use coupling and cohesion.
25. Use the McCabe complexity measure.
26. Don’t test your own software.
27. Analyze causes for errors.
28. Realize that software’s entropy increases.
29. People and time are not interchangeable.
30. Expert excellence.
The Principles of Modern Software Management
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.
Next-Generation Software Economics
Next-Generation Cost Models
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.
Thank you