CS 5150 Software Engineering Lecture 21 Reliability 2.

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

Verification and Validation
Software Engineering-II Sir zubair sajid. What’s the difference? Verification – Are you building the product right? – Software must conform to its specification.
Figures – Chapter 24.
CS CS 5150 Software Engineering Lecture 21 Reliability 2.
CS CS 5150 Software Engineering Lecture 22 Reliability 2.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
1 / 28 CS 425/625 Software Engineering Verification and Validation Based on Chapter 19 of the textbook [SE-6] Ian Sommerville, Software Engineering, 6.
Verification and Validation
1 Advanced Material The following slides contain advanced material and are optional.
CS 501: Software Engineering Fall 2000 Lecture 22 Dependable Systems II Validation and Verification.
Verification and Validation CIS 376 Bruce R. Maxim UM-Dearborn.
Verification and Validation
Examining the Code [Reading assignment: Chapter 6, pp ]
1CMSC 345, Version 4/04 Verification and Validation Reference: Software Engineering, Ian Sommerville, 6th edition, Chapter 19.
Chapter 24 - Quality Management Lecture 1 1Chapter 24 Quality management.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
CSCI 5801: Software Engineering
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler
Project Quality Management
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
Software Engineering Prof. Dr. Bertrand Meyer March 2007 – June 2007 Chair of Software Engineering Static program checking and verification Slides: Based.
Dr. Tom WayCSC Code Reviews & Inspections CSC 4700 Software Engineering.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 22 Slide 1 Verification and Validation Slightly adapted by Anders Børjesson.
CSCE 548 Code Review. CSCE Farkas2 Reading This lecture: – McGraw: Chapter 4 – Recommended: Best Practices for Peer Code Review,
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
CS CS 5150 Software Engineering Lecture 20 Reliability 2.
DEBUGGING. BUG A software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
Introduction to Problem Solving. Steps in Programming A Very Simplified Picture –Problem Definition & Analysis – High Level Strategy for a solution –Arriving.
Verification and Validation
Reasoning about programs March CSE 403, Winter 2011, Brun.
Chapter 12: Software Inspection Omar Meqdadi SE 3860 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 22 Reliability II.
CS CS 5150 Software Engineering Lecture 20 Reliability 2.
Software Engineering, 8th edition Chapter 22 1 Courtesy: ©Ian Somerville 2006 April 27 th, 2009 Lecture # 19 Verification and Validation.
Verification and Validation Assuring that a software system meets a user's needs.
Software Engineering 4, Julian Richardson, 30 April Static Analysis Software Engineering HX3 Julian Richardson
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
13 Aug 2013 Program Verification. Proofs about Programs Why make you study logic? Why make you do proofs? Because we want to prove properties of programs.
CS 360 Lecture 16.  For a software system to be reliable:  Each stage of development must be done well, with incremental verification and testing. 
Winter 2007SEG2101 Chapter 121 Chapter 12 Verification and Validation.
CS 5150 Software Engineering Lecture 22 Reliability 3.
References & User group Reference: Software Testing and Analysis Mauro Pezze Software Engineering Ian Sommerville Eight Edition (2007) User group:
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
CSC 480 Software Engineering
Verification and Validation
Chapter 9, Testing.
Chapter 8 – Software Testing
Testing and Debugging.
Verification and Testing
Verification & Validation
Verification and Validation
Verification and Validation
Verification and Validation
Software testing strategies 2
Verification & Validation
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
CSE 1020:Software Development
Presentation transcript:

CS 5150 Software Engineering Lecture 21 Reliability 2

CS Administrivia Presentation Feedback Generally a big improvement Transitions Demos Code Jargon Conclusion Quiz 3 Design patterns Security/privacy Reliability

CS Final Milestone Presentation Demo Report Cumulative

CS SE in the News

CS Reliability Analysis - Consequences

CS Iron Law of Software Reliability For most non-trivial applications, 100% reliability is effectively impossible

CS Verification and Validation Does the software do what it is intended to do? Validation Does the design match the intended behavior? Verification Does the implementation match the design? Informal and formal

CS Verification Does the implementation exhibit any particular bad behaviors? Can we guarantee that the implementation does what it is designed to do? “How did software get so good without proof?” Dijkstra

CS Static and Dynamic Static Examination of source code without actually running it Can be manual or tool-assisted Dynamic Testing Debugging Profiling

CS Informal Static Verification Code reviews Can be light or heavy Colleague reads over patch before committing to repository Meetings with multiple participants Benefits: “given enough eyeballs, all bugs are shallow” Opportunity to share knowledge Opportunity to do housekeeping Exposes inconsistent assumptions between developers

CS Getting the Most from Code Reviews Senior team members must show leadership heavy-weight reviews require preparation The tone must remain constructive Code reviews are not mini personnel reviews

CS Review Checklists Data faults: Initialization, constants, array bounds, character strings Control faults: Conditions, loop termination, compound statements, case statements Input/output faults: All inputs used; all outputs assigned a value Interface faults: Parameter numbers, types, and order; structures and shared memory Storage management faults: Modification of links, allocation and de-allocation of memory Exceptions: Possible errors, error handlers

CS Working in Pairs Idea: achieve benefits of continuous review by doing all work in pairs Hard for management to swallow because it looks like doubling the personnel cost of development Some evidence that it works well Generally highest value with a senior/junior pair Junior person should ‘drive’

CS Static Analysis Tools Scan source code for possible problems Compiler warnings on steroids Superficial syntactic warnings Deeper analysis based on symbolic execution void foo( int *p ) { printf( “%i”, *p ); }

CS Scaling of Static Analysis In general, static analyses cannot be both complete and sound Complete - no false positives Sound - no false negatives Static analysis tools have become more common in the last 10 years Careful engineering trade-offs between false positives and false negatives

CS Heavy-Weight Formal Verification Hoare logic Pre-conditions/post-conditions Invariants Model checking Assertions

CS Testing Testing Testing Testing comes in many flavors User testing Unit testing Integrations testing Performance testing Stress testing Regression testing Acceptance testing Manual/automated testing Close/open-box (black/white-box) testing

CS Fundamental Facts About Testing Testing is indispensable for software verification, but can never prove that non-trivial software is defect-free Each test proves that the system works in one particular circumstance Most non-trivial software has infinitely many possible execution contexts (i.e., input, environment, etc) Every project should have a verification plan that includes testing strategies

CS Unit Testing Each unit test should verify that a single ‘unit’ of software works in isolation Can be challenging to write unit tests for code buried deep in a project Overlap with type systems Basic sanity checks Should run automatically e.g. overnight

CS Regression Testing Every time you find a bug in your project, make a test case that reproduces the bug The test case should be committed to your repository no later than the bug fix itself A good set of regression tests provide a ‘ratcheting’ mechanism Helps prevent the recurrence of bugs

CS Determinism => Reproducibility It is very hard to fix bugs that cannot be reproduced reliably Do not introduce unnecessary non- determinism into your programs Random numbers Address-based data structures Multithreading