Home
Publications
In the News

Events

GTTSE 2009
SQM 2009

Tools

2LT
CoddFish
XsdMetz
SdfMetz
MatchO

Strafunski

Related

Software Product Certification
Research at SIG


TFM Seminar
TFM group pages
PURé Café
PURe Project






www.flickr.com
This is a Flickr badge showing public photos from JstVssr. Make your own badge here.

The following is a list of student project proposals.



Grammar Engineering

In many areas of computing, languages play a central role. Programming languages, data definition languages, scripting languages, mark-up-languages, query languages, etc. Unfortunately, it is common practise in software engineering to apply mostly ad-hoc techniques when dealing with language syntaxes. Grammar Engineering seeks to remedy this situation by regarding grammars as valueable software artifacts, and applying good engineering practises to their development, deployment, and maintenance.

In this project you will implement a tool-suite for Grammar Engineering. The tool-suite will include (i) support for grammar reconstruction from language reference manuals, (ii) a combinator library for reshaping grammars, and (iii) support for generating parsers, XML shema's, transformation libraries, and other software components from grammars. Your tool-suite will use the Syntax Definition Formalism (SDF) as internal representation format. To design your tool-suite you will take inspiration from published work and previously developed prototypes.

The implementation of this tool-suite will normally require some technology that it is fit to implement all of the above components while this technology should then also benefit from the provided components. Here are some options:

  • A Haskell-centric approach with combinator parsing.
  • An ASF+SDF Meta-Environment approach with its SGLR parsing technology.
  • General-purpose programming languages and main-stream parser generators like ANTLR.

For example, in the Haskell scenario, the tool-suite is implemented in Haskell and it would be useful for the Haskell programmer. That is, the tool-suite would then help with deploying Haskell-based parsers, XML components and others while processing SDF grammars as input.

See also: the Grammar Ware page.

Location: The project, or part of it may be conducted at the Vrije Universiteit or CWI in Amsterdam, The Netherlands.

Supervisors: Joost Visser (UMinho), Ralf Laemmel (VU & CWI, The Netherlands)

(back to top)


Benchmarking Generic Programs

Generic Programming encompasses programming techniques that allow the construction of programs that work for just about any kind of data type. Examples of generic programming solutions are Strafunski, traversal functions in ASF+SDF, Generic Haskell, Polytypic Programming, and visitor combinators.

In this project you will perform thorough benchmarking of various generic programming approaches, and investigate some options for improving the efficiency of generic programs. To this end, you will develop a benchmark suite of generic programming problems, and corresponding solutions for each approach under scrutiny. You will investigate both time and space consumption by the various approaches. You will publish your benchmark suite and the results of running it on the internet, such that in future others can take advantage of it when comparing and evaluating generic programming approaches in future.

Location: The project, or part of it may be conducted at the Vrije Universiteit or CWI in Amsterdam, The Netherlands.

Supervisors: Joost Visser (UMinho), Ralf Laemmel (VU & CWI, The Netherlands)


Software Portfolio Monitoring

background

The Software Improvement Group (SIG) offers a tool-based service, called Software Portfolio Monitoring (SPM). The objective of SPM is to provide ICT management of large corporations with objective and up-to-date information about their software portfolio. The method to achieve this is to periodically run software analysis tools on the entire portfolio, to aggregate and interpret the data thus obtained, and to present the data in extremely condensed form to the management board.

The SIG has developed a suite of software analysis tools, which goes by the name of the Software Analysis Toolkit (SAT). Through a graphical user interface, SAT allows application of a wide variety of analyses to large legacy software systems, and to visualize the results. The SAT is interactive and extendible.

Challenge

In this project you will apply the SAT to a number of large software systems. These will include large high-profile open source software systems, as well as large proprietary systems owned by some of Holland's largests corporations. You will apply statistical tools to the acquired data to discover trends, outliers, and to aggregate the data to a minimal set of meaningful indicators. Finally, you will produce a presentation of the indicators for each of the analysed systems, which will serve as a benchmark with which systems to be analysed in future can be compared.

Location: The project, or part of it, may be conducted at the Software Improvement Group, The Netherlands.

Supervisor: Joost Visser (UMinho)


Software Analysis Development Kit

Background

The Software Improvement Group (SIG) offers several services to its clients that involve the application of software analysis tools to the software systems of these clients. To support this, SIG has developed the Software Analysis Toolkit (SAT). The SAT offers an interactive user interface that allows a user to select system sources, run all kinds of analyses on them, and visualize the results. The SAT is extendible. Its architecture consists of a framework that can be instantiated by supplying specific analysis and visualization components.

Challenge

The SIG wishes to make the SAT available to external parties. Not just to use SAT, but also to extend it with new analysis and visualization functionality. In other words, the SAT needs to be turned into a "development platform", analogous to for instance Sun's Development Kit (SDK).

In this project, you will modify the design of SAT such that it can be used as a development platform. This implies that you will create and document APIs to be used by developers of analysis and visualization components. These APIs will need to be designed around a component model, such that analysis and visualization components can easily be parameterized and combined. Also, you will design and create a development community portal, i.e. a website where the SAT development kit can be downloaded, and where analysis and visualization components can be shared by the development community.

Location: The project, or part of it, may be conducted at the Software Improvement Group, The Netherlands.

Supervisor: Joost Visser (UMinho)


Spaghetti Surfing

Create a Hierarchical Graph Browser.

In many areas of science and engineering, hierarchical graphs are used to represented information. (In a hierarchical graph, each node can itself be a graph again.) These graphs can be stored in a database with a very simple data model, but containing a huge number of nodes and edges. Unfortunately, when looking at such a huge graph with an ordinary graph visualization tool, you will only see a chaotic ball of spaghetti.

In this project, you will use the Graph Visualization Framework to create a browser for large hierarchical graphs. Your browser will support some filtering and selection operations that allow interactive exploration of the spaghetti jungle.

Supervisor: Joost Visser


Unraveling Legacy Software

Create components for unraveling legacy software.

Most software systems used by companies today has resulted from development and maintenance activities spread over 10 to 30 years. During this time, these legacy systems have become unmanageably large and complex.

The Software Analysis Toolkit (SAT) has been developed by the Software Improvement Group (SIG) to support the performance of Software Risk Assessments on legacy software systems. The SAT has been made available for academic use.

In this project, you will add analysis and/or visualization components to the SAT. Select the component you will build by discussing some alternatives with one of SIG's engineers (don't worry they are nice guys). You will be given the opportunity to run your components via SAT on a few real legacy systems of considerable size (between 100.000 and 10.000.000 lines of code).

Supervision: Joost Visser


Aspectual Generator for JJTraveler

JJTraveler is a Java framework that allows construction of object graph traversals in an elegant, combinatorial style. To use JJTraveler within a particular application, its classes must implement the Visitable interface of JJTraveler, and an application-specific Visitor class must be generated.

In this project, you will use an aspect-oriented programming tool (AspectJ) to automatically generate application-specific instantiations of the JJTraveler framework. This tool allows you, for instance, to insert additional methods at compilation time into given classes. You can demonstrate that your aspectual generator works by applying it to an interesting class hierarchy from some arbitrary open source project.

Supervision: Joost Visser


Marriage of ANTLR and JJTraveler

ANTLR is a popular parser generator for Java. During parsing it can create a so-called heterogeneous Abstract Syntax Tree (AST). Unfortunately, you need to define the classes of the AST nodes manually, even though they could be derived from the grammar.

JJTraveler is a Java framework that allows construction of object graph traversals in an elegant, combinatorial style. To use JJTraveler within a particular application, its classes must implement the Visitable interface of JJTraveler, and an application-specific Visitor class must be generated.

In this project you will extend ANTLR with the capability of generating a class hierarchy from an input grammar. These classes will implement the Visitable interface of the JJTraveler framework. The generator will also insert statements into the grammar that create the various nodes of these classes. You can demonstrate that your marriage is successful by applying it to a large ANTLR grammar from the web, and implement a few non-trivial visitors.

Supervision: Joost Visser


r3 - 16 Feb 2007 - 17:28:18 - JoostVisser
This site is powered by the TWiki collaboration platform Copyright © by the contributing authors. Ideas, requests, problems? Send feedback.
Syndicate this site RSSATOM