Modelos de dominio como Diccionarios

La "domain model" visually represents the Who describing your product. The domain model is a dictionary that shows relationships between people and systems and abstract ideas. It offers a useful way to spot patterns, errors and omissions.

Domain models help you break-down ambiguity. They become the dictionary we use to express more complex ideas, such as workflows.

The domain model shows the ¿Quién of our new product; these are the physical and abstract nouns we identified in our stream of consciousness exercise.

[Technical note: Domain modeling is also used to represent relationships between classes in object-oriented programming. The domain modeling described here is a more general relationship between physical and abstract objects, which may or may not be represented as classes in the final code.]

We use a "Has A" relationship to show aggregation, that one part belongs to another; y, an "Is A" relationship to show generalization, that one part is a specialization of another. In this way, we can visually represent through boxes and lines the same information that is present in 10s of pages of writing. You will see these relationships in the diagrams below, donde "Has A" is represented by a diamond-ended line and "Is A" by an arrow.

Pencil and paper is the preferred way to create simple domain models if you are just starting out. As your needs become more sophisticated, specialized UML software such as Enterprise Architect from Sparx Systems becomes a useful (but over complex) tool.

Let's explore some examples using SOFIns, my most recent venture.

Simple Example

In my SOFIns service, un Control Agent is a piece of software that allows special access to remote computers. SOFIns is a complex software system. It is very important that I describe it using consistent terminology and that this terminology is easy to understand by my developers. Here is how one part of it works, written out in a mouthful:

La Usuario has a Control Agent. There are two types of Users: un Recipient and a Sender o Owner. La Recipient can have a Control Agent that is called a Foreign Agent. An Owner/Sender can have a Control Agent that is called a Shared Agent.


This same design can be represented visually through a symmetrical domain model that shows that Shared y Foreign agents are a specialization of a Control Agent and that Recipient, Owner and Sender are all specializations of a Usuario. Reading the model, we can see:

  • User has a Control Agent
  • Recipient is a User
  • Recipient has a Foreign Agent; y, Foreign Agent is a Control Agent.
SOFIns Domain Model for Agents and Users.

SOFIns Domain Model for Agents and Users.

What is simpler to understand, the textual representation of Users and Control Agents described in the yellow box above or an illustration that has symmetry? You may not understand the technical system I built, but you can identify the simpler representation of the same ¿Quién relationships.

Realistic Example

My SOFIns service is able to take control of a remote computer, even when that computer does not have an operating system installed or functioning hard disk drives. There are many parts involved in achieving this technical feat. It is very important that I describe Workflows using consistent, well defined terms. It is equally important that my developers understand these terms.

Here is how I defined the physical and abstract objects (la ¿Quién of my service). This diagram started as a simple relationship between four major components and evolved as more specialized objects were identified in the course of refining the workflows.

The diagram below is anything but ambiguous. Complex? Sí. Ambiguous, no.

SOFIns Subsystem Showing "Component A" Objects

SOFIns Subsystem Showing "Component A" Objects

October 30th, 2013 Publicado por Jon Jaroker Archivado en: DomainModeling, UML

Sé el primero en comentar. Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados *