Professional Documents
Culture Documents
Software Crisis
Mid 1990’s - analysis of the state of the software engineering industry
Result : Success rate of the projects is very low.
Conventional Software Management.
The Waterfall Model.
Conventional Software Management Performance.
To follow the waterfall model, one proceeds from one phase to the next
in a purely sequential manner.
The waterfall model is a popular version of
the systems development life cycle model
for software engineering. Often considered
the classic approach to the systems
development life cycle, the waterfall
model describes a development method
that is linear and sequential. Waterfall
development has distinct goals for each
phase of development. Imagine a waterfall
on the cliff of a steep mountain. Once the
water has flowed over the edge of the cliff
and has begun its journey down the side of
the mountain, it cannot turn back. It is the
same with waterfall development. Once a
phase of development is completed, the
development proceeds to the next phase
and there is no turning back.
The advantage of waterfall development is that it
allows for departmentalization and managerial
control. A schedule can be set with deadlines for
each stage of development and a product can
proceed through the development process like a
car in a carwash, and theoretically, be delivered
on time. Development moves from concept,
through design, implementation, testing,
installation, troubleshooting, and ends up at
operation and maintenance. Each phase of
development proceeds in strict order, without any
overlapping or iterative steps.
Process
Methods and techniques
• Iterative Development
• Process Maturity Models
• Architecture-first development
• Acquisition reform
Personnel
People factors
• Training and personnel skill development
• Teamwork
• Win-win cultures
Cost Model Parameters
Environment
Automation technologies and tools
• Integrated tools (visual modeling, compiler, editors, debuggers, CMS, ….
• Open Systems
• Hardware platform performance
• Automation of coding, documents, testing, analyses
Quality
Performance, reliability, accuracy
• Hardware platform performance
• Demonstration-based assessment
• Statistical quality control
Generations of Software Development
Conventional
1960’s - 1970’s (Craftsmanship)
Waterfall Model
Functional Design
Custom Tools
Custom Process
Primitive Language
Environments
Custom
Size
100% Custom
Process
Ad hoc
Issues
Over Budget
Over Schedule
Predictably Bad
Generations of Software Development
Transition
1980’s – 1990’s (Software Engineering)
Process Improvement
Environments
Off-the-shelf
Separate
Encapsulation
Size
70% Customised Components
30% Components
Process
Repeatable
Issues
Addressing the complexity of the Distributed Environment
Infrequently On Budget, On Schedule
Unpredictable
Generations of Software Development
Modern Practices
2000 Later (Software Production)
Iterative Development
Component Based
Environments
Off the Shelf
Integrated
Process
Managed / Measured
Return on Investment
Size
70% Pre-built Components
30% Customised Solutions
Usually On budget, On Schedule
Predictable
Improving Software Economics
Key is a ‘balanced’ approach; patient
Five Key Initiatives – In Order:
Reducing the size and/or complexity of application
Improving the development process itself
Using more-skilled personnel and creation of better teams
Creating better ‘environments’ with appropriate tools and technology to
foster improvement
Re-looking at Quality
Reducing Software Product Size
The larger the product, the more expensive it is ‘per line.’ Fact.
Complicated due to
Component-based development
Automatic code generation
“Instruction Explosion”
GUI builders
4GLs
Modeling Languages
Executable code size often increases!
C.Reuse
•Always had ‘reuse’ with stored functions/subpgms
•Differences in platforms / environments has hurt reuse potential
D.Commercial Components
• quality, cost ,supportability, and the architecture.
Improving Software Processes
Objective: minimize overhead and direct these energies toward production
activities.
Hours per function point (average costs) go up as project and organizational size
increase.
Diseconomies of Scale
In all software projects there are some basic principles which cause diseconomies of
scale. That is:
There are low fixed costs relative to variable costs
Communication becomes difficult as project becomes larger
Multiple logical paths grow in a nonlinear manner as size increases
Interrelationships of functions grow geometrically as project becomes large.
Pragmatic Software Cost Estimation
Algorithmic Model
Expert Judgment
Analogy
Parkinson & Price to Win
Top-Down
Bottom-Up
A Good Estimate :
•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
•It is base 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, similar technologies, similar environments, similar
quality requirements, and similar people
•It is defined in enough detail so that its key risk areas are understood
and the probability of success is objectively assessed
The Old Way and the New.
The Principles of Conventional Software Engineering.
The Principles of Modern Software Management.
Transitioning to an Iterative Process.
Unit III
Davis Top 30 Principals
1. Make Quality #1
Unit III
Davis Top 30 Principals
11.Inspect Code
15.Take responsibility
Unit III
Davis Top 30 Principals
21.Use tools but be realistic
22.Avoid tricks
23.Encapsulate
30.Expect excellence
Unit III
Top 10 Principles of Modern Software Management
8.Inspect everything.
Conventional Process
Late Breakage and excessive scrap / rework
Impact
Quality, Cost, Schedule
Modern Process
•Architecture First Approach
•Iterative Development
•Automated Change Management
•Risk- confronting process