1 / 26

CSCI-6961/ECSE-6780: Software Engineering II

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/

carney
Download Presentation

CSCI-6961/ECSE-6780: Software Engineering II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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!

  5. 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.”

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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.

  16. Some Notable Software Bugs… • A collection of notable software bugs • Thanks to Atif Memon, University of Maryland

  17. 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

  18. 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

  19. 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)

  20. 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

  21. “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

  22. 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

  23. 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

  24. 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

  25. 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…

More Related