Runtime Verification of C Programs with Inspiration from AOP Klaus Havelund Jet Propulsion Laboratory Pasadena, USA.

Slides:



Advertisements
Similar presentations
1 Events, Actions, and Compositions Somayeh Malakuti, Christoph Bockisch, Mehmet Aksit Software Engineering Group
Advertisements

Monitoring Design Pattern Contracts Jason O. Hallstrom Clemson University SAVCBS 04 Workshop at ACM SIGSOFT 2004/FSE-12 Benjamin Tyler (Presenter) Ohio.
Towards a Standard Interface for Runtime Inspection in AOP Environments OOPSLA Workshop on Tool for AOSD, Seattle, November 2002 Katharina Mehner and Awais.
Automated Evaluation of Runtime Object States Against Model-Level States for State-Based Test Execution Frank(Weifeng) Xu, Gannon University Dianxiang.
Monitoring Aspects for the Customization of Automatically Generated Code for Big-Step Models Shahram Esmaeilsabzali Bernd Fischer Joanne M. Atlee
Semantics & Verification Research Group Department of Computer Science University of Malta 2008 Runtime Verification of Contracts for Java Programs Christian.
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
Aspect Oriented Programming - AspectJ Radhika Rajput.
ECE 720T5 Fall 2012 Cyber-Physical Systems Rodolfo Pellizzoni.
Overview of AspectJ Aspect Oriented Software Development Seminar Technion presented by Oren Mishali.
University of British Columbia Software Practices Lab 2005 CASCON A Fluid AOP Editor Terry Hon Gregor Kiczales.
Planning systems and its’ applications in software engineering Saša Tošić, M. Ivanović Risan, 2007.
VIDE Integrated Environment for Development and Verification of Programs.
Rigorous Fault Tolerance Using Aspects and Formal Methods Shmuel Katz Computer Science Department The Technion Haifa, Israel
A Static Analysis Framework For Embedded Systems Nathan Cooprider John Regehr's Embedded Systems Group.
Extensible Untrusted Code Verification Robert Schneck with George Necula and Bor-Yuh Evan Chang May 14, 2003 OSQ Retreat.
Overview of program analysis Mooly Sagiv html://
A Formal Model of Modularity in Aspect-Oriented Programming Jonathan Aldrich : Objects and Aspects Carnegie Mellon University.
Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Debugging Support.
ECE 720T5 Winter 2014 Cyber-Physical Systems Rodolfo Pellizzoni.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
Static and Dynamic Analysis at JPL Klaus Havelund.
Abc Compiler Zak Fry. Who and Where Programming Tools Group at Oxford University, UK – Oege de Moor Sable Research Group at McGill University, Quebec.
Session 2: AspectJ Mark Stobbe September 13,
VERIFICATION OF ASPECT ORIENTED MODELS BY DON MARTIN JAYASHREE VENKIPURAM PATHANGI PIYUSH SRIVASTAVA REFERENCES F. Mostefaoui and J. Vachon,” Design level.
COP 4620 / 5625 Programming Language Translation / Compiler Writing Fall 2003 Lecture 10, 10/30/2003 Prof. Roy Levow.
The switch StatementtMyn1 The switch Statement Sometimes there can be a multiple-choice situation, in which you need to execute a particular set of statements.
Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, System and Software Engineering.
A Novel Approach to Unit Test: The Aspect-Oriented Way Guoqing Xu and Zongyuan Yang Software Engineering Lab (SEL) East China Normal University
Aspect Oriented Programming Gülşah KARADUMAN.
VERIFICATION OF ASPECT-ORIENTED MODELS Review of Aspect-Oriented Definitions aspect – crosscutting concern that may involve multiple classes pointcut –
1 C# A brief overview by Jack Senechal and Bryan Powell.
AOSD1 Aspect-Oriented Software Design Karl Lieberherr Theo Skotiniotis.
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Rewriting Logic Model of Compositional Abstraction of Aspect-Oriented Software FOAL '10Mar. 15, 2010 Yasuyuki Tahara, Akihiko Ohsuga The University of.
CCC: An Aspect-Oriented Intermediate Language on.Net Platform Yingfei Xiong and Feng Wan University of Electronic Science and Technology of China, China.
Introducing ABC: Programming Languages and AOP Oege de Moor Programming Tools Group University of Oxford joint work with Ganesh Sittampalam, Sascha Kuzins,
Chapter 10 Function Block Diagram
Debugging parallel programs. Breakpoint debugging Probably the most widely familiar method of debugging programs is breakpoint debugging. In this method,
Copyright © Mohamed Nuzrath Java Programming :: Syllabus & Chapters :: Prepared & Presented By :: Mohamed Nuzrath [ Major In Programming ] NCC Programme.
Dynamic Program Analysis Klaus Havelund Kestrel Technology NASA Ames Research Center Motivation for writing specs: Instant gratification.
Weaving a Debugging Aspect into Domain-Specific Language Grammars SAC ’05 PSC Track Santa Fe, New Mexico USA March 17, 2005 Hui Wu, Jeff Gray, Marjan Mernik,
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
1 Enhancing Program Comprehension with recovered State Models Stéphane S. Somé Timothy C. Lethbridge SITE, University of Ottawa.
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
Click to edit Master text styles JavaMOP Hamid Reza Niroomand A presentation to Dr. Babamir.
Aspect Oriented Programming in.NET with CodeBricks Antonio Cisternino Academic Days Milan, 2004 Università di Pisa Supported by Microsoft Research grant.
Java FilesOops - Mistake Java lingoSyntax
Comparison of Different AOP Approaches Presented by: Xiaojing Wang.
Introduction to Yan Cui Aspect Oriented Programming by
Fault-tolerance for Component-based Systems – An Automated Middleware Specialization Approach Sumant Tambe* Akshay Dabholkar Aniruddha Gokhale Abhishek.
Projections - A Step by Step Tutorial By Chee Wai Lee For the 2004 Charm++ Workshop.
AOP with AspectJ Awais Rashid, Steffen Zschaler © Awais Rashid, Steffen Zschaler 2009.
Chapter 2- Visual Basic Schneider1 Programming Languages: Machine Language Assembly Language High level Language.
Software Engineering Lecture 7
Chengyu Sun California State University, Los Angeles
Aspect-Oriented Programming with the Eclipse AspectJ plug-in
Discussion with Gregor Kiczales at UBC
Aspect Validation: Connecting Aspects and Formal Methods
Chengyu Sun California State University, Los Angeles
Program Monitoring with LTL in EAGLE
An Extensible Contract Verifier for AspectJ
Hongyu Zhang, Jeremy S. Bradbury, James R. Cordy, Juergen Dingel
CS520 Web Programming Spring – Aspect Oriented Programming
AspectAda Aspect-Oriented Programming for Ada95
STF 454 TDL – Overview Last change:
ARV: Aspect Refactoring Verifier
Refactoring the Aspectizable Interfaces: An Empirical Assessment
Presentation transcript:

Runtime Verification of C Programs with Inspiration from AOP Klaus Havelund Jet Propulsion Laboratory Pasadena, USA

Aspect Oriented Programming and Runtime Verification Aspect Oriented Programming (AOP): Pointcut : predicate on program statements. Advice : pointcut + code (execute code each time statement satisfying pointcut is reached). Runtime Verification (RV = State-full AOP ): Tracecut : predicate on execution traces. Advice : tracecut + code (execute code each time trace predicate is violated - or satisfied, depending on the default). one possible view

RCAT tool: Developed by Margaret Smith/JPL

Overview of the RMOR System C program RMOR connection fail = call(F29) void F29(int m){ … } … F29(2); … instrumented C program monitor void F29(int m){ … } … submit(fail); F29(2); … void submit(int event){ switch state of{ … case S3: if(event == fail){ state = S4; } … } specification state S3{ when fail -> s4; … } RCAT

C program RMOR connection fail = call(F29) void F29(int m){ … } … F29(2); … instrumented C program monitor void F29(int m){ … } … submit(fail); F29(2); … void submit(int event){ switch state of{ … case S3: if(event == fail){ state = S4; } … } specification state S3{ when fail -> s4; … }

C program RMOR connection fail = call(F29) void F29(int m){ … } … F29(2); … instrumented C program monitor void F29(int m){ … } … submit(fail); F29(2); … void submit(int event){ switch state of{ … case S3: if(event == fail){ state = S4; } … } specification state S3{ when fail -> s4; … }

C program RMOR connection fail = call(F29) void F29(int m){ … } … F29(2); … instrumented C program monitor void F29(int m){ … } … submit(fail); F29(2); … void submit(int event){ switch state of{ … case S3: if(event == fail){ state = S4; } … } specification state S3{ when fail -> s4; … }

C program RMOR connection fail = call(F29) void F29(int m){ … } … F29(2); … instrumented C program monitor void F29(int m){ … } … submit(fail); F29(2); … void submit(int event){ switch state of{ … case S3: if(event == fail){ state = S4; } … } specification state S3{ when fail -> s4; … }

The pointcut language for specifying program points is inspired from aspect oriented programming. ::= 'call' '(' idpat1:idpat2 ')' | 'set' '(' idpat1:idpat2 ')' | 'withincode' '(' idpat1:idpat2 ')' | 'within' '(' idpat1 ')' | | && | || | '!' | '(' ')'

A specifiation can state many properties, each represented by a monitor.

Event/pointcut parameterization: properties parameterized with symbols/events and/or pointcuts Future Extension

Data parameterization: properties parameterized with data values

The RMOR Grammar ::= * ::= 'handled'? 'monitor' '{' * '}' ::= | ::= 'import' ';' ::= pointcut '=' ';' ::= 'symbol' '=' ('before' | 'after') ';' | 'symbol' (',' )* ';' ::= 'machine' '{' * '}' ::= * 'state' '{' * '}' | 'super' '[' (',' )* ']' '{' ('while' ';')? * '}' ::= 'initial' | 'anytime' | 'once' | 'safe' | 'live' | 'next' ::= 'ANY' | | '&&' | '||' | '!' | '(' ')' ::= 'when' ('->'|'=>') ';' ::= 'call' '(' idpat1:idpat2 ')' | 'set' '(' idpat1:idpat2 ')' | 'withincode' '(' idpat1:idpat2 ')' | 'within' '(' idpat1 ')' | | && | || | '!' | '(' ')'

CIL: C Intermediate Language A C Program Analysis and Transformation Tool … while(x>0){ f(x); x--; }; … results: … while(x>0){ M_submit(42); f(x); x--; }; … void M_submit(int e){ switch(state){ case S7: … } transformation normalize AST normalized AST CIL specification Monitor syntesizer + events