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