This section describes the modeling elements needed to capture presentation
requirements for a system specification. This same model is also used
to formally model the content of user interface design patterns.
Modeling
Presentation Requirements
In principal it would be very nice to capture every detail of an abstract
user interface design as a part of the software specification. In practice,
this is just too tedious, at least with current tool support and is
rarely done. Instead, the goal is to capture the requirements at the
level of Primary Tasks and Secondary Tasks.
This means the model needs to have a place to put these requirements.
The ETP architecture marks presentation-related elements as Presenters.
This user model introduces Primary Presenter and Secondary
Presenter, specializations of Presenter, to
fill this need.
This part of the model is deceptively simple. For each Primary Task
there will be a single corresponding Primary Presenter. Similarly, for
each Secondary Task there will be a corresponding Secondary Presenter.
The instances of Primary Task and Second Taskcreated to reflect
the Scenario or Scenarios that define themrepresent the entities,
attributes, and relationships that must be presented in order to complete
the task. These Task instances also define the Actions that must be
available within their corresponding Presenters. The corresponding instances
of Primary Presenter and Secondary Presenter are used to define whatever
additional presentation requirements are known.
A concrete example might help. Let's say we are modeling a task that
requires a presentation of an organization's structure. If the organization
is structured as in our metamodel, we could conclude that the presentation
requirement was to display the decomposition of an organization into
the hierarchy of contained organizations and members of each organization.
Depending on the task, we might or might not have a requirement to graphically
render multiple membership of members into organizations using either
a network graph or a hierarchical graph with notationsthat choice
comes a bit later in the process.
The remaining step, as described in the ETP architecture section, is
to go through the list of Presenters and cull out duplicates or near
duplicatesnot only saving development resource but saving the
user the overhead of dealing with multiple units of presentation that
do essentially the same thing.
When complete, this model of presentation includes a description of
the functionality that must be supportedthe Primary Tasks and
Secondary Tasks, the function points that must be supportedthe
Actions, and the rough number and complexity of Primary Presenters and
Secondary Presenters. The complexity of presentation is expressed as
the description of the entities, attributes and relationships that must
be displayedas derived from the Task instancesand the description
of how to display themas derived from the Presenter instances.
This should be sufficient for the purposes of sizing and of assigning
content to development iterations.
One final aspect of presentation description which is not handled during
requirements definition is an understanding of the mapping of individual
presentation elements onto the domain model. Because this is so closely
allied with knowledge of the domain it is the responsibility of the
Tasksthough this mapping is thought of as application logic in
older terminology. As shown in the diagram below, a special kind of
Task called an Aspect Adapter can be used to set up this mapping. Typically,
this mapping is known by the Primary or Secondary Tasks which are capable
of setting up a tree of Aspect Adaptors in order to correctly extract
and update domain values based on changes in the domain or changes in
selection or value in the presentation. Though this is really more an
issue for design and developmentand framework designit is
raised here because this mapping from task to domain is an integral
part of the users' domain and, therefore, of our model.
Modeling
UI Design Patterns
Many kinds of UI design patterns can be described. There are patterns
that express canonical configurations of widgets to support certain
kinds of tasks. There are also design patterns for tasks. The notion
of Primary Task or Secondary Task, for example, are themselves design
patterns as are the ways in which these patterns can be surfaced in
the design of user interface navigation. These patterns are the basis
of discussion for the Patterns topic
area. The discussion in this section concerns the modeling elements
needed to support this discussion of user interface design patterns.
All of the modeling elements we have discussed are part of a language
of user and user interface description. When describing user interface
design patterns, constructs like Scenario take on less importance. This
is because design patterns are all about the semantics of design, not
the procedural content.
User interface design pattern discussions focus on the semantics of
presentation including what is being presented (entities, relationships,
and attributes) as well as what the presentation supports (tasks). The
presentation itself needs to be described in more detail than we have
yet used.
Visual Formalisms
The main element missing from our discussion so far is the notion of
a Visual Formalism. A visual formalism [see
Nardi and Zharmer 1993
]
is simply a visual interaction language that is equivalent to a command
languagesometimes known as a macro language. Nardi and her colleauges
were inspired by spreadsheet applications and the ways in which they
tend to be used. Spreadsheets provide a rich direct manipulation interface
that is often mirrored by an equivalent command language. Among other
things, they obsreved that the command language imposed a consistency
and completeness of interaction on the visual language. Though they
were interested in the implications of mirroring the visual language
with the command language, they introduced the notion that visual interaction
mechanisms need to cohere as a language as well.
This concept of Visual Formalism can be extended to all of our familiar
interaction mechanisms. Approaches such as forms, trees, tablesin
a sense, a specialized version of a spreadsheet, network graphs, composed
documents, and maps are all examples of visual formalisms. These all
correspond to user interface design patterns.
So, what is needed is a way of describing visual formalisms, the pieces
that make up a formalism, and the mapping of these pieces to a user
domain in the form of a concept model. In the class diagram, below,
the modeling elements Visual Formalism and Formalism
Element are used to represent a formalism and its component
pieces, respectively. Any formalism can now be modeled as a specialization
of Visual Formalism with specializations of Formalism Element for each
type of presentation element that formalism supports.
Substantial examples of models of Visual Formalisms will be found in
the Patterns topic area. For now,
we do have one very lightweight example of a Visual Formalism in the
way we have modeled Primary Presenter and Secondary Presenter.
A Primary Presenter is a unit of presentation that provides an independent
unit of interaction to the user. It can contain any other Visual Formalism.
It organizes access to Actions via various Menuswhere Menu is
one of the Formalism Element specializations peculiar to Primary Presenter
and is itself a formalism. The Primary Presenter is responsible for
visually containing the state of the task including persistence in the
system and visibility to other users. Depending on the implementation
of this formalism (Windows® and the Macintosh® are but two)
there can be variations in the details behind these mechanisms but the
essential behavior remainsjust as there are many spreadsheet implementations
but really only one visual formalism albeit with variations.
The
figure below shows a UML diagram modeling the presentation needed to
solve a task. This same metamodel supports both domain (requirements)
modeling as well as UI design pattern modeling.
Figure:
a UML class diagram, over 650 pixels wideclick here to open it
in a separate window.
©2002, 2003 John M. Artim