=Paper=
{{Paper
|id=Vol-365/paper-15
|storemode=property
|title=A UML Profile for Modeling Framework-based Web Information Systems
|pdfUrl=https://ceur-ws.org/Vol-365/paper15.pdf
|volume=Vol-365
|dblpUrl=https://dblp.org/rec/conf/emmsad/SouzaFG07
}}
==A UML Profile for Modeling Framework-based Web Information Systems==
A UML Profile for Modeling Frameworkbased Web
Information Systems
Vítor Estêvão Silva Souza1, Ricardo de Almeida Falbo1, Giancarlo Guizzardi1,2
1
Universidade Federal do Espírito Santo, Av. Fernando Ferrari, 514
29075910 Vitória – ES, Brazil
2
Laboratory for Applied Ontology, Polo Tecnologico, Via Solteri, 38
38100 Trento, Italy
vitorsouza@gmail.com, falbo@inf.ufes.br, guizzardi@loacnr.it
Abstract. The rapid evolution of the area of Web Engineering has motivated the
proposal of several methods and frameworks for the development of Web
Information Systems (WISs). In particular, it is becoming more and more
common to use containerbased architectures and frameworks when it comes to
their development. Following this idea, we have proposed a method for
designing frameworkbased WISs, called FrameWeb. and, in this paper, we
present FrameWeb's UML profile for modeling framework components in
design models.
Keywords: Web Engineering, Web Information Systems, Frameworks,
Modeling Language, UML profile.
1 Introduction
Web Engineering (WebE) can be defined as “the establishment and use of engineering
principles and disciplined approaches to the development, deployment and
maintenance of Webbased Applications” [1]. What started with the adhoc
development of simple web pages now congregates many methods for the design of
Web Information Systems (WISs), such as WAE [2] and OOWS [3].
Also, new technologies for coding WISs have rapidly evolved. Frameworks for the
solution of infrastructure issues were developed and entire architectures providing
containers for user components became standards. For example, the most recent
version of Java EE [4] borrows many concepts from existing frameworks. These
technologies provide a large code base that can be reused, improving productivity.
This scenario motivated the proposition of FrameWeb [5]: a FrameworkBased
Design Method for Web Engineering. FrameWeb proposes a basic architecture for
developing WISs and a UML profile for a set of design models that brings concepts
used by some categories of frameworks. The use of FrameWeb can further improve
team productivity by allowing designers to produce diagrams that represent
framework concepts, and developers (maybe, in the future, CASE tools) to quickly
and directly translate these diagrams to code.
The objective of this paper is to present FrameWeb's modeling profile. It is
organized as follows: section 2 talks about the area of Web Engineering and what has
motivated the authors for the creation of this UML profile. This section also
summarizes the key points of FrameWeb's design method. Section 3 details
FrameWeb's modeling profile, which is the focus of this paper; section 4 compares
FrameWeb's profile to others; finally, section 5 concludes and lists future work.
2 Web Engineering
Web sites evolved from static pages to complex information systems. In this process,
many frameworks (artifacts of code that provide components ready for reuse by
inheritance, composition or configuration) were created to help Web developers speed
up the development of Web applications.
These frameworks substantially change the kind of components that are built
during coding. Classes that inherit from other classes in the framework, configuration
files and others are now source code artifacts that must be written by developers. In
particular, three kinds of frameworks have the most impact on this change: Front
Controller, Object/Relational Mapping and Dependency Injection frameworks.
Front Controller [6] frameworks, also known as MVC frameworks for being based
on the wellknown ModelViewController architectural pattern [7], separate the
functionality of a WebApp from its presentation. With proper configuration, the
developer is given the task of creating action classes that will respond to client
requests and redirect the response to a user interface (UI) component. In FrameWeb,
action classes, UI components and their interaction (which guides the configuration of
the framework) are modeled in the Navigation Model, presented in section 3.3.
Object/Relational Mapping (ORM) frameworks provide automatic and transparent
persistence of objects to tables of a Relational Database, using metadata that describe
the mapping between both worlds [8]. A mapping is written for each persistent class
and the ORM framework does the rest of the job. In FrameWeb, these mappings are
presented in the Domain Model (section 3.1), while the classes that perform the
persistence are modeled in the Persistence Model (section 3.2).
Dependency Injection (DI) frameworks allow the developer to program to
interfaces [9, 7] and specify the concrete dependencies in a configuration file. The
idea is that classes that depend on services from different tiers would declare an
association with an interface instead of the concrete implementation. This facilitates,
for instance, the replacement of the real service class with a mock object for unit
testing. When an object is created, the DI framework wires all required dependencies
automatically, based on a configuration file. In FrameWeb, the dependency relations
between different tiers are represented in the Application Model (section 3.4).
A detailed description of these and other kinds of frameworks can be found at [5].
Our personal experience with the use of frameworks for the construction of WISs
has motivated the proposal of the FrameworkBased Design Method for Web
Engineering (FrameWeb) [5]. The method has two main propositions:
A standard architecture for WISs that integrates with the frameworks
described earlier by separating their concerns into different packages;
A UML profile suited for the construction of four kinds of design models
that represent framework components from different packages: Domain
Model, Persistence Model, Navigation Model and Application Model.
FrameWeb's standard architecture separates different frameworks concerns into
three layers. At the Presentation layer (View and Controller packages), UI
components and action classes integrate with the Front Controller framework, calling
services from a Business layer, which contains service classes (Application
package) and domain classes (Domain package). The latter, in turn, are mapped by
the ORM framework and persisted by classes that belong to the Data Access layer
(Persistence package). Class dependencies that cross a layer's boundaries are
taken care of by the DI framework.
For a detailed description of the method, the interested reader should refer to [5]. In
the next section, we focus on FrameWeb's modeling profile, used during design to
produce diagrams that depict coding artifacts that belong to these different layers.
3 FrameWeb's Modeling Profile
To model classes and other components, FrameWeb defines a UML profile using
standard extension mechanisms for designing four different kinds of diagrams during
system design: Domain Model, Persistence Model, Navigation Model and Application
Model. All of them are based on UML's class diagram, but represent components
from different layers that integrate with different frameworks.
Throughout the next subsections we detail these four models using as examples
diagrams produced for a collaborative learning environment called JSchool 1,
developed by the local Java User Group2 using FrameWeb. JSchool contains a core
subsystem, which is responsible for user registration, login, system configuration and
allowing users to send messages to the administrators and view other users' profiles.
JSchool also includes a group module, which contains features for creating, managing,
searching, joining and participating in groups.
Figure 1 shows the conceptual model for the core and group modules.
Collaborators are registered with name, email, password, institution, contact
information and picture. Groups have names, descriptions, keywords and
configurations such as if the group is open or public. Other classes complement these
two, representing invitations to participate in a group, confirmation of a user's email
address, a user membership and role in a group and requests from a user to create a
group or participate in a group.
1 http://jschool.dev.java.net
2 Espírito Santo Java User Group (ESJUG) – http://esjug.dev.java.net
Fig. 1. Conceptual model for the core and group modules of JSchool.
3.1 Domain Model
The Domain Model is a UML class diagram that represents classes of objects from
the problem domain and their Object/Relational (OR) mappings. This diagram should
be used by developers to guide the codification of classes from the Domain package.
Designers should use the conceptual model built during Requirement Analysis and
add platformspecific details and the OR mappings. Platformspecific details include
attribute types, association navigabilities, etc. The OR mappings will guide the
developers on how to configure the ORM framework to persist these entities.
Although this configuration is more related to persistence, it is represented in the
Domain Model because the classes that should be mapped and their attributes are
represented in this diagram.
Table 1 describes some possible OR mappings for the Domain Model. For each
mapping, the table presents which lightweight extension mechanism was used and
what are the possible values or syntax for its use. None of the mappings are
mandatory and most of them have sensible defaults in order to lessen the amount of
information on the model. These default values are shown in the possible values
column in boldface or in parenthesis.
The Domain Model for the core and group modules of JSchool is shown in figure
2. According to the default values, all classes are persistent and class and attribute
names are used as table and column names respectively. None of the classes have ID
or version attributes because they are inherited from a utility package.
Attributes have received mappings such as nullability and size. Date attributes such
as invitationDate, entryDate and requestDate were mapped as dateonly
precision, while the remaining dates will be stored as timestamps. All three
collections (navigable association endings with multiplicity “many”) were configured
to be sorted naturally (will be implemented in the programming language, Java), to be
fetched lazily (only when used for the first time) and to cascade all operations (e.g. if
a group is deleted, all of its subgroups are automatically deleted).
Table 1. Possible OR mappings for the Domain Model.
Mapping Extension Possible Values
If the class is persistent, transient or mapped (not <>
Class
persistent itself, but its properties are persistent if <>
stereotype
another class inherits them) <>
Name of the table in which objects of a class will be Class table=name
persisted constraint (default: class' name)
Attribute <>
If an attribute is persistent or transient
stereotype <>
Attribute null
If an attribute can be null when the object is persisted
constraint not null
Date/time precision: store only the date, only the time Attribute precision = (date |
or both (timestamp) constraint time | timestamp )
Attribute
If the attribute is the primarykey of the table <>
stereotype
How the ID attribute should be generated: generation = ( auto |
Attribute
automatically, obtained in a table, use of IDENTITY table | identity |
constraint
column, use of SEQUENCE column or none sequence | none )
column=name
Name of the column in which an attribute will be Attribute
(defaults to the
persisted constraint
attribute's name)
Size of the column in which an attribute will be Attribute
size=value
persisted constraint
Inheritance mapping strategy: one table for each class <>
Inheritance
using UNION, one table for each class using JOIN or <>
stereotype
single table for the entire hierarchy <>
Type of collection which implements the association: Association collection = ( bag |
bag, list, set or map constraint list | set | map )
Order of an association's collection: natural ordering order = ( natural |
Association
(implemented in code) or order by columns column names [asc |
constraint
(ascending or descending) desc] )
cascade = ( none |
Cascading of operations through the association: Association
persist | merge |
nothing, persists, merges, deletions, refreshs or all constraint
remove | refresh | all )
Association fetch = ( lazy |
Association fetching strategy: lazy or eager.
constraint eager )
Fig. 2. Domain Model for the core and group modules of JSchool.
3.2 Persistence Model
FrameWeb indicates the use of the Data Access Object (DAO) pattern [6] for the
construction of the Data Access layer. The Persistence Model is a UML class diagram
that represents the DAO classes responsible for the persistence of domain objects.
This diagram is used by developers for codifying classes from the Persistence
package.
For each domain class that needs to be persisted, the Persistence Model should
present one DAO interface and one or more DAO classes, meaning that different
persistence technologies can be implemented in the same system. Base DAO interface
and implementation can be presented to reduce the amount of diagram elements in the
Model: all DAO interfaces/classes automatically extend the base DAO interface/class,
without the need to explicitly show it. Implementing common methods such as
save(), delete() and retrieveById() in the base DAO can reduce the amount of
modeling that has to be done.
Besides those basic methods, DAOs should also have methods to retrieve objects
using specific queries. Also, it is assumed that the interface declares all methods
presented by the DAO class to relief the designer of repeating them on the diagram.
Thus, basically the Persistence Model represents the “query methods” and does not
require any UML extension for such a task. For instance, to authenticate a
collaborator's password we need to retrieve the collaborator object given his/her email.
Therefore, the method retrieveByEmail(email: String) : Collaborator is
modeled for the CollaboratorDAO implementation.
3.3 Navigation Model
The Navigation Model is a UML class diagram that represents the different
components that form the Presentation Logic tier, such as Web pages, HTML forms
and action classes. Table 2 shows the stereotypes used by the different components
that can be represented in a Navigation Model. This model is used by developers to
guide the codification of classes from the View and Controller packages.
Table 2. Stereotypes for classes in the Navigational Model
Stereotype What it represents
none An action class. Class to which the Front Controller framework delegates
the action execution.
<> A static or dynamic Web page.
<> A template of a Web page. The templates are processed by a template
engine that returns an HTML output for the browser.
<