CS 5150 1 CS 5150 Software Engineering Lecture 21 Reliability 3.

Slides:



Advertisements
Similar presentations
Lecture 8: Testing, Verification and Validation
Advertisements

1 CS 501 Spring 2005 CS 501: Software Engineering Lecture 21 Reliability 3.
Chapter 4 Quality Assurance in Context
Testing: Who 3, What 4, Why 1, When 2, How 5 Lian Yu, Peking U. Michal Young, U. Oregon.
CS 5150 Software Engineering
CS CS 5150 Software Engineering Lecture 21 Reliability 2.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
CS CS 5150 Software Engineering Lecture 22 Reliability 2.
CS CS 5150 Software Engineering Lecture 22 Reliability 3.
1 CS 501 Spring 2005 CS 501: Software Engineering Lecture 24 People 2.
1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 21 Reliability 3.
1 CS 501 Spring 2008 CS 501: Software Engineering Lecture 20 Reliability 2.
CS 501: Software Engineering
1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 26 People 1.
CS CS 5150 Software Engineering Lecture 25 People 1.
Information Systems Development Lecture 2: the idea of the Life Cycle.
1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 20 Reliability 2.
Developing Dependable Systems CIS 376 Bruce R. Maxim UM-Dearborn.
1 CS 501 Spring 2006 CS 501: Software Engineering Lecture 20 Reliability 2.
CS 501: Software Engineering Fall 2000 Lecture 21 Dependable Systems I Reliability.
CS 501: Software Engineering Fall 2000 Lecture 22 Dependable Systems II Validation and Verification.
1 CS 501 Spring 2008 CS 501: Software Engineering Lecture 21 Reliability 3.
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
H-1 Network Management Network management is the process of controlling a complex data network to maximize its efficiency and productivity The overall.
Software Dependability CIS 376 Bruce R. Maxim UM-Dearborn.
CSCI 5801: Software Engineering
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
CompSci 230 Software Design and Construction
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
CMSC 345 Fall 2000 Unit Testing. The testing process.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
1 Software Engineering II Software Reliability. 2 Dependable and Reliable Systems: The Royal Majesty From the report of the National Transportation Safety.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
CS CS 5150 Software Engineering Lecture 3 Software Processes 2.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 23 Reliability III.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development 3.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 24 Delivering the System.
SOFTWARE ENGINEERING MCS-2 LECTURE # 4. PROTOTYPING PROCESS MODEL  A prototype is an early sample, model or release of a product built to test a concept.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 22 Reliability II.
1 SWE 513: Software Engineering People II. 2 Future Experience What will you be doing one year from now? Ten years from now?
CS 360 Lecture 17.  Software reliability:  The probability that a given system will operate without failure under given environmental conditions for.
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill Stephen R. Schach 1.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
CS CS 5150 Software Engineering Lecture 26 Professionalism.
CS 5150 Software Engineering Lecture 22 Reliability 3.
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 21 Reliability II.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 20 Reliability 2.
Methodologies and Algorithms
Chapter 18 Maintaining Information Systems
CS 5150 Software Engineering
Chapter 8 – Software Testing
Software Testing Testing process, Design of test cases.
Software testing strategies 2
Lecture 09:Software Testing
Chapter 2 – Software Processes
Testing and Test-Driven Development CSC 4700 Software Engineering
Fault Tolerance Distributed Web-based Systems
CS 5150 Software Engineering
Welcome to Corporate Training -1
Unit 1 :Basic Of Software Testing
Presentation transcript:

CS CS 5150 Software Engineering Lecture 21 Reliability 3

CS Administration Final presentations Sign up for your presentations now.

CS Failures and Faults Failure: Software does not deliver the service expected by the user (e.g., mistake in requirements, confusing user interface) Fault (BUG): Programming or design error whereby the delivered system does not conform to specification (e.g., coding error, interface error)

CS Terminology Fault avoidance Build systems with the objective of creating fault- free (bug-free) software Fault tolerance Build systems that continue to operate when faults (bugs) occur Fault detection (testing and validation) Detect faults (bugs) before the system is put into operation.

CS Faults and Failures Actual examples (a)An application crashes with an emulator, even though the emulator is bug free. (Compensating bug problem.) (b)After an entire network is hit by lightning, the restart crashes because of overload. (Problem of incremental growth.) (c) The head of an organization is not paid his salary because it is greater than the maximum allowed by the program. (Requirements problem.) (d) An operating system fails because of a page-boundary error in the firmware. (Different operating system problem.)

CS Defensive Programming Murphy's Law: If anything can go wrong, it will. Defensive Programming: Redundant code is incorporated to check system state after modifications. Implicit assumptions are tested explicitly. Risky programming constructs are avoided.

CS Fault Tolerance Aim: A system that continues to operate when problems occur. Examples: Invalid input data (e.g., in a data processing application) Overload (e.g., in a networked system) Hardware failure (e.g., in a control system) General Approach: Failure detection Damage assessment Fault recovery Fault repair

CS Fault Tolerance Backward Recovery: Record system state at specific events (checkpoints). After failure, recreate state at last checkpoint. Combine checkpoints with system log (audit trail of transactions) that allows transactions from last checkpoint to be repeated automatically. Test the restore software!

CS Fixing Bugs Isolate the bug Intermittent --> repeatable Complex example --> simple example Understand the bug Root cause Dependencies Structural interactions Fix the bug Design changes Documentation changes Code changes

CS Moving the Bugs Around Fixing bugs is an error-prone process! When you fix a bug, fix its environment Bug fixes need static and dynamic testing Repeat all tests that have the slightest relevance (regression testing) Bugs have a habit of returning! When a bug is fixed, add the failure case to the test suite for future regression testing.

CS The Heisenbug

CS Some Notable Bugs Even commercial systems may have serious bugs 1960s: Built-in function in Fortran compiler (e 0 = 0) 1970s: The microfilm plotter with the missing byte (1:1023) 1980s: Japanese microcode for Honeywell DPS virtual memory 1990s: The Sun page fault that IBM paid to fix 2000s: The preload system with the memory leak Good people work around problems. The best people track them down and fix them!

CS Validation and Verification Validation: Are we building the right product? Verification: Are we building the product right? In practice, it is sometimes difficult to distinguish between the two. That's not a bug. That's a feature!

CS Reliability: Adapting Small Teams to Large Projects Small teams and small projects have many advantages: Small group communication cuts need for intermediate documentation, yet reduces misunderstanding. Small projects are easier to test and make reliable. Small projects have shorter development cycles, so that mistakes in requirements are less likely and less expensive to fix. When one project is completed it is easier to plan for the next.

CS Reliability: Adapting Small Teams to Large Projects Many modern software methodologies aim to apply the advantages of small teams to large projects. Often called Rapid Application Development or Agile Software Development. Works well with interactive systems, such as web systems, where the overall structure is well established and there is a prototype or operational system.

CS Developing Large Systems: Incremental Development Concept Divide a large project into units of work, typically the work that can be done by a team of 5-10 people in four weeks. The team carries out the complete development cycle up to having a releasable product. If the work cannot be completed in the allowed time, reduce the scope, not the quality. Because the team is small, they can reply on face to face communication and need little intermediate documentation. Often combined with pair design and pair programming, and with incremental testing.

CS Reliability: Incremental Development Challenges: Requires strong overall leadership to ensure that the individual units fit within the overall system goals and architecture. Requires systematic integration testing.

CS An Old Question: Safety Critical Software A software system fails and several lives are lost. An inquiry discovers that the test plan did not consider the case that caused the failure. Who is responsible? (a) The testers for not noticing the missing cases? (b) The test planners for not writing the complete test plan? (c) The managers for not having checked the test plan? (d) The client for not having done a thorough acceptance test?

CS Software Developers and Testers: Responsibilities Carrying out assigned tasks thoroughly and in a professional manner Being committed to the entire project -- not just tasks that have been assigned Resisting pressures to cut corners on vital tasks Alerting colleagues and management to potential problems early

CS Computing Management Responsibility Organization culture that expects quality Appointment of suitably qualified people to vital tasks (e.g., testing safety-critical software) Establishing and overseeing the software development process Providing time and incentives that encourage quality work Working closely with the client Accepting responsibility for work of team

CS Client Responsibility Organization culture that expects quality Appointment of suitably qualified people to vital tasks (e.g., technical team that will build a critical system) Reviewing requirements and design carefully Establishing and overseeing the acceptance process Providing time and incentives that encourage quality work Working closely with the software team Accepting responsibility for the resulting product