|
|
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.
|
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
|
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
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
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
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
|
|