models the system’s domain classes, its attributes,
relations and operations, and a functional or use case
model, which models the user’s intended operations
to be accomplished on the system through its user
interface. To test this core system model with the
users and other stakeholders it is needed a user
interface. There is some research on deriving user
interfaces from a model of the system core. In
(Martinez et al., 2002), Martínez et al. present a
methodology for deriving UIs from early
requirements existing in an organization’s business
process model. Their approach follows a set of
heuristics for extracting use cases and actors from
the business process model. Each use case’s normal
and exceptional scenarios are then specified using
message sequence charts enriched with UI related
information. These UI enriched sequence diagrams
are then used for automatically generating
application forms and state transition diagrams for
the interface objects and control objects present in
the sequence diagrams.
Elkoutbi et al. (Elkoutbi et al., 2006) also
approach UI generation by identifying usage
scenarios. Their approach starts from a system
domain structural model with OCL constraints and a
use case model, but proceed by formalizing each use
case through a set of UML collaboration diagrams,
each corresponding to a use case scenario. Then,
each collaboration diagram message is manually
labeled with UI constraints (inputData and
outputData) that identify the input and output
message parameters for the UI. From the UI
constraints it then automatically produces message
constraints with UI widget information. Statechart
diagrams are then derived from the UI labeled
collaboration diagrams on a per use case basis. A
statechart is created for each distinct class in a
collaboration diagram. Then, state labeling and
statechart integration are done incrementally, in
order to obtain only one statechart per collaboration
diagram, that is, per usage scenario. Elkoutbi’s
approach is then able to derive UI prototypes for
every interface object defined in the class diagram.
In (Nunes, 2001), Nunes uses activity diagrams
to represent all scenarios of a given use case in only
one model.
Other approaches to rapid prototyping, that allow
an early validation of the system model, involve the
construction of executable models using an action
language that allows to fully define the model’s
behavior. See, for instance (Luz and Silva, 2004).
The rapid adaptability of the system to the
changing requirements is approached, by (Yoder and
Johnson, 2002), through the separation of the
domain model, and the business rules and
constraints from the code, in a metadata layer. This
way, the system’s behavior changes only by
changing the object model (the metadata layer),
which is interpreted in runtime by an appropriate
running environment.
6 CONCLUSIONS AND FUTURE
WORK
An approach for interactive prototype generation has
been addressed in the paper, and a tool has been
developed for automatically applying that approach.
A software engineer effort, needed for generating an
interactive prototype, with the presented tool, is the
same effort that is necessary for producing an early
system domain model. So, minimal effort is put into
producing the system domain model and the
interactive prototype.
One purpose of the generated prototype may be
to validate the early system model, by creating and
maintaining instances of the domain classes. This is
not new, as the Eclipse Modeling Framework also
accomplishes this purpose. What is new is the
possibility of being the final user, or other
stakeholder, to use the prototype, because it is form-
based and close to what he/she expects to see in the
final software product.
The current prototype generator only produces
CRUD operations for each class, relying on
primitive object manipulation operations. The next
step will be to support also user defined methods
and generate the appropriate mechanisms in the user
interface to call those methods. In an initial stage of
domain modeling, these methods typically represent
important business transactions (or services or use
cases), such as, lend a book copy and return a book
copy. The form generated for a given class will
have a call button for each method defined. This
button will give access to a form with the structure
of the input method parameters (if any exist), and a
confirmation button that executes the method and
gives access to a second form with the structure of
the output method parameters (if any exist). Non
persistent classes may be added to the domain model
to define the input and output parameters. To be
able to execute a method, its behavior will have to
be specified in some implicit (through the constraint
language) or explicit form (through an action
language).
Other future developments include handling
inter-object constraints (multiplicity constraints,
AUTOMATIC GENERATION OF INTERACTIVE PROTOTYPES FOR DOMAIN MODEL VALIDATION
211