Inspection of Safety-Critical Software Using Program- Function Tables Jeffrey Smith, Richard Bruno, Vince Fumo.

Slides:



Advertisements
Similar presentations
Verification and Validation
Advertisements

MATH 224 – Discrete Mathematics
COMP 121 Week 7: Object-Oriented Design and Efficiency of Algorithms.
Describing Process Specifications and Structured Decisions Systems Analysis and Design, 7e Kendall & Kendall 9 © 2008 Pearson Prentice Hall.
HST 952 Computing for Biomedical Scientists Lecture 10.
(c) 2007 Mauro Pezzè & Michal Young Ch 7, slide 1 Symbolic Execution and Proof of Properties.
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor Formal Methods in Software Engineering1.
Software Testing and Quality Assurance
1 Static Testing: defect prevention SIM objectives Able to list various type of structured group examinations (manual checking) Able to statically.
Detailed Design Kenneth M. Anderson Lecture 21
1 Introduction to Software Engineering Lecture 42 – Communication Skills.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Program Design and Development
© Love Ekenberg The Algorithm Concept, Big O Notation, and Program Verification Love Ekenberg.
The Efficiency of Algorithms
Presented by: Hatem Halaoui
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
The Efficiency of Algorithms
CSC 402, Fall Requirements Analysis for Special Properties Systems Engineering (def?) –why? increasing complexity –ICBM’s (then TMI, Therac, Challenger...)
Copyright © Cengage Learning. All rights reserved. CHAPTER 11 ANALYSIS OF ALGORITHM EFFICIENCY ANALYSIS OF ALGORITHM EFFICIENCY.
1 Software Testing and Quality Assurance Lecture 1 Software Verification & Validation.
ECE122 L17: Method Development and Testing April 5, 2007 ECE 122 Engineering Problem Solving with Java Lecture 17 Method Development and Testing.
1 Software Testing and Quality Assurance Lecture 5 - Software Testing Techniques.
 QUALITY ASSURANCE:  QA is defined as a procedure or set of procedures intended to ensure that a product or service under development (before work is.
Stoimen Stoimenov QA Engineer QA Engineer SitefinityLeads,SitefinityTeam6 Telerik QA Academy Telerik QA Academy.
C++ fundamentals.
Verification and Validation
1CMSC 345, Version 4/04 Verification and Validation Reference: Software Engineering, Ian Sommerville, 6th edition, Chapter 19.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Language Evaluation Criteria
Evaluation of Safety Critical Software -- David L. Parnas, -- A. John van Schouwen, -- Shu Po Kwan -- June 1990 Presented By Zhuojing Li.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
Data Structures & AlgorithmsIT 0501 Algorithm Analysis I.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Inspection of Safety-Critical Software Case study: Darlington nuclear power plant shutdown system Prepared by: Ke Tang.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Chapter 19 Verification and Validation.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Presenting and Analysing your Data CSCI 6620 Spring 2014 Thesis Projects: Chapter 10 CSCI 6620 Spring 2014 Thesis Projects: Chapter 10.
More on Correctness. Prime Factorization Problem: Write a program that computes all the prime factors of a given number Solution (Idea): Factors are less.
An Axiomatic Basis for Computer Programming Robert Stewart.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Higher Computing Science 2016 Prelim Revision. Topics to revise Computational Constructs parameter passing (value and reference, formal and actual) sub-programs/routines,
1 CEN 4020 Software Engineering PPT4: Requirement analysis.
Chapter 15 Running Time Analysis. Topics Orders of Magnitude and Big-Oh Notation Running Time Analysis of Algorithms –Counting Statements –Evaluating.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
SOFTWARE TESTING AND QUALITY ASSURANCE. Software Testing.
 System Requirement Specification and System Planning.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVII. Verification and Validation.
Introduction to Algorithms
What is a CAT? What is a CAT?.
Verification and Validation
Introduction to Software Engineering (2/2)
Verification and Validation
Software testing strategies 2
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Objective of This Course
Verification and Validation Unit Testing
Conditional statements
Introduction to Algorithms
Vocabulary Algorithm - A precise sequence of instructions for processes that can be executed by a computer Low level programming language: A programming.
Basic Concepts of Algorithm
Presentation transcript:

Inspection of Safety-Critical Software Using Program- Function Tables Jeffrey Smith, Richard Bruno, Vince Fumo

Question – Is there a more accurate photograph of Dr. Parnas?

D.L. Parnas circa 1970.

Outline Three Approaches Darlington Nuclear Plant Software Inspection Examples Darlington Inspection Questions

Three Approaches The authors outline three general approaches of assuring correct operation of safety-critical software: –Reliability –Rigour –Hazard Analysis

Reliability Approach To increase safety one must increase system dependability. Inspection requires estimating system reliability. To subdivisions: Reliability analysis – techniques for predicting system dependability. Redundant design – techniques for increasing dependability by providing multiple system to accomplish the same task.

Rigorous Approach Correctness can be achieved with highly formal methods. Rigorous Construction – Methods for deriving programs from precise specification. Verification – methods for showing that a program satisfies its specification.

Hazard Analysis One must identify possible unsafe conditions. The authors outline two fundamental methods: Analysis should be performed on code itself Analysis should be performed on abstractions derived from the code.

Complimentary? The common view is that designers must choose one of the approaches over the other two. The author believes the three are complementary.

Darlington Nuclear Power Plant Three independent software based shutdown systems. The system can not perform any function not required in the shutdown plant. If one system initiates shutdown, the other two systems can not interrupt the shutdown.

Difficulties in Software Inspection AECB had no confidence in its ability to detect safety-relevant flaws. AECB not software experts and had difficulty analyzing the complex software. Long-programs must be decomposed into smaller pieces to be convinced of: –Each part in the decomposition implements its assigned function. –If each part of the decomposition implements its assigned function then the entire program is correct.

Conventional approach Frequently find provisional assumptions that were not what the programmer intended. Revise initial division/functional description and try again. Continue this process iteratively until run out of time or give up.

This approach is not good enough for safety-critical software.

Functional Documentation Define requirements in terms of mathematical relations. Each document contains representation of certain relations, otherwise if is incomplete. Additional information makes the document faulty --> information not directly related should go elsewhere.

Documents System Requirements document System design document Software requirements document Software behavior specification Module interface specification Module internal design document

More functional documentation Need precise notation for relations. Conventional notation is too complex. Multi-dimensional notation is the authors choice. Author feels tables have a practical advantage.

Darlington Inspection Uses two documents: –Software requirement document contains description of actions that must be taken on a single pass through the periodic loop (the shutdown system is designed as a periodic loop). –Program function descriptions describe effects of the execution of the loop body. Goal: –Both documents describe the same functions. –Confidence they are the right functions.

Example Mathematical relations. Conventional notation.

Example Description Search an array B, to find an element whose value is that of variable x. Determines the value of j and present. j is an integer recording the index of the element of B whose value is x. present is a boolean value, indicating whether or not the value was found in B.

Example Code Consider this C++ code which solves the problem outlined on the previous slide: int j; boolean present; int B[N]; for (int k=1; k<N; k++) { if (B[k] == x) { present = true; j = k; } }

Binary Search Tree Example If x is a node in a binary tree and y is a node to the left of x then value[y] = value[x]. Our example finds the maximum value in the tree by starting at the root node and traversing the right most child until the right most child is NULL. When this node is found, its value is the maximal value.

Binary Search Tree Below is pseudocode to search for the maximum value in a binary search tree: TREE MAX(x) { while (right[x] != NULL) { do x right[x]; } return(x) }

Inspection Process Designed around the following ideas: –Inspectors need quiet time to think. –Inspection results must be scrutinized carefully. –Lengthy inspections must be done is smaller sessions (ie. multiple days) –Inspections must focus on small sections of the program at one time. –All cases must be considered. –All parts of the programs must be inspected.

AECB Inspection Teams Requirements team – produces tabular representation of the requirements. Code inspection team – produces program- function tables from the code. Comparison team – finds equivalence between requirements tables & program-function tables by showing step-by-step transformations from one to the other. Audit team – checks the work of the other three teams on a random basis.

The inspection process Requirements team comprised of nuclear safety experts not programmers. They constructed tables based on formal mathematical notation. Code inspection team was comprised of software consultants not part of the nuclear industry. They were programming experts.

The inspection process cont. The comparison team were people trained to understand program-function tables. They worked from the program-function tables and the requirements tables. This team was charges with showing a step-by- step transformation of the tables resulting in both tables showing the same information.

The inspection process cont. The audit team was comprised of software experts. When an error is found, the second team is asked to check the work again. If error is still found it is reported to the safety experts for evaluations.

Evaluation Usually the error fell into one of these categories: –Requirements tables were wrong. –Programmer added something extra in an effort to improve things. –Coding error, not effecting safety – it was left in the system! –Coding error, which did effect safety – this was corrected.

Questions?