0% found this document useful (0 votes)
106 views37 pages

Lecture1-2

The document discusses the key differences between student software projects and industrial strength software. Industrial strength software is more complex, expensive, and time-consuming to develop due to requirements for high quality, reliability, and other factors. It can take 10 times as much effort to develop industrial strength software compared to a student software project for the same problem. Some examples are provided of large, failed software projects that experienced cost overruns, delays, and bugs due to the complex nature of software development.

Uploaded by

Harendra Singh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
106 views37 pages

Lecture1-2

The document discusses the key differences between student software projects and industrial strength software. Industrial strength software is more complex, expensive, and time-consuming to develop due to requirements for high quality, reliability, and other factors. It can take 10 times as much effort to develop industrial strength software compared to a student software project for the same problem. Some examples are provided of large, failed software projects that experienced cost overruns, delays, and bugs due to the complex nature of software development.

Uploaded by

Harendra Singh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

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 ?

You might also like