A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
|
|
|
- Job Thornton
- 9 years ago
- Views:
Transcription
1 PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris France Automatic Program Verification by Abstract Interpretation Result: Can produce zero or very few false alarms while checking non-trivial properties (absence of Run-Time Error); Does scale up. How? We specialize the abstract interpreter for a family of programs (which correctness proofs would be similar). The abstract domains are generic invariants automatically instantiated by the analyzer (to make these proofs). PLDI 03 - A Static Analyzer for Large Safety-Critical Software 1/21 Which Programs are Considered? Embedded avionic programs; Considered Programs and Semantics Automatically generated from a proprietary graphical system control language (à lasimulink); Synchronous real-time critical programs: declare volatile input, state, and output variables; initialize state variables; loop forever read volatile input variables, compute output and state variables, write to volatile output variables; wait for next clock tick end loop PLDI 03 - A Static Analyzer for Large Safety-Critical Software 2/21
2 Main Characteristics of the Programs Difficulties: Many global variables and arrays (> ); A huge loop (> lines after simplification); Each iteration depends on the state of the previous iterations (state variables); Floating-point computations (80% of the code implements non-linear control with feed-back); Everything is interdependent (live variables analysis, slicing ineffective); Abstraction by elimination of any variable is too imprecise. Simplicities: All data is statically allocated; Pointers are restricted to call-by-reference, no pointer arithmetics; Structured, recursion-free control flow. Semantics The standard ISO C99 semantics: arrays should not be accessed out of their bounds,... restricted by: The machine semantics: integer arithmetics is 2 s complement, floating point arithmetics is IEEE , int and float are 32-bit, short is 16-bit,... restricted by: The user s semantics: integer arithmetics should not wrap-around, some IEEE exceptions (invalid operation, overflow, division by zero) should not occur,... PLDI 03 - A Static Analyzer for Large Safety-Critical Software 3/21 PLDI 03 - A Static Analyzer for Large Safety-Critical Software 4/21 Goal of the Program Static Analyzer Information about the Program Execution Automatically Inferred by the Analyzer Correctness verification. Nothing can go wrong at execution: no integer overflow or division by zero, no exception, NaN, or ± generated by IEEE floating-point arithmetics, no out of bounds array access, no erroneous type conversion. The execution semantics on the machine never reaches an indetermination or an error case in the standard / machine / user semantics. The analyzer effectively computes a finitely represented, compact overapproximation of the immense reachable state space. The information is valid for any execution interacting with any possible environment (through undetermined volatiles). It is inferred automatically by abstract interpretation of the collecting semantics and convergence acceleration (, ). PLDI 03 - A Static Analyzer for Large Safety-Critical Software 5/21 PLDI 03 - A Static Analyzer for Large Safety-Critical Software 6/21
3 Iterations to Over-Approximate the Reachable States while (...) {... } memorized abstract invariants Abstract Domains U U U propagated abstract invariants Program Iterative invariant computation PLDI 03 - A Static Analyzer for Large Safety-Critical Software 7/21 Choice of the Abstract Domains Interval Abstract Domain Abstract Domain: Computer representation of a class of program properties; Transformers for propagation through expressions and commands; Primitives for convergence acceleration:,. Composition of Abstract Domains: Essentially approximate reduced product (conjunction with simplification). Design of Abstract Domains: Know-how; Experimentation. Classical domain [Cousot Cousot 76]; Minimum information needed to check the correctness conditions; Not precise enough to express a useful inductive invariant (thousands of false alarms); = must be refined by: combining with existing domains through reduced product, designing new domains, until all false alarms are eliminated. PLDI 03 - A Static Analyzer for Large Safety-Critical Software 8/21 PLDI 03 - A Static Analyzer for Large Safety-Critical Software 9/21
4 Clock Abstract Domain Code Sample: Octagon Abstract Domain Code Sample: R = 0; while (1) { if (I) { R = R+1; } else { R = 0; } T = (R>=n); wait for clock (); } Output T is true iff the volatile input I has been true for the last n clock ticks. The clock ticks every s seconds for at most h hours, thus R is bounded. To prove that R cannot overflow, we must prove that R cannot exceed the elapsed clock ticks (impossible using only intervals). while (1) { R = A-Z; L = A; if (R>V) { L = Z+V; } } At, the interval domain gives L max(max A, (maxz)+(max V)). In fact, we have L A. To discover this, we must know at that R = A-Z and R > V. Solution: we need a numerical relational abstract domain. Solution: We add a phantom variable clock in the concrete user semantics to track elapsed clock ticks. For each variable, weabstract three intervals:, +clock, and -clock. If +clock or -clock is bounded, so is. The octagon abstract domain [Miné 03] is a good cost / precision trade-off. Invariants of the form ± x± y c, with O(N 2 ) memory and O(N 3 ) time cost. Here, R = A-Z cannot be discovered, but we get L-Z max R which is sufficient. We use many octagons on small packs of variables instead of a large one using all variables to cut costs. PLDI 03 - A Static Analyzer for Large Safety-Critical Software 10/21 PLDI 03 - A Static Analyzer for Large Safety-Critical Software 11/21 Ellipsoid Abstract Domain Decision Tree Abstract Domain 2 d Order Filter Sample: a b z -1 z -1 t Unit delay Unit delay Switch Switch x(n) Switch j B i Computes n = { αn 1 + β n 2 + n I n The concrete computation is bounded, which must be proved in the abstract. There is no stable interval or octagon. The simplest stable surface is an ellipsoid. Synchronous reactive programs encode control flow in boolean variables. Code Sample: bool B1,B2,B3; float N,,; N = f(b1); if (B1) { = g(n); } else { = h(n); } Decision Tree: B 2 B 1 B 3 Numerical abstract domains BDD F() U F() unstable interval F() U F() stable ellipsoid There are too many booleans (4 000) tobuild one big tree so we: limit the BDD height to 3 (analysis parameter); use a syntactic criterion to select variables in the BDD and the numerical parts. PLDI 03 - A Static Analyzer for Large Safety-Critical Software 12/21 PLDI 03 - A Static Analyzer for Large Safety-Critical Software 13/21
5 Relational Domains on Floating-Point Problems: Relational numerical abstract domains rely on a perfect mathematical concrete semantics (in R or Q). Perfect arithmetics in R or Q is costly. IEEE floating-point concrete semantics incurs rounding. Iteration Strategies for Fixpoint Approximation Solution: Build an abstract mathematical semantics in R that over-approximates the concrete floating-point semantics, including rounding. Implement the abstract domains on R using floating-point numbers rounded in a sound way. PLDI 03 - A Static Analyzer for Large Safety-Critical Software 14/21 Iteration Refinement: Loop Unrolling Iteration Refinement: Trace Partitioning Principle: Principle: Semantically equivalent to: while (B) { C } = if (B) { C }; while (B) { C } More precise in the abstract: less concrete execution paths are merged in the abstract. Semantically equivalent to: if (B) { C1 } else { C2 }; C3 if (B) { C1; C3 } else { C2; C3 }; More precise in the abstract: concrete execution paths are merged later. Application: Isolate the initialization phase in a loop (e.g. first iteration). Application: if (B) { =0; =1; } else { =1; =0; } R = 1 / (-); / cannot result in a division by zero PLDI 03 - A Static Analyzer for Large Safety-Critical Software 15/21 PLDI 03 - A Static Analyzer for Large Safety-Critical Software 16/21
6 Convergence Accelerator: Widening Principle: Brute-force widening: Widening with thresholds: Thresholds Examples: 1., 10., 100., 1000., etc. for floating-point variables; maximal values of data types; syntactic program constants, etc. PLDI 03 - A Static Analyzer for Large Safety-Critical Software 17/21 Fixpoint Stabilization for Floating-point Problem: Mathematically, we look for an abstract invariant inv such that F(inv) inv. Unfortunately, abstract computation uses floating-point and incurs rounding: maybe F ε (inv) inv! Solution: attractiveness rounding error Inv F ε F ε Inv Widen inv to inv ε with the hope to jump into a stable zone of F ε. Works if F has some attractiveness property that fights against rounding errors (otherwise iteration goes on). ε is an analysis parameter. PLDI 03 - A Static Analyzer for Large Safety-Critical Software 18/21 Results Example of Analysis Session PLDI 03 - A Static Analyzer for Large Safety-Critical Software 19/21
7 Results Conclusion Efficient: tested on two lines programs, 120 min and 37 min computation time on a 2.8GHz PC, 200 Mb memory usage. Precise: 11 and 3 lines containing a warning. Exhaustive: full control and data coverage (unlike checking, testing, simulation). Success story: we succeed where a commercial abstract interpretation-based static analysis tool failed (because of prohibitive time and memory consumption and very large number of false alarms); Usable in practice for verification: directly applicable to other similar programs by changing some analyzer parameters, approach generalizable to other program families by including new abstract domains and specializing the iteration strategy. (Work in progress: power-on self-test for a family of embedded systems.) PLDI 03 - A Static Analyzer for Large Safety-Critical Software 20/21 PLDI 03 - A Static Analyzer for Large Safety-Critical Software 21/21
Abstract Interpretation-based Static Analysis Tools:
Abstract Interpretation-based Static Analysis Tools: Proving the Absence of Runtime Errors and Safe Upper Bounds on the Worst-Case Execution Time and Safe Upper Bounds on the Stack Usage Christian Ferdinand
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
Static analysis of numerical programs
Sylvie Putot with Eric Goubault, Franck Védrine and Karim Tekkal (Digiteo) Laboratory for the Modelling and Analysis of Interacting Systems, CEA LIST RAIM 09: 3es Rencontres Arithmétique de l Informatique
Astrée: Building a Static Analyzer for Real-Life Programs
Astrée: Building a Static Analyzer for Real-Life Programs Antoine Miné CNRS & École normale supérieure Paris, France Workshop on Learning From experience June 6th, 2010 LFX June 6th, 2010 Astrée: Building
IKOS: A Framework for Static Analysis based on Abstract Interpretation (Tool Paper)
IKOS: A Framework for Static Analysis based on Abstract Interpretation (Tool Paper) Guillaume Brat, Jorge A. Navas, Nija Shi, and Arnaud Venet NASA Ames Research Center, Moffett Field, CA 94035 Abstract.
Formal verification of contracts for synchronous software components using NuSMV
Formal verification of contracts for synchronous software components using NuSMV Tobias Polzer Lehrstuhl für Informatik 8 Bachelorarbeit 13.05.2014 1 / 19 Problem description and goals Problem description
Static Program Transformations for Efficient Software Model Checking
Static Program Transformations for Efficient Software Model Checking Shobha Vasudevan Jacob Abraham The University of Texas at Austin Dependable Systems Large and complex systems Software faults are major
Section IV.1: Recursive Algorithms and Recursion Trees
Section IV.1: Recursive Algorithms and Recursion Trees Definition IV.1.1: A recursive algorithm is an algorithm that solves a problem by (1) reducing it to an instance of the same problem with smaller
How To Develop A Static Analysis System For Large Programs
Towards the Industrial Scale Development of Custom Static Analyzers John Anton, Eric Bush, Allen Goldberg, Klaus Havelund, Doug Smith, Arnaud Venet Kestrel Technology LLC 4984 El Camino Real #230 Los Altos,
Introduction to Static Analysis for Assurance
Introduction to Static Analysis for Assurance John Rushby Computer Science Laboratory SRI International Menlo Park CA USA John Rushby Static Analysis for Assurance: 1 Overview What is static analysis?
Numerical Matrix Analysis
Numerical Matrix Analysis Lecture Notes #10 Conditioning and / Peter Blomgren, [email protected] Department of Mathematics and Statistics Dynamical Systems Group Computational Sciences Research
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland
Software Testing & Analysis (F22ST3) Static Analysis Techniques Andrew Ireland School of Mathematical and Computer Science Heriot-Watt University Edinburgh Software Testing & Analysis (F22ST3): Static
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
µz An Efficient Engine for Fixed points with Constraints
µz An Efficient Engine for Fixed points with Constraints Kryštof Hoder, Nikolaj Bjørner, and Leonardo de Moura Manchester University and Microsoft Research Abstract. The µz tool is a scalable, efficient
ECE 0142 Computer Organization. Lecture 3 Floating Point Representations
ECE 0142 Computer Organization Lecture 3 Floating Point Representations 1 Floating-point arithmetic We often incur floating-point programming. Floating point greatly simplifies working with large (e.g.,
Rigorous Software Development CSCI-GA 3033-009
Rigorous Software Development CSCI-GA 3033-009 Instructor: Thomas Wies Spring 2013 Lecture 11 Semantics of Programming Languages Denotational Semantics Meaning of a program is defined as the mathematical
(Refer Slide Time: 00:01:16 min)
Digital Computer Organization Prof. P. K. Biswas Department of Electronic & Electrical Communication Engineering Indian Institute of Technology, Kharagpur Lecture No. # 04 CPU Design: Tirning & Control
Introduction to Python
Caltech/LEAD Summer 2012 Computer Science Lecture 2: July 10, 2012 Introduction to Python The Python shell Outline Python as a calculator Arithmetic expressions Operator precedence Variables and assignment
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
A Tool for Generating Partition Schedules of Multiprocessor Systems
A Tool for Generating Partition Schedules of Multiprocessor Systems Hans-Joachim Goltz and Norbert Pieth Fraunhofer FIRST, Berlin, Germany {hans-joachim.goltz,nobert.pieth}@first.fraunhofer.de Abstract.
CHAPTER 3 Boolean Algebra and Digital Logic
CHAPTER 3 Boolean Algebra and Digital Logic 3.1 Introduction 121 3.2 Boolean Algebra 122 3.2.1 Boolean Expressions 123 3.2.2 Boolean Identities 124 3.2.3 Simplification of Boolean Expressions 126 3.2.4
Static Taint-Analysis on Binary Executables
Static Taint-Analysis on Binary Executables Sanjay Rawat, Laurent Mounier, Marie-Laure Potet VERIMAG University of Grenoble October 2011 Static Taint-Analysis on Binary Executables 1/29 Outline 1 Introduction
Software Verification: Infinite-State Model Checking and Static Program
Software Verification: Infinite-State Model Checking and Static Program Analysis Dagstuhl Seminar 06081 February 19 24, 2006 Parosh Abdulla 1, Ahmed Bouajjani 2, and Markus Müller-Olm 3 1 Uppsala Universitet,
Software Testing. Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program.
Software Testing Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program. Testing can only reveal the presence of errors and not the
Enforcing Security Policies. Rahul Gera
Enforcing Security Policies Rahul Gera Brief overview Security policies and Execution Monitoring. Policies that can be enforced using EM. An automata based formalism for specifying those security policies.
How To Test Automatically
Automated Model-Based Testing of Embedded Real-Time Systems Jan Peleska [email protected] University of Bremen Bieleschweig Workshop 7 2006-05-05 Outline Technologie-Zentrum Informatik Objectives Basic concepts
Varieties of Static Analyzers: A Comparison with ASTRÉE
Varieties of Static Analyzers: A Comparison with ASTRÉE Patrick COUSOT 1, Radhia COUSOT 2, Jérôme FERET 1, Antoine MINÉ 1, Laurent MAUBORGNE 1, David MONNIAUX 3, Xavier RIVAL 1 Abstract We discuss the
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER
ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER Pierre A. von Kaenel Mathematics and Computer Science Department Skidmore College Saratoga Springs, NY 12866 (518) 580-5292 [email protected] ABSTRACT This paper
Introduction to Programming (in C++) Loops. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC
Introduction to Programming (in C++) Loops Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC Example Assume the following specification: Input: read a number N > 0 Output:
Example. Introduction to Programming (in C++) Loops. The while statement. Write the numbers 1 N. Assume the following specification:
Example Introduction to Programming (in C++) Loops Assume the following specification: Input: read a number N > 0 Output: write the sequence 1 2 3 N (one number per line) Jordi Cortadella, Ricard Gavaldà,
Instruction Set Design
Instruction Set Design Instruction Set Architecture: to what purpose? ISA provides the level of abstraction between the software and the hardware One of the most important abstraction in CS It s narrow,
Static analysis: from theory to practice
Static analysis: from theory to practice David Monniaux CNRS / VERIMAG A joint laboratory of CNRS, Université Joseph Fourier (Grenoble) and Grenoble-INP. 19 juin 2009 David Monniaux (VERIMAG) Static analysis:
VHDL Test Bench Tutorial
University of Pennsylvania Department of Electrical and Systems Engineering ESE171 - Digital Design Laboratory VHDL Test Bench Tutorial Purpose The goal of this tutorial is to demonstrate how to automate
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
Scheduling Home Health Care with Separating Benders Cuts in Decision Diagrams
Scheduling Home Health Care with Separating Benders Cuts in Decision Diagrams André Ciré University of Toronto John Hooker Carnegie Mellon University INFORMS 2014 Home Health Care Home health care delivery
New Hash Function Construction for Textual and Geometric Data Retrieval
Latest Trends on Computers, Vol., pp.483-489, ISBN 978-96-474-3-4, ISSN 79-45, CSCC conference, Corfu, Greece, New Hash Function Construction for Textual and Geometric Data Retrieval Václav Skala, Jan
Specification and Analysis of Contracts Lecture 1 Introduction
Specification and Analysis of Contracts Lecture 1 Introduction Gerardo Schneider [email protected] http://folk.uio.no/gerardo/ Department of Informatics, University of Oslo SEFM School, Oct. 27 - Nov.
Mathematical Induction
Mathematical Induction In logic, we often want to prove that every member of an infinite set has some feature. E.g., we would like to show: N 1 : is a number 1 : has the feature Φ ( x)(n 1 x! 1 x) How
Chair of Software Engineering. Software Verification. Assertion Inference. Carlo A. Furia
Chair of Software Engineering Software Verification Assertion Inference Carlo A. Furia Proving Programs Automatically The Program Verification problem: Given: a program P and a specification S = [Pre,
Automatic Test Data Synthesis using UML Sequence Diagrams
Vol. 09, No. 2, March April 2010 Automatic Test Data Synthesis using UML Sequence Diagrams Ashalatha Nayak and Debasis Samanta School of Information Technology Indian Institute of Technology, Kharagpur
Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors
Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors Klaus Wissing PolySpace Technologies GmbH Argelsrieder Feld 22 82234 Wessling-Oberpfaffenhofen
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
Automated Program Behavior Analysis
Automated Program Behavior Analysis Stacy Prowell [email protected] March 2005 SQRL / SEI Motivation: Semantics Development: Most engineering designs are subjected to extensive analysis; software is
6.080/6.089 GITCS Feb 12, 2008. Lecture 3
6.8/6.89 GITCS Feb 2, 28 Lecturer: Scott Aaronson Lecture 3 Scribe: Adam Rogal Administrivia. Scribe notes The purpose of scribe notes is to transcribe our lectures. Although I have formal notes of my
Software Testing. Quality & Testing. Software Testing
Software Testing Software Testing Error: mistake made by the programmer/developer Fault: a incorrect piece of code/document (i.e., bug) Failure: result of a fault Goal of software testing: Cause failures
Adaptive Stable Additive Methods for Linear Algebraic Calculations
Adaptive Stable Additive Methods for Linear Algebraic Calculations József Smidla, Péter Tar, István Maros University of Pannonia Veszprém, Hungary 4 th of July 204. / 2 József Smidla, Péter Tar, István
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
FROM SAFETY TO SECURITY SOFTWARE ASSESSMENTS AND GUARANTEES FLORENT KIRCHNER (LIST)
FROM SAFETY TO SECURITY SOFTWARE ASSESSMENTS AND GUARANTEES FLORENT KIRCHNER (LIST) M loc 12 ONBOARD SOFTWARE SIZE 10 Volt (2011) F-35 (2012) 8 6 787 (2010) F-35 (2010) 4 2 F-22 (2005) 0 WHY DO WE TRUST
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 28, 2010 G. Lipari (Scuola Superiore Sant Anna) Introduction
Computers. Hardware. The Central Processing Unit (CPU) CMPT 125: Lecture 1: Understanding the Computer
Computers CMPT 125: Lecture 1: Understanding the Computer Tamara Smyth, [email protected] School of Computing Science, Simon Fraser University January 3, 2009 A computer performs 2 basic functions: 1.
Why? A central concept in Computer Science. Algorithms are ubiquitous.
Analysis of Algorithms: A Brief Introduction Why? A central concept in Computer Science. Algorithms are ubiquitous. Using the Internet (sending email, transferring files, use of search engines, online
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur
Module 10 Coding and Testing Lesson 23 Code Review Specific Instructional Objectives At the end of this lesson the student would be able to: Identify the necessity of coding standards. Differentiate between
Algorithms are the threads that tie together most of the subfields of computer science.
Algorithms Algorithms 1 Algorithms are the threads that tie together most of the subfields of computer science. Something magically beautiful happens when a sequence of commands and decisions is able to
A Brief Introduction to Static Analysis
A Brief Introduction to Static Analysis Sam Blackshear March 13, 2012 Outline A theoretical problem and how to ignore it An example static analysis What is static analysis used for? Commercial successes
Lecture Notes on Linear Search
Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 29, 2013 1 Introduction One of the fundamental and recurring problems in computer science is
Chapter 11 Monte Carlo Simulation
Chapter 11 Monte Carlo Simulation 11.1 Introduction The basic idea of simulation is to build an experimental device, or simulator, that will act like (simulate) the system of interest in certain important
Towards practical reactive security audit using extended static checkers 1
Towards practical reactive security audit using extended static checkers 1 Julien Vanegue 1 Shuvendu K. Lahiri 2 1 Bloomberg LP, New York 2 Microsoft Research, Redmond May 20, 2013 1 The work was conducted
APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION
1 APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION Validation: Are we building the right product? Does program meet expectations of user? Verification: Are we building the product right?
Comprehensive Static Analysis Using Polyspace Products. A Solution to Today s Embedded Software Verification Challenges WHITE PAPER
Comprehensive Static Analysis Using Polyspace Products A Solution to Today s Embedded Software Verification Challenges WHITE PAPER Introduction Verification of embedded software is a difficult task, made
A New Paradigm for Synchronous State Machine Design in Verilog
A New Paradigm for Synchronous State Machine Design in Verilog Randy Nuss Copyright 1999 Idea Consulting Introduction Synchronous State Machines are one of the most common building blocks in modern digital
Static Analysis and Validation of Composite Behaviors in Composable Behavior Technology
Static Analysis and Validation of Composite Behaviors in Composable Behavior Technology Jackie Zheqing Zhang Bill Hopkinson, Ph.D. 12479 Research Parkway Orlando, FL 32826-3248 407-207-0976 [email protected],
Divide: Paper & Pencil. Computer Architecture ALU Design : Division and Floating Point. Divide algorithm. DIVIDE HARDWARE Version 1
Divide: Paper & Pencil Computer Architecture ALU Design : Division and Floating Point 1001 Quotient Divisor 1000 1001010 Dividend 1000 10 101 1010 1000 10 (or Modulo result) See how big a number can be
Simulink Modeling Guidelines for High-Integrity Systems
Simulink Modeling Guidelines for High-Integrity Systems R2015a How to Contact MathWorks Latest news: www.mathworks.com Sales and services: www.mathworks.com/sales_and_services User community: www.mathworks.com/matlabcentral
Memory Allocation Technique for Segregated Free List Based on Genetic Algorithm
Journal of Al-Nahrain University Vol.15 (2), June, 2012, pp.161-168 Science Memory Allocation Technique for Segregated Free List Based on Genetic Algorithm Manal F. Younis Computer Department, College
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
Testing static analyzers with randomly generated programs
Testing static analyzers with randomly generated programs Pascal Cuoq 1, Benjamin Monate 1, Anne Pacalet 2, Virgile Prevosto 1, John Regehr 3, Boris Yakobowski 1, and Xuejun Yang 3 1 CEA, LIST 2 INRIA
Software testing. Objectives
Software testing cmsc435-1 Objectives To discuss the distinctions between validation testing and defect testing To describe the principles of system and component testing To describe strategies for generating
Testing LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification
Introduction Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification Advanced Topics in Software Engineering 1 Concurrent Programs Characterized by
1 Description of The Simpletron
Simulating The Simpletron Computer 50 points 1 Description of The Simpletron In this assignment you will write a program to simulate a fictional computer that we will call the Simpletron. As its name implies
Arithmetic Coding: Introduction
Data Compression Arithmetic coding Arithmetic Coding: Introduction Allows using fractional parts of bits!! Used in PPM, JPEG/MPEG (as option), Bzip More time costly than Huffman, but integer implementation
AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS
TKK Reports in Information and Computer Science Espoo 2009 TKK-ICS-R26 AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS Kari Kähkönen ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF
PowerPC Microprocessor Clock Modes
nc. Freescale Semiconductor AN1269 (Freescale Order Number) 1/96 Application Note PowerPC Microprocessor Clock Modes The PowerPC microprocessors offer customers numerous clocking options. An internal phase-lock
Handout #1: Mathematical Reasoning
Math 101 Rumbos Spring 2010 1 Handout #1: Mathematical Reasoning 1 Propositional Logic A proposition is a mathematical statement that it is either true or false; that is, a statement whose certainty or
First Steps with CoDeSys. Last update: 05.03.2004
Last update: 05.03.2004 CONTENT 1 STARTING CODESYS 3 2 WRITING THE FIRST PROGRAM 3 3 A VISUALIZATION FOR THIS 7 4 START THE TARGET SYSTEM 9 5 SETTINGS FOR ESTABLISHING THE CONNECTION 9 6 START THE PROJECT
Chapter 8 Software Testing
Chapter 8 Software Testing Summary 1 Topics covered Development testing Test-driven development Release testing User testing 2 Program testing Testing is intended to show that a program does what it is
1. Prove that the empty set is a subset of every set.
1. Prove that the empty set is a subset of every set. Basic Topology Written by Men-Gen Tsai email: [email protected] Proof: For any element x of the empty set, x is also an element of every set since
Chapter 2 Basic Structure of Computers. Jin-Fu Li Department of Electrical Engineering National Central University Jungli, Taiwan
Chapter 2 Basic Structure of Computers Jin-Fu Li Department of Electrical Engineering National Central University Jungli, Taiwan Outline Functional Units Basic Operational Concepts Bus Structures Software
Standard for Software Component Testing
Standard for Software Component Testing Working Draft 3.4 Date: 27 April 2001 produced by the British Computer Society Specialist Interest Group in Software Testing (BCS SIGIST) Copyright Notice This document
