CSCI-6961/ECSE-6780: Software Engineering II Class: Mondays and Thursdays 4-5:20 pm, Carnegie 201 Instructor: Ana Milanova Office:

Slides:



Advertisements
Similar presentations
CSE 599F: Formal Verification of Computer Systems.
Advertisements

CS 4001Mary Jean Harrold1 High Cost of Software Failure Denver Airport Baggage System (1995): $280M Ariane 5 Explosion (1996): $7B Mars Rover (2004): Unknown.
Syllabus Case Histories WW III Almost Medical Killing Machine
Software Engineering Disasters
1 Basic Definitions: Testing What is software testing? Running a program In order to find faults a.k.a. defects a.k.a. errors a.k.a. flaws a.k.a. faults.
Reliability and Safety Lessons Learned. Ways to Prevent Problems Good computer systems Good computer systems Good training Good training Accountability.
Systems Modeling and Analysis Using Colored Petri Nets Vijay Gehlot Center of Excellence in Enterprise Technology Department of Computing Sciences.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani University of Bozen- Bolzano Lesson 4 – Software Testing.
Building Reliable Software Requirements and Methods.
Soft. Eng. IDr Driss Kettani1 CSC-3324: Chapter I Introduction and definition Reading: I. Sommerville, Edition 7, Chap. 1.
8. Fault Tolerance in Software 8.1 Introduction Is it true that a program that has once performed a given task as specified will continue to do so? Yes,
CS590 Z Software Defect Analysis Xiangyu Zhang. CS590F Software Reliability What is Software Defect Analysis  Given a software program, with or without.
Lecture 4b: Risks and Liabilities of Computer-based Systems
(c) 2007 Mauro Pezzè & Michal Young Ch 1, slide 1 Software Test and Analysis in a Nutshell.
ECI 2007: Specification and Verification of Object- Oriented Programs Lecture 0.
CS 235: User Interface Design January 22 Class Meeting
Copyright © 2011 Pearson Education, Inc. Publishing as Prentice Hall 1 Building Applications.
CS5103 Software Engineering Lecture 13 Software Licenses Software Testing.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
WEEK 1 CS 361: ADVANCED DATA STRUCTURES AND ALGORITHMS Dong Si Dept. of Computer Science 1.
USS Yorktown (1998) A crew member of the guided-missile cruiser USS Yorktown mistakenly entered a zero for a data value, which resulted in a division by.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
1. Topics to be discussed Introduction Objectives Testing Life Cycle Verification Vs Validation Testing Methodology Testing Levels 2.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 23, 2011.
Software is:  Computer programs, procedures, and possibly associated documentation and data relates to the operation of a computer system. [IEEE_Std_ ]
CS 235: User Interface Design August 25 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
Introduction to Software Quality Assurance
Software Engineering Background Dr. David A. Gaitros.
Cs498dm Software Testing Darko Marinov January 15, 2008.
CS 430/530 Formal Semantics Paul Hudak Yale University Department of Computer Science Lecture 1 Course Overview September 6, 2007.
Vladimir Misic: Design111:43:34 AM Software design.
INVARIANTS EEN 417 Fall When is a Design of a System “Correct”? A design is correct when it meets its specification (requirements) in its operating.
Dimitrios Christias Robert Lyon Andreas Petrou Dimitrios Christias Robert Lyon Andreas Petrou.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Cs498dm Software Testing Darko Marinov January 17, 2012.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Testing software Team Software Development Project.
(1) A beginners guide to testing Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu.
Syllabus. Instructor Dr. Hanan Lutfiyya Middlesex College 418 Ext Office Hours: Wednesday 5-6; Thursdays 4-6 or by appointment.
An Undergraduate Course on Software Bug Detection Tools and Techniques Eric Larson Seattle University March 3, 2006.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
1 Software Quality Assurance COMP 4004 Notes Adapted from S. Som é, A. Williams.
Forensic Software Engineering: Are Software Failures Symptomatic of Systemic Problems? Chris Johnson, University of Glasgow My name is Elisabeth.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
David Evans CS201j: Engineering Software University of Virginia Computer Science Lecture 9: Designing Exceptionally.
Winter 2007SEG2101 Chapter 121 Chapter 12 Verification and Validation.
Chapter 8 Errors, Failures, & Risks. Real Headlines Navigation system directs car into river Data entry typo mutes millions of U.S. pagers Flaws found.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 24, 2010.
CSCI 3428: Software Engineering Tami Meredith Chapter 11 Maintaining the System.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 23, 1999.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
Topic 10Summer Ariane 5 Some slides based on talk from Sommerville.
1 Advanced Computer Programming Project Management: Basics Copyright © Texas Education Agency, 2013.
Cs498dm Software Testing Darko Marinov January 24, 2012.
Thanks to Atif Memon from UMD for disaster examples
Software Quality and Testing (CSC 4133)
Why study Software Design/Engineering ?
Thanks to Atif Memon from UMD for disaster examples
CSC 591/791 Reliable Software Systems
Secure Software Development: Theory and Practice
ECE 103 Engineering Programming Chapter 2 SW Disasters
Fault Injection: A Method for Validating Fault-tolerant System
Software Quality Assurance Lecture 1
Thanks to Atif Memon from UMD for disaster examples
Thanks to Atif Memon from UMD for disaster examples
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 26, 2008.
Software Engineering Disasters
Presentation transcript:

CSCI-6961/ECSE-6780: Software Engineering II Class: Mondays and Thursdays 4-5:20 pm, Carnegie 201 Instructor: Ana Milanova Office: Lally Hall 314 Phone: Office hours: Wednesdays 12-2pm, or by appointment Web: Syllabus:

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 Development –Requirements Analysis –Domain Analysis –Design –Implementation –Testing/Validation Maintenance –Enhancements –Bug fixes –Etc. Only about 5 to 10% of cost! 90 to 95% of cost! DEPLOYMENT/ RELEASE

Economic Impact National Institute of Standards and Technology study –On CNN.com – April 27 th, 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), (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 Software Under Test Output Good Coverage? Test case Generation (can be automated) Validation (can be automated) Yes No Executes the software.

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 Static Analysis Tool Warnings Specification --- what bugs to look for? (optional) Examine warnings and fix bugs Software Under Check Examines the source code, without execution.

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 USS Vincennes shot down an Airbus 300 Mistook the Airbus 300 for an F 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, 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…