Professional Documents
Culture Documents
2
Motivation and Context
• Working definition of “software
engineering”
• Importance of historical perspective
• We are losing our history
• Some historical perspectives
3
“Software Engineering” Definition
- Based on Webster definition of “engineering”
4
Why Software Projects Fail
- Average overrun: 89.9% on cost, 121% on schedule, with 61% of content
5
Importance of Historical Perspective
• Santayana half-truth:
– “Those who cannot remember the past are
condemned to repeat it”
6
We Are Losing Our History
• Great people are gone
– Hopper, Mills, Royce, Dijkstra, Dahl,
Nygaard, Weiser, …
7
A Hegelian View of Software Engineering Evolution
Plan- Software
Engineer Compliance
Theses Driven Value-Add Integrated
Software Formality,
Software Sw-Systems
like Many defects Waterfall
Maturity COTS Engineering
Hardware
Models
Soft
SysE
Process Overhead
Value-Based
Risk-Based
Productivity; Methods;
Agile/Plan
Reuse; Risk Mgmt. Collaboration; Autonomy; Bio-
Syntheses -Driven
Objects; Domain Engr. Global Computing
Scalability, Hybrids;
Peopleware Development;
Risk Mgmt. Model-Driven
Enterprise
Development
Architectures
Scalability
Prototyping Global
Systems
Software of
Differences, Systems
Engineer Software
Agile
Antitheses Shortages as Craft
Methods
Time to Market,
Rapid Change
8
Outline
• Motivation and Context
• A 20th Century View
• A 21st Century View
• Conclusions
– Timeless principles and aging practices
9
1950’s Thesis: Engineer Software Like Hardware
• Hardware-oriented:
– Software applications: airplanes, bridges, circuits
– Economics: Boehm supervisor, 1955
• “We’re paying $600/hour for that computer, and
$2/hour for you, and I want you to act accordingly.”
Software
CODING SPECIFICATIONS
Development
Process CODING
- (Benington, 1956)
PARAMETER TESTING (SPECIFICATIONS)
“We were
successful ASSEMBLY TESTING (SPECIFICATIONS)
because we
SHAKEDOWN
were all
engineers”.
SYSTEM EVALUATION
11
1960’s Antithesis: Software Is Not Like Hardware
12
1960’s Antithesis: Software Manufacturing
13
1960’s Progress and Problems
14
A Hegelian View of Software Engineering Evolution
Plan- Software
Engineer Compliance
Theses Driven Value-Add Integrated
Software Formality,
Software Sw-Systems
like Many defects Waterfall
Maturity COTS Engineering
Hardware
Models
Soft
SysE
Process Overhead
Value-Based
Risk-Based
Productivity; Methods;
Agile/Plan
Reuse; Risk Mgmt. Collaboration; Autonomy; Bio-
Syntheses -Driven
Objects; Domain Engr. Global Computing
Scalability, Hybrids;
Peopleware Development;
Risk Mgmt. Model-Driven
Enterprise
Development
Architectures
Scalability
Prototyping Global
Systems
Software of
Differences, Systems
Engineer Software
Agile
Antitheses Shortages as Craft
Methods
Time to Market,
Rapid Change
15
1970’s Antithesis: Formal and Waterfall Approaches
• Structured Methods
– Structured programming (Bohm-Jacopini: GO TO
unnecessary)
• Formal programming calculus
• Formalized Top-Down models
• Waterfall Methods
– Code and fix too expensive (100:1 for large systems)
– Precede code by design
– Precede design by requirements
16
SYSTEM
REQUIREMENTS
The Royce Waterfall Model (1970)
- Explicit feedback
SOFTWARE
REQUIREMENTS - “Do it twice”
PRELIMINARY
PROGRAM
DESIGN
ANALYSIS
PROGRAM
DESIGN
PRELIMINARY
DESIGN
CODING
ANALYSIS
PROGRAM
DESIGN TESTING
CODING
TESTING OPERATIONS
USAGE
17
1970’s Antithesis: Tools of 1970’s
– Test simulator-simulator
18
1970’s Synthesis: Principles of modularity
• Constantine’s Concept:
– Coupling (minimize between modules)
– Cohesion (maximize between modules)
19
1970’s: Problems with Formal Methods
20
Large-Organization HW/SW Cost Trends (1973)
100
80
Hardware
% of 60
total cost
40 Software
20
0
1955 1970 1985
Year
21
A Hegelian View of Software Engineering Evolution
Plan- Software
Engineer Compliance
Theses Driven Value-Add Integrated
Software Formality,
Software Sw-Systems
like Many defects Waterfall
Maturity COTS Engineering
Hardware
Models
Soft
SysE
Process Overhead
Value-Based
Risk-Based
Productivity; Methods;
Agile/Plan
Reuse; Risk Mgmt. Collaboration; Autonomy; Bio-
Syntheses -Driven
Objects; Domain Engr. Global Computing
Scalability, Hybrids;
Peopleware Development;
Risk Mgmt. Model-Driven
Enterprise
Development
Architectures
Scalability
Prototyping Global
Systems
Software of
Differences, Systems
Engineer Software
Agile
Antitheses Shortages as Craft
Methods
Time to Market,
Rapid Change
22
1980’s Synthesis: Productivity, Reuse, Objects
23
Tools, Environments, and Process
• Over focus on programming: IPSEs to SEEs
– Requirements, design, planning and control, office
support
– Formatted vs. formal specifications
• Process-driven SEEs
– Use process knowledge as tool integration framework
– Some overkill in locking people into roles
• Process execution support: “SW processes are
SW too”
– What’s good for products is good for processes
– Reuse, prototyping, architecture, programming
• Process compliance support: Standards and
CMMs
24
No Silver Bullet: Brooks
• Automated solutions are good for “accidental” software
problems
– Simple inconsistencies, noncompliance (denial), inferences
(suggestions)
25
A Hegelian View of Software Engineering Evolution
Plan- Software
Engineer Compliance
Theses Driven Value-Add Integrated
Software Formality,
Software Sw-Systems
like Many defects Waterfall
Maturity COTS Engineering
Hardware
Models
Soft
SysE
Process Overhead
Value-Based
Risk-Based
Productivity; Methods;
Agile/Plan
Reuse; Risk Mgmt. Collaboration; Autonomy; Bio-
Syntheses -Driven
Objects; Domain Engr. Global Computing
Scalability, Hybrids;
Peopleware Development;
Risk Mgmt. Model-Driven
Enterprise
Development
Architectures
Scalability
Prototyping Global
Systems
Software of
Differences, Systems
Engineer Software
Agile
Antitheses Shortages as Craft
Methods
Time to Market,
Rapid Change
26
Dual 1990’s – Early 2000’s Antithesis:
- Maturity Models and Agile Methods
27
Agile and Plan-Driven Home Grounds:
Five Critical Decision Factors
• Size, Criticality, Dynamism, Personnel, Culture
Personnel
(% Level 1B) (% Level 2&3)
40 15
30 20
20 25
Criticality Dynamism
(Loss due to impact of defects) 10 30 (% Requirements – change/month)
a: Many Lives
a b 0 35
b: Single Life c d 3.0 1.0 0.3
e
c: Essential Funds 30 10
d: Discretionary Funds 3
e: Comfort 90
10
70
30
100 50
30
300
10
Size Culture
(# of personnel) (% thriving on chaos vs. order)
28
Advantages of Agile model:
• Customer satisfaction by rapid, continuous delivery of useful
software.
• People and interactions are emphasized rather than process
and tools. Customers, developers and testers constantly
interact with each other.
• Working software is delivered frequently (weeks rather than
months).
• Face-to-face conversation is the best form of communication.
• Close, daily cooperation between business people and
developers.
• Continuous attention to technical excellence and good
design.
• Regular adaptation to changing circumstances.
• Even late changes in requirements are welcomed
29
Disadvantages of Agile model:
• In case of some software deliverables, especially the large
ones, it is difficult to assess the effort required at the
beginning of the software development life cycle.
• The project can easily get taken off track if the customer
representative is not clear what final outcome that they want.
30
When to use Agile model:
• When new changes are needed to be implemented. The freedom agile
gives to change is very important. New changes can be implemented
at very little cost because of the frequency of new increments that are
produced.
• To implement a new feature the developers need to lose only the
work of a few days, or even only hours, to roll back and implement it.
• Unlike the waterfall model in agile model very limited planning is
required to get started with the project. Agile assumes that the end
users’ needs are ever changing in a dynamic business and IT world.
Changes can be discussed and features can be newly effected or
removed based on feedback. This effectively gives the customer the
finished system they want or need.
• Both system developers and stakeholders alike, find they also get
more freedom of time and options than if the software was developed
in a more rigid sequential way. Having options gives them the ability
to leave important decisions until more or better data or even entire
hosting programs are available; meaning the project can continue to
move forward without fear of reaching a sudden standstill.
31
Other 1990’s – Early 2000’s Developments
32
Mid-2000’s Synthesis: Risk-Driven Hybrid
Products and Process
33
Outline
• Motivation and Context
• A 20th Century View
• A 21st Century View
• Conclusions
– Timeless principles and aging practices
34
The Future of Systems and Software
• Eight surprise-free trends
1. Increasing integration of System Engineering and
Software Engineering
2. User/Value focus
3. Software Criticality and Dependability
4. Rapid, Accelerating Change
5. Distribution, Mobility, Interoperability, Globalization
6. Complex Systems of Systems
7. COTS, Open Source, Reuse, Legacy Integration
8. Computational Plenty
35
Globalization: “The World is Flat”
- Friedman, 2005
37
Integrated Enterprise Architectures
Federal Enterprise
Architectural Framework (FEAF)
DOD Architectural
Framework (DODAF)
Zachman
Framework
38
Persistence of Legacy Systems
• Before establishing new-system increments
– Determine how to undo legacy system
1939’s Science Fiction World of 2000 Actual World of 2000
39
Computational Plenty: Process Implications
42
Timeless Principles (+) and Aging Practices (-)
43
Timeless Principles (+) and Aging Practices (-)
44
Timeless Principles (+) and Aging Practices (-)
45
Timeless Principles (+) and Aging Practices (-)
46
Future Challenges for SW Engineering Education
- Student careers go through 2050’s