The call for tutorials is now closed. The following tutorials will be given at ASE 2013:
Nov. 11, 2013
Full Day Tutorials
T1. A Hands-On Java PathFinder Tutorial (Abstract)
Java Pathfinder (JPF) is an open source analysis system that automatically verifies Java programs. The JPF tutorial provides an opportunity to software engineering researchers and practitioners to learn about JPF, be able to install and run JPF, and understand the concepts required to extend JPF. The hands-on tutorial will expose the attendees to the basic architecture framework of JPF, demonstrate the ways to use it for analyzing their artifacts, and illustrate how they can extend JPF to implement their own analyses. One of the defining qualities of JPF is its extensibility. JPF has been extended to support symbolic execution, directed automated random testing, different choice generation, configurable state abstractions, various heuristics for enabling bug detection, configurable search strategies, checking temporal properties and many more. JPF supports these extensions at the design level through a set of stable well defined interfaces. The interfaces are designed to not require changes to the core, yet enable the development of various JPF extensions. In this tutorial we provide attendees a hands on experience of developing different interfaces in order to extend JPF. The tutorial is targeted toward a general software engineering audience-software engineering researchers and practitioners. The attendees need to have a good understanding of the Java programming language and be fairly comfortable with Java program development. The attendees are not required to have any background in Java Pathfinder, software model checking or any other formal verification techniques. The tutorial will be self-contained.
Nov. 12, 2013
Morning Only Tutorials
LearnLib is a framework for model-based construction of dedicated learning solutions on the basis of extensible component libraries, which comprise various methods and tools to deal with realistic systems including test harnesses, reset mechanisms and abstraction/reﬁnement techniques. The tutorial will comprise realistic experimentation, like test-based extraction of the user process from Web applications. The two main aims of this tutorial are (1) to familiarize the attendees with the technique of active automata learning: what it is, how it works, what its abilities and limitations are, and how it can be used in a software engineering context. And (2), to educate the attendees in the usage of the free automata learning library LearnLib, by explaining technical concepts, illustrating common use-cases, and specifically emphasize how it’s generic architecture can be used to easily integrate it in their software.
Afternoon Only Tutorials
Model-based system engineering has been introduced to cope with the growing complexity of safety-critical systems. Some of the major concerns in model-based system engineering is to properly formalize the system properties and to design the system architecture so that the components are integrated in order to satisfy the system properties. Property-based approaches to system design focus on properties (rather than on behavioral models) and analyze the system properties to find errors very early in the design process, much before the components are implemented. Property specification languages are typically based on temporal logics and have been enriched to take into account real-time and safety aspects. In contract-based design, properties are structured into assumptions and guarantees to specify the properties on component interfaces. First conceived in the context of object-oriented programming, contract-based design is now applied also to the architecture of embedded systems. Contract-based design provides an ideal paradigm for a correct design of system architecture, with a clear description of the expected interaction of each component with its environment. This enables compositional reasoning, independent refinement and a proper reuse of components. The tutorial will introduce the concepts of property- and contract-based design for component-based system architectures in the context of embedded systems. The first part of the tutorial will give an overview of standard languages to describe system properties and architectures and formally define the concept of component interfaces and their semantics. The second part will focus on the contract-based framework provided by the OCRA tool, the property specification language used by OCRA, its support for the specification and verification of contracts refinement, and its usage within the modeling environments of CASE tools.