Eric Bodden Current conditions in Darmstadt: Light Snow, -2°C (feels like -6°C)
-2°C

Easy and efficient software verification
  • rss
  • Home
  • Research
    • Past Research
      • Efficient Runtime Verification
      • Racer: Effective Race Detection Using AspectJ
      • Continuation-equivalent states (ICSE 2010)
      • Aspect-oriented programming and design
      • Visual specification languages
      • A denial-of-service attack on the Java bytecode verifier
    • Publications
    • Presentations
  • Tools
    • Clara: Compile-time Approximation of Runtime Analyses
    • RacerAJ (for race detection)
    • An introduction to Soot 2.2.5
    • Aspect-oriented approaches targeting the .NET Framework
  • Teaching
    • Automated Software Engineering
    • Software-Engineering Project
    • COMP 520
    • COMP 621
  • Legacy
    • Bad Sector Recovery on NTFS
    • Arithmetic Coding
    • PHP Scripts
  • About me
  • Photos

Tools

On this page I provide some tools for download, which I developed during my past research.

RacerAJ

imageRacerAJ is an AspectJ based implementation of the Racer algorithm, a variant of Eraser. It allows you to detect data races in Java and AspectJ programs at runtime. The implementation of RacerAJ is based on three novel pointcuts that we implemented as an extension to the AspectBench Compiler.

Soot

I provide an introduction to Soot 2.2.5 here.

J-LO, the Java Logical Observer

J-LO is a tool for runtime-checking temporal assertions, which I developed for my Diploma thesis at RWTH Aachen University. You can find all information about it, including downloads, here.

Generate clone() plugin for Eclipse

Generate clone() dialog in EclipseEver had to deal with cloning of object structures in Java? As my study showed, there is actually a lot that can go wrong with this and many people do get it wrong all the time. Hence, why not have a plugin for Eclipse that helps you generate clone() methods semi-automatically? I have written exactly such a plugin. It first of all detects four different code smells with respect to cloning and in addition offers you to correct those smells by generating a correct implementation of clone().

Download the plugin here. My presentation slides show how it can be used.

I am currently discussion integration of this plugin into the main Eclipse build stream. If you support this idea, you might want to vote for it here and here.

Static optimizations for tracematches

AspectBench CompilerAs I describe on my research page, I have developed several static analyses to speed up runtime verification using tracematches, and sometimes even match tracematches against a program completely at compile time. All those analyses are available in the AspectBench Compiler and for download at the compiler’s website.

AspectJ library for fault tolerance

As a course project at McGill, I developed a little library for fault tolerance, written in AspectJ 5. It contains two components:

  1. Support for automatic N-Version programming.
  2. A full implementation of a recovery cache.

The fundamental concepts involved are explained in Joerg Kienzle’s lecture slides. N-Version programming basically allows you to implement several different versions of an algorithm. With the library, those versions are then automatically run in parallel, synchronized and a voter decides the overall outcome of the concurrent computation (usually voting based on a majority vote). Here is some example code:

VersionGroup1 version1 = new Version1();
VersionGroup1 version2 = new Version2();
VersionGroup1 version3 = new Version3();
Voter v = new ExceptionalMajorityVoter();
VersionGroup group =
    new VersionGroup("group1",v,1,TimeUnit.SECONDS,version1,version2,version3);
VersionGroupRegistry.v().registerVersionGroup(group);
System.err.println(version1.compute(1));

This snippet of code associates three versions with the same group. In the last line, where we kick off the computation, an around-advice will automatically start all three versions and then return the voted result instead of the original one.

The recovery block on the other hand allows you to do checkpointing on the fly: Just call the checkpoint method, do some state changes and then, for instance in case of an exception, call restore(). All the previous heap state will be restored for you.

The library can be downloaded in the form of two Eclipse projects here:

  1. NVersion
  2. RecoveryCache

Example clients are included. The code is made available under the BSD license.

Aspect-oriented approaches targeting the .NET Framework

There exists a survey Aspect-oriented approaches targeting the .NET Framework of  which I prepared for the the article bit-Fabrik: Zweigstelle, Hauptstelle, Dienstleister: Aspektorientierte Programmierung mit .NET that I co-authored with Torsten Weber.

Comments rss
Comments rss
Trackback
Trackback

Leave a Reply

Click here to cancel reply.

Welcome

Welcome to my website. Interested in my research? Click here for details or jump directly to my publications.

Pages

  • Research
    • Past Research
      • Continuation-equivalent states (ICSE 2010)
      • Efficient Runtime Verification
      • Racer: Effective Race Detection Using AspectJ
      • Aspect-oriented programming and design
      • Visual specification languages
      • A denial-of-service attack on the Java bytecode verifier
    • Publications
    • Presentations
  • Tools
    • Clara: Compile-time Approximation of Runtime Analyses
    • RacerAJ (for race detection)
    • An introduction to Soot 2.2.5
    • Aspect-oriented approaches targeting the .NET Framework
  • Teaching
    • Automated Software Engineering
    • Software-Engineering Project
    • COMP 520
    • COMP 621
  • Legacy
    • Arithmetic Coding
    • Bad Sector Recovery on NTFS
    • PHP Scripts
  • About me

Categories & Feeds

  • Misc RSS Feed Icon (89)
  • Montreal Blog RSS Feed Icon (44)
  • Research Blog RSS Feed Icon (67)
  • Comments (RSS) RSS Feed Icon

Kitchensink

  • Conferences
  • My first patent: Method and system for performance profiling of software (pending)
  • Photos

Research projects

  • AspectBench Compiler (abc)
  • J-LO
  • Soot
  • Stratified aspects

Service

  • AOSD 2006
  • AOSD 2007
  • AOSD 2010
  • AOSD 2011
  • Association of Alumni, Friends, and Supporters of the RWTH Aachen University in North America
  • ATVA 2008
  • ECOOP 2008 Doctoral Symposium
  • ECOOP 2010
  • FOAL 2010
  • IEEE Transactions on Software Engineering (TSE)
  • International Journal of Image and Graphics
  • ISSTA 2011
  • OOPSLA 2008
  • PEPM 2008
  • PLDI 2006
  • PLDI 2008
  • RV 2007
  • RV 2009
  • RV 2010
  • SEFM 2005
  • SEFM 2008
  • Transactions on Software Engineering and Methodology (TOSEM)
  • VMIL 2008
  • VMIL 2009

Some of my colleagues

  • Gregory Prokopski
  • Laurie Hendren
  • Nomair Naeem
  • Ondrej Lhotak
  • Patrick Lam
  • Programming Tools Group
  • Sable lab

Some other people I know

  • Adrian Colyer
  • Bruno Dufour
  • Dan North
  • Daniel Klink
  • Dave Thomas
  • Dean Wampler
  • Friedrich Steimann
  • Joachim Kneis
  • Klaus Havelund
  • Liz Keogh
  • Malte Clasen
  • Markus Schorn
  • Pascal Costanza
  • Patricia Jablonski
  • Philip Mayer
  • Ron Bodkin
  • Sven Wittig
  • Wiebke Berg

Some people not to confuse me with

  • Eric B. the terrorist
  • Eric Bodden the basketball player
  • Eric Bodden the chef who sunk
  • Eric Christopher Bodden
  • Noel R. Lopez alias Eric Bodden

Previous posts

March 2010
M T W T F S S
« Feb    
1234567
891011121314
15161718192021
22232425262728
293031  

Tags

Alumni AspectJ Atlanta Blizzard Bug finding Clara COMP 621 Eclipse Flight FSE Google ISSTA Java LinkedIn Mac McGill Microsoft Montreal Blog OOPSLA Oxford Photos Politics Programming Quebec City Race detection Racer Random ranting Runtime verification RWTH Seattle Ski trip Snow Snow storm Soot Soot Tutorial Static Analysis Strike TA strike Thesis tracematches Typestate Vacation Website Winter carnival Wordpress


rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox