Models are used in many different
fields. Researchers in physics,
chemistry, and molecular biology use
models to explore relationships between
atomic and molecular components of
systems. Economists and city planners use models to
analyze and predict the performance of complex
economic and social systems. Teachers use models as
an aid in explaining complex systems in a variety of
fields. Whether the model is a plastic replica of an
airplane, an exploded parts diagram in a book, or an
elaborate computer simulation model, the purpose of
the model is to convey an understanding of the
components that make up an object or a system and
the relationships between components.
Models can be useful in designing and analyzing the user interface of a computer system. Relationships between elements in the interface, the programming system that implements the elements, and the users of the interface can be described and analyzed by using models. Furthermore, a model of the interface can be implemented as a prototype to support iterative testing with users.
We use three models that are relevant to the design and implementation of a user interface. Each model provides a different perspective on the interface, beginning with the end user's perspective, and including the designer's perspective, and the implementing programmer's perspective.
In user interface design we use models to describe an interface in terms of objects, properties, behaviors, and relationships between objects. A model provides a framework for analysis, understanding, and decision making.
A model does not need to address every aspect and feature of a system. A level of detail adequate to understand relationships of interest, explain observations, and make design tradeoffs is sufficient. In some cases it may be desirable to use several different models with various levels of detail for the same system. One model might be adequate for a salesperson to explain the system to a prospective customer. Another model of the system might be needed to help develop specifications for subcontracted components.
A model must be accurate at whatever level of detail is chosen. Models must be under constant scrutiny and should be changed to reflect varying requirements and explain observed behaviors.
We have found it useful to consider three models during user interface design:
- The user's conceptual model represents what the user thinks is happening and why
- The user interface designer's model describes what the user is intended to experience
- The programmer's model describes implementation details
To illustrate the relationship between these three models, consider an analogy between the role of a user interface designer and an architect who is designing a house. These roles are similar in many respects because both of them require an understanding of all three models.
The user interface designer's role is to create a designer's model, or blueprint, of the user interface, just as an architect creates a blueprint of a house. To do this, the designer must:
- Understand the user's conceptual model. Just as an architect must understand a client's needs and expectations to design a house that pleases the client, the user interface designer needs to understand users, their tasks, and their expectations.
- Use accepted user interface design principles. Architects use basic principles that apply to housing design. A good architect knows the environment in which the house will be built with regard to temperature, weather, humidity, and other factors, and successful designs that have been used in that environment. Accordingly, the user interface designer needs to have a knowledge of accepted and proven principles in the field of user interface design.
- Understand the capabilities and limitations of the programming environment, and the skills of the programmers who will be implementing the interface. Just as an architect must know the strengths and weaknesses of building materials and the skills of the tradespeople who will build the house, user interface designers must understand the capabilities and restrictions of operating systems, file systems, window managers, programming toolkits, and other components used to implement the interface.