Transcript Lecture 2
CS 551 Why do software
systems break?
Object Oriented Technology can contain
the effects of an fault.
Software Engineering
Client Personal Computer
Client Workstation
Application Server
Tailored OO Application
Software
Reusable Software
Vendor Software
User Programs
Large Data Server
Procedural Programming
Program
Compile
6-18
Months
to first
release
CPU
Debug
SW Library
Link
...
Load
CPU
Run
Failure Modes
Execute a fault to cause a failure, errors are faults.
Benign errors: Process can recover
Fatal error: Process terminates
Catastrophic error: System hang or crash
Failure Modes
Aging or duration-related memory leaks and
fragmentation degrades execution time or space
exhaustion, often causing reduced throughput and
eventual system failure.
Failure Modes
Changes in the operating system versions or separate
subsystems can affect performance and reliability.
The main program has not changed the extended
machine and therefore its environment has
changed.
Failure Modes
Hardware degradation which affects system
performance can be experienced many ways.
Increased error rate on disk drives which are old
or dirty; cables and connectors which become
intermittent or noisy; etc. These examples are
commonplace and have very significant reliability
impacts.
Debugging Heterogeneous Distributed
Applications- event logging system
See Dr. Dobbs Journal November 2005 pp. 32-36-
http://www.ddj.com/article/printableArticle.jhtml?articleID=184406314&dept_url=/architect/
Commands: Past_Hour; SYNC; Config
Beware: Babbling idiots AS OF 9/11/08
OOD Programming
Create
Create Node -
= ====
Node
Assign
5ESS
R
5E
Filter
Type Assets -
===
5E
C.Alarm
5ESS
C. Alarm
Dynamic Bonding
5E
C.Alarm
Activate
< 1 Week
Thres
Threshold
Databases: Key to System Integration
Any meaningful concept of integration must revolve
around the objects used by the systems.
Systems are integrated to the degree that they use the
same objects.
Objects are not static in either meaning or structure; the
problem is to manage these changes, not stop them.
Data do not die when their host system dies. In fact, they
grow, becoming integrated with data from other systems.
How Data Gets Corrupted
Field Support
Provisioning
Telephone
Equipment
“…[S]ystems are integrated to the degree that they
use the same data.”
Robert Curtice
“…[D]ata are not static in either meaning or structure
[and] the problem is to manage these changes,
not stop them.”
Daniel S. Appleton
Feedback for data integrity
Client
Field Support
Provisioning
Field Support
Provisioning
Logical
Update
Loop
Telephone
Equipment
Network
Changes
Customer
Records
Update
Customer
Service
Requests
Large
Data
Server
Data integrity through objects
A1
A
Date & Action
Changes
Data
Data 1
Actions
B
Actions 1
C
B1
C1
Data +
Data ++
Data 1 +
Data 1 ++
Actions +
Actions ++
Action 1 +
Action 1 ++
Benefits
•Inheritance rippled consistent changes throughout
•Data and Actions updated “Just-in-Time”
•Redundant Data Minimized
Robustness 30:1
It takes three times the effort to find and fix a
problem in the test lab then by developers
It takes ten times the test lab effort to find and fix
it in the field
As of 9/7/06
IP Business Model
Soaring Revenues VIP
WOW!!!
Arthur’s
Ads
Content
Storage & Retrieval
Corporate Network
Management
Content
Authoring
James’
Games
Network
Provider 1
Customer
Care
Level 1/2
Gateways
Transactions
Processing
L1G
IEC
Networks
Hollywood’s
Hottest
Shop
at
Home
Broadband
Pizza
Credit/
Banking
L1G
Universal
123 456 789000
John Doe
Network
Provider N
“Testing can show the presence of bugs but not their
absence.”
E. Dijkstra, inventor of structured
programming
“Software is only one interpretation of the reality of the
problem it is solving.”
Jackson
“Don’t automate an undisciplined work flow. The
computer won’t solve what the customer’s management
can’t.”
Brooks
Functional versus Project organization
Functional
Project
Requirements
Design
Code
Test
Customer interface
Program design
Integration
Validation and Verification
More efficient because skills More effective and more fun.
are honed. Hard integration
and prone to ‘gold plating.’
Bugs
Where are they?
How many are typically found?
Do bugs ever go away?
Where are Bugs found?
Developers’ System Test
77%
Customer’s On-Site Test
1%
Customer’s Acceptance Test
2%
Soak Site and Training Program
4%
Production Use
16%
100%
Bugs reported from first two beta sites
Found by Developers
Sub-system
(# source lines
of code)
Month
F
(25K)
Total #
Bugs
B
(100K)
C
(113K)
D
(175K)
Jan
3
118
68
87
14
0
32
290
Feb
15
80
45
60
60
0
18
260
Mar
20
96
59
69
139
0
18
383
Apr
14
58
19
68
174
0
18
333
May
17
78
30
56
127
0
34
308
June
18
106
104
82
63
0
50
373
July
16
108
88
95
94
0
32
401
Aug
10
111
60
86
59
2
49
326
Sept
11
93
68
124
77
4
71
375
Oct
15
105
56
94
87
0
90
361
Nov
16
84
95
68
65
4
112
332
155
1,037
692
889
959
10
524
3,742
11 Month
Total
E
(112K)
Found by
customer
A
(250K)
Bug density in mature systems
System
(# of source lines
of code)
# Releases
A (500K )
13
B ( 200K )
14
C (100K )
8
D ( 50K )
9
Bugs per 1K New
or Changed
Source Lines
0.76
0.72
1.00
1.14
Ten key development processes
1. Pilot before deploying
2. Use experts first
3. Invest $ and time in staff
4. Number of OO Architects = 20% staff
5. Number of Object classes = 0.5% function points
6. Design = 30% development cycle
7. Model performance early and often
8. Buy unit test drivers
9. Assign work by feature teams
10. First release break-even; afterwards 3:1
Top IT Mistakes,
Infoworld.com 11.22.04, pp. 35-41
Outsourcing & Off-shoring fever (or
denial)
Open Source fever (or denial)
Discounting any internal & network
security threats
Tuning applications solely to Microsoft
Servers.
Underestimating the power of PHP or
Ruby on Rails or …
Inexperienced Software Management
Poor change management
Poor software development
leadership
Promoting the wrong people
No independent QA.
No simplification effort.
Hypnotized by vendor
marketing.
Key Question
What’s the problem?