Although state-of-the-art software engineering techniques provides tools that are suitable for high-quality software development, an obstacle to their application is the difference between the operating system in which software has to operate (in which keywords are "actors", "responsibilities", "aims", and "goals") and the system, which is a collection of software modules, data structures, and interfaces.

As a result, the analysis, specification, and development are complex and therefore often delegated to few experts, who, thanks to their experience on the field, are able to map high-level abstract concepts (such as "actor", "role", and "goal") into appropriate software modules; this is done using also advanced methodologies and progressive refinements. This requires high indirect costs for training or for hiring of experienced people, as well as costs due to additional activities such as documentation.

Such costs are often problematic, expecially for small-size and medium-size enterprises, where the shortage of resources does not allow for such investments, and the high level of competition (for example, for applications on the Web, or e-commerce and e-bossiness) forces a decrease of the time to market of the products.

Such problems lead to the lack (or insufficient) of application of the correct methodologies for software development, resulting in a quality loss, and a lack of certification. Even neglecting the intrinsic hardness of software development (which is only partly attenuated by software engineering methodologies anyway), if the developed software has to satisfy the client's needs, what results is a fragile product, which is also hard to modify due to the obscurity of the correspondence between the initial specification and the finalized product.

The aim of this project is to make precise software engineering techniques and methodologies usable for every enterprise, even those of small or medium size. This way, a larger set of developers will be able to realize high-quality certifiable software with a short time to market, and with limited costs.

Such aim will be reached by means of:

  1. the development of a methodology that includes both a model of the operating system in which the final product has to run, and a model of the environment, with high-level concepts such has "actors", "roles", and "goal". Such a methodology would closely relate the initial specification and the final product. This aspect of the methodology will be referred to as "knowledge level software engineering";
  2. the automatization (as far as possible) of the process of progressive refinements and therefore of the transition from the initial steps of development (early and late requirement engineering) to the most advanced ones (design, implementation, and test). This way, the time and effort of the development team would be reduced. Modification and maintenance would also be made easier. This aspect of the methodology will be referred to as automated software engineering.

The project is organized in the following kinds of activities.


ResearchWP1 - Methodology and processWP2 - Specification and analysisWP3 - Verification and ValidationWP4 - Automated planningWP5 - Natural languageWP6 - Analysis and testingWP7 - ToolWP8 - Case study