|
|
Download

Top Picks | Education-related
software | Eiffel-related software | Push-button testing / debugging | .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 / debugging
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.
|
AutoFix-E
|
"AutoFix-E"
- Purpose: An automated debugging tool based on Design
by Contract
- Type: Stand-alone application
- Home page
- Description: AutoFix-E automatically suggests fixes
for faults in programs with contracts.
|
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
|
|