The Software Problem
Dr Atul Gupta
Software Development: How it goes
Course Objectives
Main objective: Give an idea of how industrialstrength software gets developed At the end you should have the ability to plan, execute, and manage small software projects Lectures will discuss how to perform different tasks in a project In the project , the techniques will be applied
Evaluation and Grading
Project will have a weight of 30%
a poor project cannot get a good grade
Project group grade; marks equally divided unless the team specifies a diff distribution (based on contribution) One mid sem exam and an end sem exam (40%) Term Paper (20%)
Software
Q : If you have to write a 10,000 line program in C or Java to solve a problem, how long will it take? Answers: generally range from 2-4 months Let us analyze the productivity
Productivity = output/input resources In SW output is considered as LOC Input resources is effort - person months; overhead cost modeled in rate for person month Though not perfect, some productivity measure is needed, as project has to keep it high
Software
The productivity is 2.5-5 KLOC/PM Q: What is the productivity in a typical commercial SW organization ? A: Between 100 to 1000 LOC/PM Q: Why is it low, when your productivity is so high? (people like you work in the industry) A: What the student is building and what the industry builds are two different things
Software
In a university a student system is built while the commercial org builds industrial strength sw What is the difference between a student program and industrial strength sw for the same problem?
Software
Student Developer is the user
bugs are tolerable UI not important No documentation
Industrial Strength Others are the users
bugs not tolerated UI v. imp. issue Documents needed for the user as well as for the organization and the project
Software
Student SW not in critical use Reliability, robustness not important No investment Dont care about portability Industrial Strength Supports important functions / business Reliability , robustness are very important Heavy investment Portability is a key issue here
The Problem Domain
Industrial Strength Software Software is Expensive Late and Unreliable Complex Maintenance and Rework (Change)
Industrial Strength Software
the software that solves some problem of some users where larger systems or businesses may depend on the software, and where problems in the software can lead to significant direct or indirect loss
Industrial strength software
Student programs for a problem & industrial strength software are two different things Key difference is in quality (including usability, reliability, portability, etc.)
High quality requires heavy testing, which consumes 30-50% of total development effort Requires development be broken in stages such that bugs can be detected in each Good UI, backup, fault-tolerance, following of stds etc increase the size for the same functionality
Industrial strength software
If 1/5th productivity, and increase in size by a factor of 2, industrial strength software will take 10 times effort Brooks thumb-rule: Industrial strength sw costs 10 time more than student sw Domain of SW Engg: Industrial strength sw In SW Engg. and in this course, software means industrial strength software
Software is Expensive
Let us look at costs involved
Productivity = 500 LOC/PM Cost to the company = $10K/PM Cost per LOC = $20 I.e, each line of delivered code costs about $20.
A simple application for a business may have 20KLOC to 50KLOC
Cost = $400K to $1Million Can easily run on $10K-$20K hardware So HW costs in an IT solution are small as compared to SW costs.
Software is Expensive
The HW/SW ratio for a computer system has shown a reversal from the early years.
In 50s , HW:SW :: 80:20 In 80s , HW:SW :: 20:80
So , SW is very expensive
Importance of optimizing HW is not much More important to optimize SW
Late & Unreliable
20-25% of SW projects never complete
Because after some time they realize that the final cost will be much higher
Many companies report runaways
budget & cost out of control consulting companies to help control them
One defence survey found that 70% of the equipment problems are due to SW Many examples of software failures
Unreliable
SW failures are different from failures of mechanical or electrical systems In software, failures are not due to aging related problems Failures occur due to bugs or errors that get introduced during development I.e. the bug that causes a failure exists from start, only manifests later
Software Development in 60s
The moon was promised ..
Software Development in 60s
A lunar rover was built ..
Software Development in 60s
A pair of square wheels were delivered..
Nature of Software Development: The Past
IBM survey, 1994
55% of systems cost more than expected 68% overran schedules 88% had to be substantially redesigned
Advanced Automation System (Federal Aviation Administration, 1982-1994)
industry average was $100/line, expected to pay $500/line ended up paying $700-900/line $6B worth of work discarded
Bureau of Labor Statistics (1997)
for every 6 new systems put into operation, 2 cancelled probability of cancellation is about 50% for biggest systems average project overshoots schedule by 50% 3/4 systems are regarded as operating failures
21
10/21/2010
Whats Wrong?
Since then, the problem is actively investigated and researched Everything has been blamed
Customer
What to you meanI cant get the moon for $50?
Soft in the software
If I could add one last feature
Processes Young discipline
Whats Wrong?
Actually, the problem lies in Complexity (Lecture #3)
The application domain The solution domain
Change
Requirements Changes in technologies Bug fixing
And you need to deliver software
Within the budget, the schedule, and user perceived quality
Magnitude of the Problem: Some Instances
10/21/2010
25
Denver Airport Baggage System
Approved in 1989 Aimed to reduce flight delays, shorten waiting times at luggage carousels, and save airlines in labor costs at Denver Planned to be operational by the end of 1993 53 sq. miles 5 runaways, with possibly 12 in future 3 landing simultaneously in all weather conditions 20 major airlines Initial Estimates $186 M 4000 telecars carry luggage across 21 miles of track Laser scanners read barcodes on luggage tags Photocells tracked telecars movement Controlled by 300 computers
10/21/2010
26
Denver Airport Baggage System
cont.
Results
Crippled by many Software bugs Telecars were misrouted and crashed $1.1 M/day loss due to non operational Airport opened in 1995 $88 M spent extra on Baggage system Only one airline used it and that too for outgoing flight Costed $4.2 B A complete failure
10/21/2010 27
Therac-25 (1985-87)
Radiotherapy machine with software controller Software failed to maintain essential invariants: either electron beam mode or stronger beam and plate intervening, to generate X-rays Several deaths due to burning Programmer had no experience with concurrent programming see: http://sunnyday.mit.edu/therac-25.html
10/21/2010 28
Ariane-5 (4th June 1996)
European Space Agency Complete loss of unmanned rocket shortly after takeoff Failure due to exception thrown in Ada code The faulty code was not even needed after takeoff It was due to change in physical environment: undocumented assumptions violated see: http://sunnyday.mit.edu/accidents/Ariane5accident report.html
10/21/2010 29
London Ambulance Service (1992)
loss of calls, double dispatches from duplicate calls Media reports - up to 30 people may have died as a result of the chaos. poor choice of developer: inadequate experience see: http://www.cs.ucl.ac.uk/staff/A.Finkelstein/l as.html
10/21/2010 30
And the List is endless
Lost Voyager Spacecraft (one bad line of code caused failure) 3 Mile Island in Pennsylvania(poor user interface design) Commercial aircraft accidentally shot down during Gulf War (poor user interface)
10/21/2010 31
Sensing the Problem
The demand for software has grown far faster than our ability to produce it. Furthermore, the Nation needs software that is far more usable, reliable, and powerful than what is being produced today. We have become dangerously dependent on large software systems whose behavior is not well understood and which often fail in unpredicted ways. Information Technology Research: Investing in Our Future Presidents Information Technology Advisory Committee (PITAC) Report to the President, February 24, 1999 - Available at http://www.ccic.gov/ac/report/
10/21/2010 32
Software Development in 2010s
Much Better
Better processes, practices, and tools are being used
Failure rate is dropped to 30-40% Possible due to the advances in the field of Software Engineering
Maintenance and Rework
Once sw delivered, it enters maintenance phase Why is maintenance needed for sw when it does not wear with age?
Residual errors requiring corrective maint Upgrades and environment changes adaptive maint
Over sw life, maint can cost more than the development cost of sw
Difference from Other Engineering Disciplines
The end product is abstract, not a concrete object like a bridge Costs are almost all human Easy to fix bugs, but hard to test and validate Software typically never wears out...but the hardware/OS platforms it runs on do Variations in application domain are open-ended, may require extensive new non-software, non-engineering knowledge for each project Changes occur in application and solution domains while the problem is being solved (Software Evolution)
10/21/2010 35
Books and Reference Materials
Useful Books
Pankaj Jalote. An integrated approach to Software Engineering, 3rd Ed. Narosa Publication 2005 Bernd Bruegge, Allen Dutoit: Object-Oriented Software Engineering: Using UML, Patterns, and Java, Addison Wesley, 2003.
Course site
https://sites.google.com/site/atulkg/courses/software-engineering
Internet
10/21/2010
36
Questions ?