Institute of Computing Jaca: a Reflective Fault Injection Tool based on Patterns Eliane Martins Cecilia Rubira Nelson Leme Institute of Computing State.

Slides:



Advertisements
Similar presentations
Chapt.2 Machine Architecture Impact of languages –Support – faster, more secure Primitive Operations –e.g. nested subroutine calls »Subroutines implemented.
Advertisements

Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
JavAssist X.java X.class Class Loader My Loader X compile load JavAssist enables preload byte code modification.
ECE 750 Topic 8 Meta-programming languages, systems, and applications Load-time structural reflection in Java – Shigeru Chiba, 2000 May 27, 2004 Shimin.
Lab Information Security Using Java (Review) Lab#0 Omaima Al-Matrafi.
Towards Target-Level Testing and Debugging Tools For Embedded Software Harry Koehnemann, Arizona State University Dr. Timothy Lindquist, Arizona State.
Automated creation of verification models for C-programs Yury Yusupov Saint-Petersburg State Polytechnic University The Second Spring Young Researchers.
1 GWT Google Web Toolkit Build AJAX apps in the Java language
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Object Orientated Programming
Supporting Unanticipated Dynamic Adaptation of Application Behaviour Barry Redmond and Vinny Cahill Distributed Systems Group Trinity College, Dublin.
BROADWAY: A SOFTWARE ARCHITECTURE FOR SCIENTIFIC COMPUTING Samuel Z. Guyer and Calvin Lin The University of Texas.
The Procedure Abstraction Part I: Basics Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412.
Ritu Varma Roshanak Roshandel Manu Prasanna
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
Testing Components in the Context of a System CMSC 737 Fall 2006 Sharath Srinivas.
Educational Computer Architecture Experimentation Tool Dr. Abdelhafid Bouhraoua.
SIMULATING ERRORS IN WEB SERVICES International Journal of Simulation: Systems, Sciences and Technology 2004 Nik Looker, Malcolm Munro and Jie Xu.
COP4020 Programming Languages
Java Beans Component Technology Integrated, Visual Development Environments Reusable Platform-Independent Modular.
Software Faults and Fault Injection Models --Raviteja Varanasi.
A Portable Virtual Machine for Program Debugging and Directing Camil Demetrescu University of Rome “La Sapienza” Irene Finocchi University of Rome “Tor.
The Procedure Abstraction Part I: Basics Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Chapter 2: System Structures.
University of Coimbra, DEI-CISUC
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
Optimized Java computing as an application for Desktop Grid Olejnik Richard 1, Bernard Toursel 1, Marek Tudruj 2, Eryk Laskowski 2 1 Université des Sciences.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
Java Introduction to JNI Prepared by Humaira Siddiqui.
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Andrew S. Budarevsky Adaptive Application Data Management Overview.
SCALABLE EVOLUTION OF HIGHLY AVAILABLE SYSTEMS BY ABHISHEK ASOKAN 8/6/2004.
Architectural pattern: Interceptor Source: POSA II pp 109 – 140POSA II Environment: developing frameworks that can be extended transparently Recurring.
Implementing Simple Replication Protocols using CORBA Portable Interceptors and Java Serialization T. Bennani, L. Blain, L. Courtes, J.-C. Fabre, M.-O.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
MDD approach for the Design of Context-Aware Applications.
Slide Advanced Programming 2004, based on LY Stefanus's slides Native Methods.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Generating Software Documentation in Use Case Maps from Filtered Execution Traces Edna Braun, Daniel Amyot, Timothy Lethbridge University of Ottawa, Canada.
Jim Dowling, DSG. Introduction to Reflection1 Reflection and the Metaobject Protocol paradigm by Jim Dowling.
Introduction to OOP CPS235: Introduction.
SAFEWARE System Safety and Computers Chap18:Verification of Safety Author : Nancy G. Leveson University of Washington 1995 by Addison-Wesley Publishing.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Vertical Profiling : Understanding the Behavior of Object-Oriented Applications Sookmyung Women’s Univ. PsLab Sewon,Moon.
Jun 14, 2004RAM-SE'04 Workshop, Oslo, Norway 1 Negligent Class Loaders for Software Evolution Yoshiki Sato, Shigeru Chiba (Tokyo Institute of Technology.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
Getting ready. Why C? Design Features – Efficiency (C programs tend to be compact and to run quickly.) – Portability (C programs written on one system.
1 Manipulating Managed Execution Runtimes to support Self-Healing Systems Rean Griffith‡, Gail Kaiser‡ Presented by Rean Griffith
CEN-4015, Software Project, Spring 2006 Transparent Shaping of Existing Software to Support Pervasive and Autonomic Computing S. Masoud Sadjadi Autonomic.
Evaluating the Fault Tolerance Capabilities of Embedded Systems via BDM M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dipartimento di Automatica.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Computer System Structures
May 20, 2010 Meeting David W. Smith
A Hierarchical Model for Object-Oriented Design Quality Assessment
Visit for more Learning Resources
Introduction to Computers, the Internet and the World Wide Web
Java Beans Sagun Dhakhwa.
Rean Griffith‡, Gail Kaiser‡ Presented by Rean Griffith
Chapter 25: Architecture and Product Lines
An Overview of Java.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Fault Injection: A Method for Validating Fault-tolerant System
Improving Usability of Fault Injection
Introduction to Software Testing
Evaluating Compuware OptimalJ as an MDA tool
Groovy.
Chap 1. Getting Started Objectives
Chap 4. Programming Fundamentals
Presentation transcript:

Institute of Computing Jaca: a Reflective Fault Injection Tool based on Patterns Eliane Martins Cecilia Rubira Nelson Leme Institute of Computing State University of Campinas - Unicamp Brasil International Performance and Dependability Symposium — IPDS’2002 Washington, D.C., USA June , 2002

Institute of Computing 2 Contents Context Motivation and Objective Jaca Preliminary Experiments Conclusions Future Works

Institute of Computing 3 Fault Injection Deliberate introduction of faults into a system to observe its behavior –valuable approach to validate dependability properties –useful to evaluate impact of error recovery mechanisms into performance Approaches: –simulation-based fault injection –hardware fault injection  software fault injection (SFI)

Institute of Computing 4 Static injection (compile-time) –source or Assembler code alteration no extra code is needed faults triggered when altered code is accessed needs extra code: fault injector and monitor needs fault trigger mechanism SFI Approaches Dynamic injection (runtime) –special process –interrupt routines –trace mode –code insertion

Institute of Computing 5 Motivation Typical runtime SFI tools work at machine code level ex.: corruption of CPU registers useful to emulate consequences of hardware failures low intrusion into the target application  great effort to emulate software faults ex.: incorrect assignment of values to variables; incorrect array indexes; missing function Why is it important to emulate software faults ? software faults are major cause of system failures COTS software components use is increasing, even for critical applications

Institute of Computing 6 Our Goals Problem: –Runtime injection at source-code level, affecting objects’ attributes and methods –Separation of concerns: fault injection and monitoring code separated from application code Approach used: –computational reflection

Institute of Computing 7 Computational Reflection Capability of a system to reason about or act upon itself Reflective systems manipulate –external data –meta information: data representing system’s aspects structural reflection manipulation of structural aspects ex.: definition of a class or function behavioral reflection manipulation of system’s behavior ex.: method invocation interception Reflective systems’ architecture: – base level: system’s functions – meta level: interception and/or alteration functions

Institute of Computing 8 Behavioral Reflection and OO metaobject meta-level base-level object X : class attribute A : type, value method M1 : name, parameters M1 A B M2 M3 object X

Institute of Computing 9 Jaca Evolution of FIRE: runtime fault injection tool for applications written in C++ showed feasibility of the approach  source code dependency Main requirements: –validation of Java applications –high portability –source code independence –ability to incorporate new fault models

Institute of Computing 10 Design based on the Fault Injection Pattern set: – reuse of architectural solutions already used to implement fault injection tools Code is written in pure Java Use of Javassist reflection library: –extends Java reflection API –requires no modification to the standard JVM –performs reflection at bytecode level during load time Development Aspects portability source code independence modularity extensibility

Institute of Computing 11 Jaca’s Architecture Interface Controller Injector Manager Monitor Manager Activator Logical Injector Logical Injector Logical Monitor Logical Monitor … … Physical Injector Physical Monitor … Meta Level Base Level Target Application Fault ListLog FileClass List Jaca

Institute of Computing 12 Application Instrumentation Application’s Class Files Metaobjects’ ClassFiles byte code Javassist library Activator (class loader) byte code + hooks to metaobjects Metaobject Physical Injector Physical Monitor

Institute of Computing 13 Preliminary Experiments Experiments to show Jaca’s extensibility: –Assembler-level fault injection Physical Injector JNIEXPORT void JNICALL Java_LowLevelRoutine (JNIEnv *param1, jobject param2) { int a, b, c, d, op, num ; printf ( "\n###-> testing CPUID\n” ) ; op = 1; asm ( "cpuid" : "=a" (a), "=b" (b), "=c" (c), "=d" (d) : "a" (op)); printf ( "\n###-> Register values: - EAX: %i, EBX: %i, ECX: %i, EDX: %i\n\n", a, b, c, d ) ;... } Low Level Functions LowLevelRoutine( )

Institute of Computing 14 Conclusions and Future Works Jaca: –an extensible, portable software fault injector –faults affect attributes and methods of Java applications –fault injection uses computational reflection source code independent but...  dependent on reflection toolkit used Further works: –validate real world applications COTS ODBMS is being tested –extend Jaca’s functionalities –use of other reflection toolkits: Guaraná, Kava –explore Assembler-level fault injection features

Institute of Computing 15 Thank you ! Our s: