Since June 2000, I work in research projects related to Web Engineering. Web Engineering is the scientific discipline devoted to the study of methods, models, languages, and processes for the development of Web applications.
The Web Modelling Language (WebML) is a visual notation for specifying the composition and navigation features of hypertext applications.
WebML provides graphical, yet formal, specifications, embodied in a complete design process, which can be assisted by visual design tools. The main objectives of the WebML design process are:
- expressing the structure of a Web application with a high-level description, which can be used for querying, evolution, and maintenance;
- providing multiple views of the same content;
- separating the information content from its composition into pages, navigation, and presentation, which can be defined and evolved independently;
- storing the meta-information collected during the design process within a repository, which can be used during the lifetime of the application for dynamically generating Web pages;
- modelling users and communities explicitly in the repository, to permit the specification of personalization policies and one-to-one applications;
- enabling the specification of data manipulation operations for updating the site content or interacting with arbitrary external services.
WebML is patented by Politecnico di Milano, but can be used freely.
The WebML modeling language and its accompanying design method are currently implemented in a commercial Web design tool suite, called WebRatio.
With respect to the WebML development process, WebRatio covers the phases of data design and hypertext design, and supports implementation by automating the production of the relational database and of the application page templates.
Thanks to the automatic generation of J2EE code, the tool can be used for fast-prototyping, thus shortening the requirements validation cycle. Differently from traditional prototyping tools, which generate application mock-ups, the WebRatio code generator produces application modules running on state-of-the-art architectures, and can be used for implementation, maintenance, and evolution.