se logo Chair of Software Engineering
eth logo
   

 

Download

Top Picks | Education-related software | Eiffel-related software | Push-button testing | .NET tools | Ownership and alias analysis | Concurrency | Specification inference

Top Picks

TRAFFIC, Flat Hunt

The Inverted Curriculum is based on the reuse of existing software and information hiding. It relies on the assumption that the most effective way to learn how to program well is by exposure to a big chunk of high-quality software. For the course Introduction to Programming at ETH Zurich, Traffic and Flat hunt are used as software framework. Traffic is a library that allows modeling a city's public transportation system. Flat hunt is a strategy game in the spirit of "Scotland Yard" and uses Traffic.
Download: http://traffic.origo.ethz.ch

Further information: http://se.inf.ethz.ch/touch and course webpage of Introduction to Programming

EiffelMedia: http://eiffelmedia.origo.ethz.ch/

EiffelMedia is a multimedia library for Eiffel. The library allows you to use 2D and 3D graphics, sound, networking, and input via joystick and keyboard. It has many smaller frameworks that make life easier for a multimedia or game programmer.

EiffelMedia games: An ongoing collection of games that students created in the courses thought by the Chair Of Software Engineering. These games were created using the EiffelMedia library.

http://se.inf.ethz.ch/download/games and http://games.ethz.ch

Pattern Library and Documentation: http://se.inf.ethz.ch/people/arnout/patterns/download/patterns_1.0.zip

The Pattern Library contains patterns that are usable as components. For the patterns that could not be turned into components the download contains the Pattern Wizard, that let's you generate the patterns according to your input.

Further information: http://se.inf.ethz.ch/people/arnout/patterns

AutoTest

AutoTest implements a fully automatic testing process. The information that contracts provide can be used to determine whether the software performs according to its specification. By checking that the software respects its contracts, we can ascertain its validity. Therefore, contracts provide the basis for automation of the testing process.

Further information: http://se.inf.ethz.ch/auto_test/

SCOOPLI

Library implementation of the SCOOP model for object-oriented concurrency.
SCOOP (Simple Concurrent Object-Oriented Programming) is a concurrency model based on the principles of Design by Contract. The model takes advantage of the inherent concurrency implicit in object-oriented programming to provide programmers with a simple extension enabling them to produce parallel applications with little more effort than sequential ones. The implementation relies on the multithreading library EiffelThread. It runs on native Windows and .NET 1.1.
Download: scoopli.zip

Further information: http://se.inf.ethz.ch/research/scoop.html#demos

Event-Library

The Event Library is a simple library for event-driven programming. The Event library and the sample application were developed and tested with ISE EiffelStudio graphical development environment under Microsoft Windows XP. But as the Event Library is portable, it can be used on any platform supported by EiffelStudio.

A paper with the title "Event Library: an object-oriented library for event-driven design", describing the use of the event library with an example, can be found at http://se.inf.ethz.ch/publications or http://se.inf.ethz.ch/people/arslan

Send questions, suggestions and bug reports to Volkan.Arslan@inf.ethz.ch.
Download: Event.zip

Further information: http://se.inf.ethz.ch/people/arslan

Ownership and alias analysis

Work on ownership type systems and especially the Universe type system. Integration of the Universe type system into two open source projects.
MultiJava, a compiler for Java: http://multijava.org/
JML, a specification language for Java: http://jmlspecs.org/

Further information: http://www.sct.inf.ethz.ch/research

Graph Library

EiffelBase is intended to be a general, high-quality library covering the basic needs of everyday programming. It offers data structures to organize data and algorithms which can be applied to those data structures. The library design dates back to 1985 in its first form; that it has stood the test of time and is still used in so many new applications is testimony to its solidity. These classes extend EiffelBase in a number of areas not yet covered: graphs, topological sort and B trees.
Download: olivier_jeger_EiffelBase_extension.zip

Further information: http://se.inf.ethz.ch/projects/olivier_jeger/index.html

Education-related software

TRAFFIC, Flat Hunt

"A software framework for teaching introductory programming Outside-In"

  • Purpose: Software framework for teaching introductory programming with the Inverted Curriculum approach
  • Type: Library components and application
  • Download: http://traffic.origo.ethz.ch
  • Description: The Inverted Curriculum is based on the reuse of existing software and information hiding. It relies on the assumption that the most effective way to learn how to program well is by exposure to a big chunk of high-quality software. For the course Introduction to Programming at ETH Zurich, Traffic and Flat hunt are used as software framework. Traffic is a library that allows modeling a city's public transportation system. Flat hunt is a strategy game in the spirit of "Scotland Yard" and uses Traffic.
  • Further information: http://se.inf.ethz.ch/touch and course webpage of Introduction to Programming

EiffelMedia games

An ongoing collection of games that students created in the courses thought by the Chair Of Software Engineering. These games were created using the EiffelMedia library.

http://se.inf.ethz.ch/download/games and http://games.ethz.ch

 

Eiffel-related software

Libraries

EiffelMedia

EiffelMedia: http://eiffelmedia.origo.ethz.ch/

EiffelMedia is a multimedia library for Eiffel. The library allows you to use 2D and 3D graphics, sound, networking, and input via joystick and keyboard. It has many smaller frameworks that make life easier for a multimedia or game programmer.

Pattern Library

Pattern Library and Documentation: http://se.inf.ethz.ch/people/arnout/patterns/download/patterns_1.0.zip

The Pattern Library contains patterns that are usable as components. For the patterns that could not be turned into components the download contains the Pattern Wizard, that let's you generate the patterns according to your input.

Further information: http://se.inf.ethz.ch/people/arnout/patterns

Java Generation

"Eiffel library to generate Java bytecodes"

  • Purpose: Eiffel library to generate Java bytecodes
  • Type: Library components
  • Download: daniel_gisel_java_bytecode_generator.zip
  • Description: This Eiffel library is able to generate Java class files that can be executed by a Java Virtual Machine. A simple language with a corresponding compiler that uses the library as backend was created to test this library and also to give examples of how to use the framework. This language is similar to the Java language, but much simpler.
  • Further information: http://se.inf.ethz.ch/projects/daniel_gisel/index.html

OP

"A Command Line Parser for Eiffel"

  • Purpose: Offers easy-to-use command line parsing for Eiffel
  • Type: Library components
  • Project Page: http://se.inf.ethz.ch/people/schoeller/op.html
  • Description: OP is a library for parsing command line options in Eiffel. It makes it easy to add full-featured command line parsing to any existing Eiffel application.

Data structure libraries

"Graphs, B-Trees and Topological sort Eiffel library"

  • Purpose: Extending the Eiffel library for data structures and algorithms: EiffelBase
  • Type: Library components
  • Download: olivier_jeger_EiffelBase_extension.zip
  • Description: EiffelBase is intended to be a general, high-quality library covering the basic needs of everyday programming. It offers data structures to organize data and algorithms which can be applied to those data structures. The library design dates back to 1985 in its first form; that it has stood the test of time and is still used in so many new applications is testimony to its solidity. These classes extend EiffelBase in a number of areas not yet covered: graphs, topological sort and B trees.
  • Further information: http://se.inf.ethz.ch/projects/olivier_jeger/index.html

Tools

"Student Explorer"

"Pattern Wizard"

http://se.inf.ethz.ch/people/arnout/patterns/download/patterns_1.0.zip

The Pattern Wizard is a tool that automatically generates skeleton classes for some of the GoF ("Gang of Four" -> "Design Patterns" book by Gamma et al.) design patterns. It makes it easier to programmers to apply these patterns by avoiding rewriting code as much as possible. Version 1.0 of the Pattern Wizard covers the patterns Adapter, Decorator, Bridge, Template Method and Singleton. For more information see http://se.inf.ethz.ch/people/arnout/patterns/

"Eiffel Reflection Library Generator (Erl-G)"

Automatic precondition enforcement

"Static program analyzer"

Compilers

Java to Eiffel Compiler

  • Purpose: Make Java to native compilation possible (via Eiffel)
  • Type: Compiler; Language Transliteration
  • Download: http://jaftec.origo.ethz.ch/
  • Description: JENC (Java to Eiffel and Native Compiler) compiles Java source code to Eiffel source code and thereby also allows Java to native compilation (Eiffel compiles to native by default).
    The program comes with a manual that demonstrates how to use JENC for a SWT application.

 

Push-button testing

AutoTest

"AutoTest"

  • Purpose: An automatic testing tool based on Design by Contract
  • Type: Stand-alone application
  • Home page
  • Description: AutoTest (which is the successor to TestStudio) is a fully automatic tester based on Contract Based Testing.

"TestStudio"

  • Purpose: An automatic testing tool based on Design by Contract
  • Type: Stand-alone application
  • Home page
  • Description: TestStudio implements a fully automatic testing process. The information that contracts provide can be used to determine whether the software performs according to its specification. By checking that the software respects its contracts, we can ascertain its validity. Therefore, contracts provide the basis for automation of the testing process.

Design by Contract

Contract Wizard

"Contract Wizard 3.0"

  • Purpose: Adding contracts to .NET components a posteriori
  • Type: Stand-alone application
  • Download: petra_marty_contract_wizard.zip
  • Description: Regrettably Design by Contract is still a specificity of the Eiffel
    programming language. Contract Wizard 3.0 is a GUI application that
    enables adding contracts (preconditions, postconditions, and class
    invariants) to any .NET assembly, whatever .NET language it was
    initially written in.
  • Further information: http://se.inf.ethz.ch/projects/petra_marty/index.html

"Contract Wizard II"

  • Purpose: Adding contracts to .NET components a posteriori
  • Type: Stand-alone application
  • Download: dominik_wotruba_contract_wizard.zip
  • Description: Contract Wizard II is part of a general effort of improving existing components by adding contracts a posteriori. An analysis of the .NET Collections library has shown the presence of implicit contracts, which legitimates the development of a Contract Wizard. A first version of this tool has been developed in 2001 with a beta version of .NET. It takes advantage of the .NET Metadata and Reflection techniques to enable a user to add contracts to an already compiled module coming from a language without support for Design by Contract, such as C# or Java. The goal of this project was to update the wizard with the latest version of .NET and to add new functionalities.
  • Further information: http://se.inf.ethz.ch/projects/dominik_wotruba/diplom/index.html

 

.NET tools

CIL parser

"CIL Parser for Automatic Contract Extraction"

  • Purpose: CIL Parser for Automatic Contract Extraction
  • Type: Non-compiler tool
  • Download: christof_marti_cil_parser.zip
  • Description: Part of a general effort of improving existing components by adding contracts a posteriori (see draft paper about closet contracts in .NET libraries). The analysis of the .NET collections library has shown that routine preconditions tend to be expressed through exception cases. Since exception cases are not kept into the metadata of .NET assemblies, the idea is to develop a parser for the CIL (Common Intermediate Language) to extract the exception cases and infer the corresponding contracts. The CIL parser was developed with Gobo Eiffel Lex and Gobo Eiffel Yacc.
  • Further information: http://se.inf.ethz.ch/projects/christof_marti/index.html

 

Ownership and alias analysis

Works on ownership type systems and especially the Universe type system. I integrated the Universe type system into two open projects.
MultiJava, a compiler for Java: http://multijava.org/
JML, a specification language for Java: http://jmlspecs.org/

Further information:
http://www.sct.inf.ethz.ch/research/index.html
http://www.sct.inf.ethz.ch/projects/index.html#universes
http://www.sct.inf.ethz.ch/publications/index.html
http://www.sct.inf.ethz.ch/people/dietl/

 

Concurrency

SCOOP

"SCOOPLI"

  • Purpose: Implementation of SCOOP
  • Type: Library
  • Download: scoopli.zip
  • Description: Library implementation of the SCOOP model for object-oriented concurrency.
    SCOOP (Simple Concurrent Object-Oriented Programming) is a concurrency model based on the principles of Design by Contract. The model takes advantage of the inherent concurrency implicit in object-oriented programming to provide programmers with a simple extension enabling them to produce parallel applications with little more effort than sequential ones.
    The implementation relies on the multithreading library EiffelThread. It runs on native Windows and .NET 1.1.
  • Further information: http://se.inf.ethz.ch/research/scoop.html#demos

"scoop2scoopli"

  • Purpose: Translation of SCOOP programs into Eiffel
  • Type: Pre-processor
  • Download: scoop2scoopli.zip
  • Description: scoop2scoopli is a pre-processor and a type checker for SCOOP programs. It translates SCOOP programs into standard Eiffel. The generated system can be compiled with the ISE Eiffel compiler 5.5 or newer. scoop2scoopli is a command-line tool. scoop2scoopli performs lexical, syntactical, and semantic analysis of the source code. In fact, it performs a full compilation of your SCOOP system except for the generation of final code in C or IL. Instead, it generates standard Eiffel code that needs to be compiled with ISE Eiffel compiler. The latter is only used as a back-end, i.e. it should not report any compilation errors.
  • Further information: http://se.inf.ethz.ch/research/scoop.html#demos

 

Specification Inference

CITADEL

  • Purpose: Dynamic inference of contracts
  • Type: Daikon front-end
  • Description: CITADEL (Contract Inference Tool that Applies Daikon to the Eiffel Language) is an Eiffel front-end for the Daikon assertion detector. A dynamic assertion detector is a tool that determines conditions holding throughout a software system execution.
  • Further information (including download and documentation): http://se.inf.ethz.ch/people/polikarpova/citadel.html

gin-pink

  • Purpose: Static inference of loop invariants
  • Type: Stand-alone application interfaced with Boogie
  • Description: gin-pink is a command-line tool that infers loop invariants in annotated Boogie procedures.
  • Further information (including download and documentation): http://se.inf.ethz.ch/people/furia/software/gin-pink.html