Understanding Software Development: Problems, Failures, and Solutions, Study notes of Computer Science

The importance of studying software development, discussing common problems such as expense, frequent late delivery, and software failures. It also covers reasons for failure, including poor specification and management, and the impact of software failures in our increasingly digital world. Students in computer science will find this information valuable for their object-oriented programming ii course.

Typology: Study notes

Pre 2010

Uploaded on 02/13/2009

koofers-user-q0s-1
koofers-user-q0s-1 🇺🇸

5

(1)

10 documents

1 / 5

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
CMSC 132:
Object-Oriented Programming II
Software Development
Department of Computer Science
University of Maryland, College Park
Modern Software Development
Why do we want to study the software
development process?
To understand
Software development problems
Why software projects fail
Impact of software failures
How to develop better software
Software Engineering
Definition from Wikipedia
Field that creates and maintains software
applications by applying technologies and practices
from computer science, project management,
engineering, application domains, and other fields.
Software Development Problems
Software is
Expensive
Cost per line of code growing (unlike hardware)
Frequently late
Schedule overruns
More expensive than projected
Cost overruns
Difficult to use & understand
Missing features
Too slow
Software Projects Fail
Anywhere from 25-50% of custom software fail
Example – FBI Virtual Case File
Began Jan 2001
Officially scrapped Jan 2005
LA Times (Jan 13, 2005)
“A new FBI computer program designed to help
agents share information to ward off terrorist
attacks may have to be scrapped… Sources said
about $100 million would be essentially lost if the
FBI were to scrap the software…”
Software Projects Fail
Reasons for failure of FBI Virtual Case File
Poor specification
800-page requirement document
Repeated changes in specification
New requirements continually added
Poor management
Repeated management turnover
Micromanagement of software developers
FBI personnel with no software experience
pf3
pf4
pf5

Partial preview of the text

Download Understanding Software Development: Problems, Failures, and Solutions and more Study notes Computer Science in PDF only on Docsity!

CMSC 132:

Object-Oriented Programming II

Software Development

Department of Computer Science

University of Maryland, College Park

Modern Software Development

Why do we want to study the software

development process?

To understand Software development problems Why software projects fail Impact of software failures How to develop better software

Software Engineering

Definition from Wikipedia

Field that creates and maintains software applications by applying technologies and practices from computer science, project management, engineering, application domains, and other fields.

Software Development Problems

Software is

Expensive Cost per line of code growing (unlike hardware) Frequently late Schedule overruns More expensive than projected Cost overruns Difficult to use & understand Missing features Too slow

Software Projects Fail

Anywhere from 25-50% of custom software fail

Example – FBI Virtual Case File

Began Jan 2001 Officially scrapped Jan 2005 LA Times (Jan 13, 2005) “A new FBI computer program designed to help agents share information to ward off terrorist attacks may have to be scrapped… Sources said about $100 million would be essentially lost if the FBI were to scrap the software…”

Software Projects Fail

Reasons for failure of FBI Virtual Case File

Poor specification 800-page requirement document Repeated changes in specification New requirements continually added Poor management Repeated management turnover Micromanagement of software developers FBI personnel with no software experience

Impact of Software Failures Increasing

Software becoming part of basic infrastructure

Software in cars, appliances Business transactions moving online

Computers becoming increasingly connected

Failures can propagate through internet Internet worms Failures can be exploited by others Viruses Spyware

Software Contributes to Real Failures

Bugs in software may cause real-world failures

Example – Air Force F-22A Raptor

Stealth fighter costing $300 million each 1.7 millions lines of code for plane’s avionics

Software Contributes to Real Failures

Air Force F-22A Raptor software fails midair

DefenseNews.com (March 5, 2007) “When a dozen Raptors en route from Hawaii to Japan crossed the International Date Line for the first time, the jets’ Global Positioning System navigation avionics went haywire, forcing the pilots to turn around.” GPS software unable to handle change in longitude from W179.99 o^ to E180o Raptor pilots visually followed refueling tankers back to Hawaii

Software Contributes to Real Failures

Happy ending for Raptor?

Lockheed-Martin provided software fix in 48 hours For “operational security reasons” the USAF declined to elaborate, saying only that the F-22A “experienced a software problem involving the navigation system”

Tough being a Raptor test pilot

DefenseNews.com (March 5, 2007) “When the plane was in developmental stages … pilots flying the Raptor would often have to reboot the onboard computers that controlled the jet’s high-end functions”

Other Famous Software Failures

1990 AT&T long distance calls fail for 9 hours

Wrong location for C break statement

1996 Ariane rocket explodes on launch

Overflow converting 64-bit float to 16-bit integer

1999 Mars Climate Orbiter crashes on Mars

Missing conversion of English units to metric units

Why Is Software So Difficult?

Complexity

Software becoming much larger Millions of line of code Hundreds of developers Many more interacting pieces

Length of use

Software stays in use longer Features & requirements change Data sets increase Can outlast its creators

Program Design

Goal

Break software into integrated set of components that work together to solve problem specification

Example

Problems

Methods for decomposing problem How components work together

Algorithms and Data Structures

Goal

Select algorithms and data structures to implement each component

Problems

Functionality Provides desired abilities Efficiency Provides desired performance Correctness Provides desired results

Algorithms and Data Structures

Example

Implement list as array or linked list

Coding and Debugging

Goal

Write actual code and ensure code works

Problems

Choosing programming language Functional design Fortran, BASIC, Pascal, C Object-oriented design Smalltalk, C++, Java Using language features Exceptions, streams, threads

Testing and Verification

Goal

Demonstrate software correctly match specification

Problem

Program verification Formal proof of correctness Difficult / impossible for large programs Empirical testing Verify using test cases Unit tests, integration tests, alpha / beta tests Used in majority of cases in practice

Documentation and Support

Goal

Provide information needed by users and technical maintenance

Problems

User documentation Help users understand how to use software Technical documentation Help coders understand how to modify, maintain software

Maintenance

Goal

Keep software working over time

Problems

Fix errors Improve features Meet changing specification Add new functionality