Software Engineering and Best Practices
Software Engineering and Best Practices
and
Best Practices
Sources: Various.
Rational Software Corporation slides,
OOSE textbook slides, Per Kroll talk, How to Fail with
the RUP article, textbooks
Most slides have been modified considerably
What is Software Engineering?
► The process of solving customers’ problems by
the systematic development and evolution of
large, high-quality software systems within
cost, time and other constraints
► Note:
Process, systematic (not ad hoc), evolutionary…
Constraints: high quality, cost, time, meets user
requirements
Analysis of the Definition:
► Systematic development and evolution
An engineering process involves applying well understood techniques in
a organized and disciplined way
Many well-accepted practices have been formally standardized
► e.g. by the IEEE or ISO
Most development work is evolution
► Large, high quality software systems
Software engineering techniques are needed because large systems
cannot be completely understood by one person
Teamwork and co-ordination are required
Key challenge: Dividing up the work and ensuring that the parts of the
system work properly together
The end-product that is produced must be of sufficient quality
► Cost, time and other constraints
Finite resources
The benefit must outweigh the cost
Others are competing to do the job cheaper and faster
Inaccurate estimates of cost and time have caused many project failures
Comments:
► $250 billion annually in US.
► Over 175,000 projects!
► Complexity, size, distribution, importance push
our limits.
► Business pushes these limits:
Great demands for rapid development and deployment
► Incredible pressure to develop applications that
are:
On time, Within budget, Meets the users’ requirements
► Figures in the late 90s indicated that at most
70% of projects completed
Over 50% ran over twice the intended budget
$81 billion dollars spent in cancelled projects!!
► We are doing something wrong as an industry!
What Happens in Practice
Sequential activities: (Traditional ‘Waterfall’ Process)
Requirements Design Code Integration Test
100% Integration
Begins
Development Progress
Project Schedule
Symptoms of Software
Development Problems
► Inaccurate understanding of end-user needs
► Inability to deal with changing requirements
► Modules that don’t fit together (integration)
► Software that’s hard to maintain or extend (brittle)
► Late discovery of serious project flaws (integration)
► Poor software quality (architecture, risks unanticipated…)
► Process not responsive to Change (Gantt Charts…)
► Unacceptable software performance (Risk, architecture, …)
► Team members in each other’s way, unable to reconstruct who
changed what, when, where, why (software architecture, …
► …and we could go on and on…
Need a Better Hammer!
► We need a process that
Will serve as a framework for large scale and small
projects
Adaptive – embraces ‘change!’
► Opportunity for improvement not identification of failure!
Iterative (small, incremental ‘deliverables’)
Risk-driven (identify / resolve risks up front)
Flexible, customizable process (not a burden; adaptive to
projects)
Architecture-centric (breaks components into ‘layers’ or
common areas of responsibility…)
Heavy user involvement
► Identify
best ways of doing things – a better process
– acknowledged by world leaders…
Best Practices of Software
Engineering
Develop Iteratively
Use
Manage Model Verify
Component Visually
Requirements Architectures Quality
Control Changes
Know these!
Addressing Root Causes
Eliminates the Symptoms
Symptoms Root Causes Best Practices
end-user needs insufficient requirements develop iteratively
changing ambiguous manage requirements
requirements communications use component
modules don’t fit brittle architectures architectures
hard to maintain overwhelming complexity model the software
late discovery undetected visually
Use
Manage Model Verify
Component Visually
Requirements Architectures Quality
Control Changes
R Requirements
I Design
S Code
Waterfall risk
K Integration
System
Test
T I M E
Iterative Development
Iteration 1 Iteration 2 Iteration 3
I Risk reduction
S
Waterfall risk
K Iterative
In an iteration,
you may walk
C through all
O
N
disciplines
T
E
N
T
S
T
R
U
C
T
U
R
E
TIME
RUP Iterations and Phases
Executable Releases
Major Milestones