Dr. AndreaBaruzzo

Academic homepage

Teaching - Thesis projects

Several software engineering projects are available for Bachelor/Master's Thesis. Most of them are generally related to the design and development of a computer-aided modeling framework for the automatic analysis of UML models, which is called UMLaid (described below). However, student can propose their own ideas for a software engineering project. Every project proposal should clarify at least the motivation of the work, the objectives, and the (functional) requirements. Technologies can be choosen later.



UMLaid is a general framework aimed at assisting the software designer to improve his working experience with UML modeling. Thus it combines several tools conceived to assist the user performing a specific task (evaluate the quality of a diagram, test the model, recognize some patterns, etc.).
The list of modules provided below is only an example of the possible components that can be integrated in UMLaid. Every module can be the subject of a thesis project.

  • UMLpatterns
  • - A tool that recognizes if a particular pattern has been used in a UML model.
  • UMLcritics
  • - A tool that automatically analyzes the UML model in order to identify possible design flaws.
  • UMLmetrics
  • - A tool that evaluate the UML model according to some metrics (e.g. testability metrics).
  • UMLlayout
  • - A tool aimed at providing a family of layout algorithms focused to rearrange the layout of a diagram (e.g. to emphasize layering).
  • UMLtest
  • - A tool that automatically generates test cases from a (set of) UML diagrams.
  • UMLmda
  • - A tool that provides the support for the Model-Driven Architecture (MDA) vision, e.g. implementing the stack of models (PIM, PSM, code, ...) and their transformations.
  • UMLRevenge
  • - A reverse engineering tool which takes in input the source code files (C++/Java/C#/...) of an application and automatically build the corresponding UML model.
  • UMLcontract
  • - A tool capable of automatically verify the correctness and consistency of a UML model, correlating the different types of diagrams with their contracts (in the spirit of the Design by Contract approach).



The proposed Software Engineering projects are not only implementation-oriented works within larger research projects. The methodology is also very important, as stressed during the course lessons. Hence, students are required to document what and when things are done. More in particular, they should clearly state the project objectives, identifying requirements, document technical specifications and develop a UML model for the software they implement.


Environments and tools

Students should have at least a minimal knowledge of UML (especially for use cases, classes, states, and interactions) because they will use the core notation to produce both the design and the documentation of the assigned project.
Concerning the implementation, they can choose the programming language they prefer. However, to simplify some implementations task (e.g. building the UML editor), it is possible to create add-ons (or plug-ins) of existing UML CASE Tools (obviously such tools must be either open source projects or extendible tools with a documented SDK, such as Sparx Enterprise Architect). In the latter case, a preference for programming language selection is the Microsoft .NET platform. To have an idea of possible language alternatives, check this (partial) list of .NET compliant languages.