Object

I define an object as anything that I can perceive or conceive. In requirements engineering, I mean an individual item with identity. Moreover, I mean an item that has attributes. In addition, I mean an item that does not depend on another item. Therefore, I treat an object as an entity the system may use.

First, I distinguish object from class. A class is a template. Then, an object is an instance of that template. For example, I model the class person. Next, I create objects such as Peter Schulz and Sally Brown. In this way, the class shows common properties. Consequently, the objects show specific values for those properties. Also, I name classes in the singular. For example, I write “person” rather than “persons”. This keeps names clear.

Second, I give objects unique identities. Thus, I add a unique identifier. For example, I give a car a unique ID. Moreover, I use attribute combinations to ensure uniqueness. For instance, I might use first name, last name, and date of birth to identify a person. If two persons share a name, then the date of birth makes them distinct. Therefore, I always check that the combination of attribute values differs between objects of the same class.

Third, I model attributes. Attributes hold values such as text, dates, or numbers. For example, an application status attribute may have the value “approved”. However, I avoid treating the class itself as having that value. Instead, I assign the value to an attribute of the class. Thus, I keep semantics consistent.

Fourth, I use relationships and associations. Associations connect two classes or objects. In addition, they carry information such as multiplicity and role. For example, I state that one person may have one residence address and one correspondence address. Also, I may allow an address to relate to several people. Therefore, I add multiplicities to each association end. Consequently, I can navigate the information model. As a result, I derive precise functional requirements. For example, instead of “Show address” I write “Show the correspondence address of the person who is the contact for the company.” This gives context and reduces ambiguity.

Fifth, I handle class-versus-attribute decisions. If I doubt whether a term should be a class or an attribute, then I model it first as a class. Then, I refine the model. Conversely, if the term represents simple, unstructured data, then I model it as an attribute. For example, an address often appears as a class when I need structure and relationships. Meanwhile, a simple status code may remain an attribute.

Moreover, I represent classes visually as rectangles. Then, I add attributes inside the rectangle. Next, I attach associations and multiplicities. Thus, I form clear class diagrams for requirements modeling.

Finally, I remember that business objects exist in the real world. Therefore, the system uses them as input, to persist, and to produce output. As a result, I document objects, their attributes, and their relationships. In short, I treat objects as identifiable, attribute-bearing, independent items that the system must know, handle, and trace. Consequently, my models become precise, navigable, and useful for deriving requirements

Scroll to Top
WordPress Cookie Plugin by Real Cookie Banner