Eric Bodden, Ph.D. Current conditions in Darmstadt: Broken Clouds, 11°C
11°C

Head of Secure Software Engineering Group at EC SPRIDE
Principal Investigator in Secure Services at CASED
  • rss
  • Home
  • Research
    • Publications
    • Presentations
    • Current research
      • Inter-procedural Data-flow Analysis of Software Product Lines
      • RefaFlex – Safer refactorings for reflective Java programs
      • Join Point Interfaces
      • Stateful Breakpoints
      • MOPBox
      • Closure Joinpoints for AspectJ
      • Proving Security Properties of Services
      • TamiFlex: a tool set for Taming Reflection
    • 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
      • Clara: Compile-time Approximation of Runtime Analyses
    • Hosting a Program Committee meeting with Skype
  • Tools
    • SPLlift – highly efficient product line analysis
    • Heros – Inter-Procedural Data-Flow Analysis
    • Behavior Compliance Control
    • Join Point Interfaces
    • TamiFlex: a tool set for Taming Reflection
    • Closure Joinpoints for AspectJ
    • Clara: Compile-time Approximation of Runtime Analyses
    • RacerAJ (for race detection)
    • An introduction to Soot 2.2.5
    • J-LO, a tool for runtime-checking temporal assertions
    • Aspect-oriented approaches targeting the .NET Framework
  • Teaching
    • Current lectures and thesis topics
    • Past lectures
      • Automated Software Engineering
      • Software-Engineering Project
      • COMP 520
      • COMP 621
  • About me
  • Photos

Automated Software Engineering

The lecture is an integrated course (“integrierte Lehrveranstaltung”) consisting of a 90 minutes slot every week, of which we will use about 60 minutes for the actual lecture and 30 minutes for discussing exercises and their solutions. There will be optional exercises to be performed in groups of two students. (In exceptions we may also allow three-person groups.) Completing the exercises will allow you to obtain a bonus towards the grade of the final exam.

Opposed to the previous edition, this year the course will have a stronger emphasis on runtime-monitoring, security-monitoring and refactoring techniques.

Where: Technische Universität Darmstadt, Altes Hauptgebäude; S1|03/175

When: Mondays 13:30-15:00, starting on 17.10.2011

Who: Dr. Eric Bodden

How much: 90 minutes per week (lecture + exercise discussion) – 3 Credit Points (2 Semesterwochenstunden – integrierte Lehrveranstaltungen)

TUCaN number: 20-00-0497

Time/Place of final exam: 29.02.12, 10:00-12:00h in S202/C205

Appointments

Having final questions before the exam? Use the forum or make an appointment here.

Forum

There is a public forum (maintained by the Fachschaft) that you can use to discuss course-related issued. Please use this forum also for asking question about your course work such that the answers to those questions can benefit other course participants as well.

Exercise sheets and bonus system

There is a bonus system that allows you to improve your final grade by up to 1.0 points, depending on how well you succeed in the exercises.

  • There will be 7 exercise sheets, and all count towards the bonus.
  • Every exercise sheet is pass/fail. When your group passes the exercise sheet, all group members earn a bonus of 0.2=1/5.
  • The maximal bonus is 1.0, i.e., if you have passed 5 exercise sheets then you have reached the maximal bonus. Nevertheless we recommend completing all sheets because all of them give examples of exercises that may be relevant for the final exam.
  • Every sheet will contain at least one exercise marked as optional. Exercises marked as optional do not need to be answered to pass an exercise sheet.
  • If you have failed one exercise sheet (or missed to hand one in), then you may compensate for the lost bonus by correctly completing two optional exercises from (one or more) other exercise sheets. (We will make sure that there are two optional exercises on the last sheet.)
  • The final grade for this course will be computed by adding your bonus to the grade for the final exam and then rounding to the next grading level.
Exercises are usually due on the Thursday before the lecture at which the next sheet is given out. This is to allow me to discuss the results of the exercises in the next lecture. The due date will also be printed on each sheet. Hand in your results using SVN. Submissions by Email will not be accepted.

Outline and Preliminary Schedule

In this lecture we will cover the ideas and principles behind important tool-based software engineering approaches:

  • What goal are the tools trying to achieve?
  • How do they fit into the software-development process?
  • How do they achieve their goal?
  • To what extent do they work on real programs and why?
Using (optional) hands-on exercises you will furthermore get the opportunity to work with some of the tools first hand. Some tools provide APIs to allow for extensions by the user. In this case, exercises may involve such extensions.

We will start off using an introductory lecture during which we will cover version control systems, in particular Subversion, which you will be required to use for submitting your course work (if you are participating; course work is optional). On October 24th, we will have a special Guest Lecture by Martin Robillard, Associate Professor at McGill University and an awardee of the prestigious von Humboldt Fellowship.

The regular lectures will start off by first covering the initial phase of the software design process: requirements engineering and elicitation. We will discuss how tools like Alloy help you define requirements and test these definitions for completeness or the absence of contradictions. Korat is a tool that lets you automatically generate complex test inputs based on an Alloy specification. EvoSuite from Saarland University goes beyond the simple generation of test inputs: it generates whole test cases, along with post-conditions (assertions) that the test case is guaranteed to fulfill.

Test-case generation can only succeed, however, if it has a means to tell apart faulty from “good” test runs. This is easy if a fault causes the program to throw an exception. In many cases, however, faults may lead to unintended behavior without exceptions. A so-called “oracle” can detect such unintended behavior by monitoring the program under test, and signal a faulty test run. Often, oracles are implemented through program instrumentation, also called a “runtime monitor”. We will discuss MOPBox, a novel open-source framework that allows programmers to define such oracles quite easily. Tracematches are a way to generate oracles (or runtime monitors) automatically from declarative specifications based on regular expressions. JavaMOP is an open framework for generating such monitors from different kinds of specification languages. We will discuss how JavaMOP achieves this genericity while at the same time allowing for highly efficient monitoring code. The term Runtime Monitor is very common in the research field of software engineering. In security research, one will more often speak of so-called Inline Reference Monitors. We will discuss how those monitors differ from general runtime monitors, and how they can be used to secure software by design. Defining runtime monitors can often be cumbersome. We hence discuss Stateful Breakpoints, an integration of runtime monitoring into the Eclipse Debugger. Stateful Breakpoints allow programmers to express complex condition that, in combination, allow the debugger to run up to an error situation within a single run.

Monitoring programs can slow down their execution. This is particularly problematic when monitoring during testing, where many test runs may need to be monitored. We will hence discuss the Clara framework as a tool to partially evaluate runtime monitors ahead of time: Clara uses static program analysis, inspecting the program’s code, to determine where a runtime monitor could signal a violation at all. Program locations at which violations are impossible do not need to be monitored/instrumented. This can speed up the testing process significantly. In the limit, Clara can even be so effective that it proves statically that the given program can never violate the property expressed by the monitor. Soot is one of the premier program-analysis frameworks for Java. Clara builds on Soot. Static analysis is hard, however, and often unsound/incorrect when the program under test uses reflection. Reflection allows Java programs to load classes and access their fields and methods by referring to them using a simple (possible runtime-generated string value). TamiFlex is a tool that for the first time allows for an easy way to capture information about reflective calles at runtime, to then provide this information to a static analysis. Due to this information, the static analysis becomes “sounder”, it becomes sound with respect to the recorded runs. One example application of TamiFlex is the brand new tool RefaFlex, an Eclipse extension for supporting reflection-safe refactorings. Last but not least we will look at an analysis tool for even more dynamic code, i.e., code written in JavaScipt: Google Caja is an open-source tool for sanitizing JavaScript code such that it is more resilient towards code-injection attacks.

The following schedule is still subject to minor changes. 

# Date Topic Links Material
1 17.10.2011 Introduction, Revision Control SVN, Mercurial Ex. Sheet 1
2 24.10.2011 Guest Lecture by M. Robillard: Thinking Inside the Box: Stories of the ideas behind the IDEs Martin Robillard References etc.
3 31.10.2011 Reliable System Requirements and Models Alloy Ex. Sheet 2
--- 7.11.2011 no lecture --- ---
4 14.11.2011 Guest Lecture by Gordon Fraser: Automatic generation of unit tests EvoSuite  
5 21.11.2011 Korat: Automated testing-input generation for Java programs Korat Ex. Sheet 3
6 28.11.2011 Defining testing oracles through runtime monitors MOPBox Ex. Sheet 4
7 5.12.2011 Efficient Runtime Montoring JavaMOP, Tracematches  
8 12.12.2011 Monitoring languages and Security Monitoring JavaMOP, Tracematches  
9 19.12.2011 Static control-flow and data-flow analysis of Java programs Soot Ex. Sheet 5
--- --- Winter break --- ---
10 9.1.2011 Partially evaluating runtime monitors at compile time Clara Ex. Sheet 6
11 16.1.2011 cancelled    
12 23.1.2011 Static program analysis in the presence of reflection and custom class loaders TamiFlex  
13 30.1.2011 Safe, constraint-based refactoring of reflective Java programs RefaFlex Ex. Sheet 7
14 6.2.2011 Recap    

Slides and additional material

You can download the lecture slides and notes here, as well as the exercise sheets here. Both folders are password protected. You will be able to access them once you have emailed Eric your group information. There’s also a list of additional material here.

Previous edition

Automated Software Engineering was first taught in 2010, that time by Martin Monperrus and myself. We covered the following topics:

  • automated analysis & definition of requirements
  • computer-aided design of software
  • implementation with intelligent IDEs
  • automated testing and verification
  • computer-aided bug finding
  • aiding program understanding by mining latent specifications from existing software
  • advanced debugging & profiling techniques
  • computer-aided refactoring and documentation
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.

Upcoming Conferences

SC 2013

SOAP 2013

ESEC/FSE 2013

PPPJ 2013

RV 2013

Photos

Categories & Feeds

  • Research
    RSS
    (176)
  • Misc
    RSS
    (99)
  • Montreal
    RSS
    (44)

Collaborations

  • Don Batory, UTA
  • Eric Tanter, Universidad de Chile
  • Friedrich Steimann, Fernuni Hagen
  • Grigore Rosu, UIUC
  • Hans Vangheluwe, McGill University/Universiteit Antwerpen
  • Jacques Klein, SnT Luxembourg
  • Klaus Havelund, NASA JPL
  • Laurie Hendren, McGill University
  • Martin Monperrus, Univ. of Lille
  • Matthew Dwyer, University of Nebraska
  • Oege de Moor, University of Oxford
  • Ondrej Lhotak, University of Waterloo
  • Patrick Lam, University of Waterloo
  • Rahul Purandare
  • Sarfraz Khurshid, UTA
  • Shahar Maoz, RWTH Aachen
  • Tian Zhao, UW Milwaukee
  • Volker Stolz, University of Oslo

Research projects

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

Service

  • AOSD 2006
  • AOSD 2007
  • AOSD 2010
  • AOSD 2011
  • AOSD 2012
  • ATPS 2013
  • ATVA 2008
  • ECOOP 2008 Doctoral Symposium
  • ECOOP 2010
  • ESEC/FSE 2011 New Ideas Track
  • ESEC/FSE 2013
  • FOAL 2010
  • FOAL 2012
  • FOAL 2013
  • ICSE 2010
  • ICSE 2013 (New Ideas)
  • IEEE Transactions on Software Engineering (TSE)
  • International Journal of Image and Graphics
  • ISSTA 2011
  • NFM 2011
  • OOPSLA 2008
  • OOPSLA 2010
  • OOPSLA 2012
  • PEPM 2008
  • PLDI 2006
  • PLDI 2008
  • RAM-SE 2011
  • RV 2007
  • RV 2009
  • RV 2010
  • RV 2011
  • SAC 2012
  • SC 2011
  • SC 2013
  • SEFM 2005
  • SEFM 2008
  • Transactions on Software Engineering and Methodology (TOSEM)
  • VMIL 2008
  • VMIL 2009

Some other people I know

  • Adrian Colyer
  • Bruno Dufour
  • Dan North
  • Daniel Klink
  • Dave Thomas
  • Dean Wampler
  • Eric Tanter
  • Friedrich Steimann
  • Joachim Kneis
  • Klaus Havelund
  • Kristin Lovejoy
  • 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
  • Master Sgt. Eric Bodden

Previous Posts

May 2013
M T W T F S S
« Mar    
 12345
6789101112
13141516171819
20212223242526
2728293031  

Tags

Alumni AOP AOSD AspectJ Atlanta Bike Blizzard Bug finding Caro Clara COMP 621 Eclipse FSE Google ISSTA Java LinkedIn Mac McGill Microsoft Montreal NASA Photos Programming Quebec City Race detection Racer Runtime Monitoring Runtime verification RV RWTH Seattle Slides Snow storm Soot Soot Tutorial Static Analysis Strike TamiFlex TA strike Thesis tracematches Typestate Vacation Winter carnival


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