This year (2011/12) I'm offering 7 projects. Please feel free to contact me for any questions, clarifications, or to arrange a meeting and discuss the project of your interest in person.

dkolovos.1: Advanced Editing Support for the Human Usable Textual Notation (HUTN) in Eclipse

(Suitable for CS, MEng, MScComp, MScSWE students)

Description

The Human Usable Textual Notation is an OMG standard for representing models in the OMG metamodelling architecture (e.g. UML models) using text instead of diagrams. In the context of the Epsilon Eclipse GMT project, basic tool support for HUTN has already been implemented. The aim of this project is to contribute advanced editing support for HUTN, such as content assistance, code completion, and reference navigation. The process of developing such editors in Eclipse has clear milestones that are orthogonal to each other so even if not all features can be implemented in the context of this project, a working editor can still be produced. A successful project will have immediate and significant impact and visibility in the Model Driven Engineering and the greater Eclipse community.

Prerequisites

A suitable candidate for this project should have good knowledge of the Java programming language and good object-oriented design skills. Experience with Eclipse would be helpful but is not required.

Guidance

The author of the existing HUTN implementation (Louis Rose, now a PhD candidate in the department) has kindly agreed to provide guidance to the student that will undertake this project with respect to the current implementation. I am also actively involved in developing similar tool-support for other languages on top of Eclipse and therefore will be able to provide technical guidance.

Resources

dkolovos.2: EMF4JS: An implementation of the Eclipse Modelling Framework in Javascript

(Suitable for CS, MEng, MScIP, MScComp, MScSWE students)

Description

The Eclipse Modelling Framework (EMF) [1] is a widely-used framework for defining and instantiating domain-specific modelling languages [2]. In EMF, domain-specific languages are captured using the Ecore metamodelling language [3], and models are persisted by default as XMI files (XMI being a dialect of XML). While XMI is platform-agnostic, there is little support for loading, processing and persisting XMI models outside the Java community.

The aim of this project is to provide support for loading, processing and persisting XMI models using JavaScript. This can be achieved either through reflection or through code generation as displayed in the following figure. Providing support for XMI models in JavaScript will enable XMI to be used on the client side of web applications (e.g. web-based model editors). The student will need to design and implement a working solution for managing XMI models with JavaScript. The completeness and correctness of the provided solution will be evaluated using a test set of existing XMI files which the solution should be able to load, process and persist correctly.

Prerequisites

A suitable candidate for this project should be familiar with the JavaScript programming language and with XML. Experience with Eclipse would be helpful but is not required.

References

dkolovos.3: Navigating Relational Databases as Object Graphs

(Suitable for CS, MEng, MScComp, MScSWE students)

Description

Relational databases are ubiquitous in the software industry. In a relational database, logical entities are represented as tables consisting of typed columns and relationships between entities are represented as foreign keys. Relational databases are typically queried and modified using the Structured Query Language (SQL) which is an efficient yet verbose language, particularly so when expressing queries that span across a number of tables [1].

Existing solutions for expressing queries on relational databases in a more concise and object-oriented manner either use a combination of annotations and reflection, or code generation. In both cases, the developer needs to either manually develop or generate at least one object oriented class for each table in the database.

The aim of this project is to experiment with an dynamically-typed object oriented scripting language (EOL [4]) in an lightweight querying and modification approach for interacting with relational databases which does not require developing or generating any new code on the developer's side.

EOL provides a pluggable architecture that enables it to query data sources of different types (e.g. XML documents, EMF models, CSV files) through the provision of technology-specific drivers that conform to a common interface (IModel - http://bit.ly/xAEtLJ). To enable EOL to query and navigate relational databases, the student will need to implement a lightweight JDBC driver for EOL. To evaluate the feasibility of using EOL for this purpose in practice, a set of benchmarks will be defined and the conciseness and performance of EOL will be compared with pure SQL and with widely-used object-relational mapping software such as Hibernate [3].

Prerequisites

The student should be familiar with Java. Previous experience with Eclipse and compiler construction tools (e.g. ANTLR [2], EMFText [3]) will be helpful but is not essential.

Resources

  • [1] Oege de Moor, Elnar Hajiyev and Mathieu Verbaere. Object-oriented queries over software systems. In proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, page 91, ACM Press, 2007.
  • [2] Daniel A. Keim and Hans-Peter Kriegel and Andreas Miethsam. Object-Oriented Querying of Existing Relational Databases. In Proc. Intl. Conference on Database and Expert Systems Applications (DEXA}, pages 325--336, 1993
  • [3] Hibernate ORM framework: http://www.hibernate.org/
  • [4] http://www.eclipse.org/gmt/epsilon/doc/eol

dkolovos.4 Towards an Efficient Model Persistence Format

(Suitable for CS, MEng, MScComp, MScSWE students)

Description

The Eclipse Modelling Framework (EMF) [1] is a widely-used framework for defining and instantiating domain-specific modelling languages [2]. In EMF, domain-specific languages are captured using the Ecore metamodelling language [3], and models are persisted by default as XMI files . XMI is an XML-based format, and as such in order to access any model element, the entire XMI file which contains it needs to be parsed and loaded in memory first. While this works well for models of the order of a few MBs, for larger models, this approach implies a significant startup loading time before model elements can be accessed and a large memory footprint (as all model elements are maintained in memory).

The aim of this project is to review related work on more efficient XML alternatives such as the Fast Infoset [4], Google Protocol buffers [5], EBML [6], EXI [7], Xebu [8] and then design and implement a more efficient model persistence format than XMI (possibly as an extension of an existing framework from [4]-[8]) that supports accessing model elements without needing to read the entire model file first. Such a format will trade some of speed of accessing model elements once the full model has been loaded in memory, for a reduced loading time and memory footprint. The efficiency of the new format will be evaluated using a test suite of existing XMI models and model queries.

Prerequisites

A suitable candidate for this project should have good knowledge of the Java programming language and strong object-oriented design skills. Experience with Eclipse would be helpful but is not required.

Resources

  • [1] Eclipse Modelling Framework: http://eclipse.org/modeling/emf/
  • [2] Dave Thomas, Brian M. Barry. Model driven development: the case for domain oriented programming. In Proceedings of OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications. Pages 2-7
  • [3] Reflective EMF tutorial: http://www.eclipse.org/gmt/epsilon/doc/articles/reflective-emf-tutorial/
  • [4] Fast Infoset Project: http://fi.java.net/
  • [5] Google Protocol Buffers:
  • [6] Extensible Binary Meta-Language: http://ebml.sourceforge.net/
  • [7] EXI: http://www.w3.org/TR/exi/
  • [8] Kangasharju J., Tarkoma S. and Lindholm T., Xebu: A Binary Format with Schema-Based Optimizations for XML Data. In Proceedings Web Information Systems Engineering, 2005
  • [9] Geer, D. Will binary XML speed network traffic?, IEEE Computer, Volume 38, Issue 4, 2005, pages 16-18
  • [10] Bayardo, R.J, Gruhl D, Josifovski V., Myllymaki J. An evaluation of binary xml encoding optimizations for fast stream based XML processing, In proceedings WWW'04.

dkolovos.5 EMF4PHP: An implementation of the Eclipse Modelling Framework in PHP

(Suitable for CS, MEng, MScIP, MScComp, MScSWE students)

Description

The Eclipse Modelling Framework (EMF) [1] is a widely-used framework for defining and instantiating domain-specific modelling languages [2]. In EMF, domain-specific languages are captured using the Ecore metamodelling language [3], and models are persisted by default as XMI files (XMI being a dialect of XML). While XMI is platform-agnostic, there is little support for loading, processing and persisting XMI models outside the Java community.

The aim of this project is to provide support for loading, processing and persisting XMI models using PHP. This can be achieved either through reflection or through code generation as displayed in the following figure. Providing support for XMI models in PHP will enable XMI to be used on the server side of web applications (e.g. web-based model editors). The student will need to design and implement a working solution for managing XMI models with PHP. The completeness and correctness of the provided solution will be evaluated using a test set of existing XMI files which the solution should be able to load, process and persist correctly.

Requirements

A suitable candidate for this project should be familiar with the PHP programming language and with XML. Experience with Eclipse would be helpful but is not required.

Resources

dkolovos.6 Automated development of graphical model editors

(Suitable for CS, MEng, MScIP, MScComp, MScSWE students)

Description

Implementing a traditional web application involves writing code in a number of languages such as HTML (for presentation), PHP (for server-side logic) and SQL (for data persistence and management). With the advent of Web 2.0, web applications also include a fair amount of JavaScript which moves some of the functionality to the client side in order to avoid complete page reloads and provide a better user experience. Implementing such web applications can be a time-consuming and error prone process as it involves duplicating a significant amount of code (e.g. a web application for managing todo lists is 80-90% similar to a web application for managing bibliographies).

The aim of this project is to automate the development of web 2.0 applications that support many users each of whom can create, manage and share a set of resources. To achieve this, the student needs to use a structured modelling/metadata language (e.g. WebML [1, 2], UML [3], XML) in which they can model the resources that the application needs to manage (e.g. notes with each note having a title and a due date / recipes with each recipe specifying a list of ingredients and cooking instructions), and then implement a code generator [4] that can generate the entire web application from such a model. In order for the generated applications to be customisable without needing to modify the generated code, the student will need to design extensibility facilities that will enable developers to customise the generated application in a non-invasive manner.

Requirements

The student should be familiar with Java. Previous experience with Eclipse would be helpful but is not required.

Resources

[1] Nathalie Moreno, Piero Fraternali, Antonio Vallecillo, WebML Modelling in UML. http://www.webml.org/webml/upload/ent5/1/IETJournal.pdf [2] http://www.webml.org/ [3] http://uml.org/ [2] Jack Herrington. Code Generation in Action. Manning, 2003, ISBN: 1930110979

dkolovos.7 Reflective Diagram-based Model Editing

(Suitable for CS, MEng, MScComp, MScSWE students)

Description

The Eclipse Modelling Framework (EMF) [1] is a widely-used framework for defining and instantiating domain-specific modelling languages [2]. GMF [3] is a framework for developing graphical editors for EMF-based modelling languages and Eugenia [4,5,6] is a tool that automates the construction of GMF editors. The aim of this project is to implement a generic reflective GMF-based editor that can be used to create and edit models conforming to any Ecore metamodel that is annotated with Eugenia annotations.

Prerequisites

A suitable candidate for this project should have good knowledge of the Java programming language and strong object-oriented design skills. Experience with Eclipse would be helpful but is not required.

Resources