In a new development project, we start our analysis and modeling effort with making a conceptual information model. This type of model is also called domain model since it describes the entities of a given (real-world) problem domain, and does not model software entities.
Recall the conceptual information model for books obtained as the result of the inception phase:
Taking this conceptual model as a starting point, we have to make a number of design decisions for obtaining an information design model:
What are the ranges of the properties
Which property is the standard identifier (ID) attribute?
Which constraints should be defined?
Which methods/functions should be part of the design?
The result of this design phase is a design model like the following:
number, and we have added the methods
These “setter” methods are supposed to be used for setting a property to a
new value, instead of directly assigning the value to the property.
Having a setter method for each property is a best-practice approach that allows more control over property value assignments. For instance, we could check the validity of values before they are assigned, or we could notify other modules of the app about the assignment event.
In summary, the process of model-based development takes a conceptual model as the starting point for making a general (platform-independent) design model, from which one or more implementation models for a (set of) specific target technologies can be derived. Typically, they include a class model for an object-oriented programming language and a database model for an SQL DBMS. This process is illustrated by the following diagram: