280 likes | 459 Views
CSCI-6961/ECSE-6780: Software Engineering II. Class: Mondays and Thursdays 4-5:20 pm, Carnegie 201 Instructor: Ana Milanova Email: milanova@cs.rpi.edu Office: Lally Hall 314 Phone: 518-276-6887 Office hours: Wednesdays 12-2pm, or by appointment Web: www.cs.rpi.edu/~milanova/csci6961/
E N D
CSCI-6961/ECSE-6780:Software Engineering II • Class: Mondays and Thursdays 4-5:20 pm, Carnegie 201 • Instructor: Ana Milanova • Email: milanova@cs.rpi.edu • Office: Lally Hall 314 • Phone: 518-276-6887 • Office hours: Wednesdays 12-2pm, or by appointment • Web: www.cs.rpi.edu/~milanova/csci6961/ • Syllabus: www.cs.rpi.edu/~milanova/csci6961/syllabus.html
What is Software Engineering II? • Catalog: Current techniques in software engineering with topics selected from economics, reusability, reliable software, program analysis, reverse engineering, CASE tools, automatic code generation, and project management techniques. • Our focus: Program analysis and its applications to software engineering, especially towards techniques and tools for improving software quality and reliability
Program Analysis • Program analysis is a technique that reasons about the run-time behavior of the program • Static program analysis – reasoning is done statically, before program execution • Dynamic program analysis – reasoning is done dynamically, during program execution • We will focus on static program analysis • Traditional application – compiler optimization • New application – software engineering tools, especially tools for improving software quality and reliability
Software Quality and Reliability Only about 5 to 10% of cost! • Development • Requirements Analysis • Domain Analysis • Design • Implementation • Testing/Validation • Maintenance • Enhancements • Bug fixes • Etc. DEPLOYMENT/RELEASE 90 to 95% of cost!
Economic Impact • National Institute of Standards and Technology study • On CNN.com – April 27th, 2003 • “Last year, a study commissioned by the National Institute of Standards and Technology found that software errors cost the U.S. economy $59.5 billion annually, or about 0.6 percent of the gross domestic product. More than half the costs are borne by software users, the rest by developers and vendors.”
Beyond Dollar Costs • “Software Engineering: Report on a Conference Sponsored by the NATO Science Committee, Brussels, NATO Scientific Affairs Division,” 1968, p. 121 • An error in an aircraft design program contributed to several serious air crashes • “Software and its Impact: A Quantitative Assessment,” by B.W. Boehm, Datamation, 19(5), 48-59 (1973) • Errors in medical software have caused deaths
Expectations • Can’t we expect software to execute correctly? • Carefully made programs • 5 faults/1000 LOC • 5000 faults/1M LOC • Windows XP has about 45M LOC • 45 x 5000 = 225,000
Goals of the Course • Learn about techniques for testing and validation • Software testing --- systematic execution of the software • Learn/review fundamentals of testing • Static program analysis --- track flow of control and data without execution of the software • Learn some theory of program analysis, learn about applications of program analysis towards testing and validation • Traditional static program analysis (data-flow analysis) • Dynamic program analysis --- track flow of control and data during execution of the software
Syllabus • Course Material • Static Program Analysis • Fundamentals of Software Testing • Dynamic Program Analysis • Expected Work • Project (50%) • Midterm (20%) • Homework (15%) • Presentation of a research paper (15%) • Textbooks
Prerequisites • SD&D/Software Engineering I • Java • Helpful to know, but other OO programming will work too • You will need a UNIX account on the CS system for the class project • Let me know if you don’t have one
Testing: Decades of Experience Test Case Executes the software. Test case Generation(can be automated) Software Under Test Output Good Coverage? No Validation(can be automated) Yes
Limitations of Testing • Not enough! • Kinds of bugs difficult to reveal with testing • Resource leakage bugs • Buffer overflows • Memory leaks • Concurrency related bugs • Data races • Atomicity violations • Deadlocks
Static Program Analysis: Recently StaticAnalysis Tool Software Under Check Specification --- what bugs to look for?(optional) Examines the source code,without execution. Warnings Examine warningsand fix bugs
A Growing Area… • Microsoft – investment in static analysis tools for C/C++ with good results • IBM – less, mostly in the J2EE area (some tools are available through the Eclipse project). • NASA, US Navy • Successful companies with hundreds, even thousands of clients
Our class, once again: techniques for improving software quality and reliability • Static program analysis (data-flow analysis) • Theory, applications and tools • Fundamentals of software testing • Review testing techniques, apply data-flow analysis in testing • Dynamic analysis • Applications and tools.
Some Notable Software Bugs… • A collection of notable software bugs • Thanks to Atif Memon, University of Maryland
Mars Climate Orbiter • Purpose: to relay signals from the Mars Polar Lander once it reached the surface • Disaster: smashed into the planet instead of reaching a safe orbit • Why: Software bug – failure to convert English measures to metric values • $165M
Shooting Down of Airbus 300 • 1988 • USS Vincennes shot down an Airbus 300 • Mistook the Airbus 300 for an F-14 • 290 people dead • Why: Software bug --- cryptic and misleading output displayed by the tracking software
THERAC-25 Radiation Therapy • THERAC-25, a computer controlled radiation-therapy machine • 1986: two cancer patients at the East Texas Cancer Center in Tyler received fatal radiation overdoses • Why: Software bug --- a race condition (i.e., miscoordination between concurrent tasks)
London Ambulance Service • London Ambulance Service Computer Aided Dispatch (LASCAD) • Purpose: automate many of the human-intensive processes of manual dispatch associated with ambulance service • Functions: Call tracking • Failure of the London Ambulance Service on 26 and 27 November 1992
“Nice of You to Turn Up” • Load increased • Emergencies accumulated • System made incorrect allocations • More than one ambulance being sent to the same incident • The closest vehicle was not chosen for the emergency • At 23:00 on November 28 the LAS eventually went to a back-up procedure after at least 20 patients die
More… • “The development of software for ballistic-missile defense,” by H. Lin, Scientific American, vol. 253, no. 6 (Dec. 1995), p. 48 • An Air New Zealand airliner crashed into an Antarctic mountain • North American Aerospace Defense Command reported that the US was under missile attack; traced to faulty computer software that generated incorrect signals • Manned space capsule Gemini V missed its landing point by 100 miles
More • “Ghost in the Machine,” Time Magazine, Jan. 29, 1990. p. 58 • Dallas/Fort Worth air-traffic system began spitting out gibberish in the Fall of 1989 and controllers had to track planes on paper • Software Reliability: Principles and Practice, p. 25, by G. J. Myers • Apollo 8 spacecraft erased part of the computer’s memory • Eighteen errors were detected during the 10-day flight of Apollo 14
More… • An error in a single FORTRAN statement resulted in the loss of the first American probe to Venus • An Airbus 320 crashes at an air show • A China Airlines Airbus A300 crashes on April 26, 1994 killing 264 • Ariane 5 satellite launcher malfunction was caused by a faulty software exception routine
More… • CNN.com • A poorly programmed ground-based warning system was partly responsible for the 1997 Korean Air crash in Guam that killed 228 people • Faulty software in anti-lock brakes forced the recall of 39,000 trucks and tractors and 6,000 school buses in 2000 • AND MANY MORE OF COURSE…