The use cases we have written in the previous article are the basis to identify the conceptual classes and to draw the domain model of our application. To identify the conceptual classes we will use “Noun Phrase Identification”, i.e. each noun is considered to be a candidate for a conceptual class (with some experience you can skip this step).
If we look at the first use case “Creating a project”:
The user choses to create a new project, enters the project information, and the system creates the project.
we get the following nouns:
- project information
The first two nouns are conceptual classes. The third noun sounds like it is an attribute of the “project” class, even though the term “information” is a bit too general. The last noun, “system” refers to the application we want to build and is therefore no conceptual class.
If we apply this approach to the other use cases we find two additional conceptual classes: message and feed.
The next step is to define the associations between those classes. We can do that textually or visually by drawing a UML diagram. I prefer the latter, as it is more clear. But first the textual version:
- A User has many Feeds
- A User has many Projects
- A User subscribes to many Projects
- A Feed belongs to a User
- A project belongs to a User
- A project is subscribed by many Users
- A Project has many Messages
- A Message belongs to a Project
And here the same as UML diagram (created with JUDE, but personally I prefer to use pen and paper as it is the fastest way to create an UML diagram):
Up to now it doesn’t matter which technology we will use to realize the application, as all steps were technology-neutral. But this will change next week when we will setup the database and start programming.