DS5: Domain Modeling Design Studio
10 points
October 21, 2016


This design studio helps you get started with creating a domain model. Such a model helps to understand a problem domain in terms of its structure (i.e., the concepts that exist in the problem and their relationships and constraints). Domain models also play a role in providing a rational behind an epic and also to modify epics.

1. Preparatory task

Read the slides on domain models and pay attention to the partial domain model created for the point-of-sale problem (slide 11). With your team or individually, determine whether you would have used other concepts (classes) and/or associations, or related the provided classes in different ways (e.g., with other associations and/or multiplicities).

2. In-class tasks

You will work on the tasks as a team. You will write your answers on an answer sheet that we will provide to each team. There will be one submission per team. Make sure you write the names of participants on the sheet before submission. To get a grade, you must submit the sheet at the end of class.

  1. Read the following description:

    The department of transportation in our city has decided to develop a web-based pothole tracking and repair system. Citizens can log onto a web-site and report the location and severity of potholes. As potholes are reported, they are logged within the system and are assigned an identifying number, stored by street address, size (on a scale of 1 to 10), location (middle, curb, etc), district (determined from street address), and repair priority (determined from the size of the pothole). Work order data are associated with each pothole and include pothole location and size, repair crew identifying number, number of people on a crew, equipment assigned, hours applied to repair, hole status (work in progress, repaired, temporary repair, not repaired), amount of filler material used, and cost of repair (computed from hours applied, number of people, material, and equipment used). Finally, a damage file is created to hold information about reported damage due to the pothole and includes the citizen's name, address, phone number, type of damage, and dollar amount of damage. The system is web-based and all queries need to be made interactively.

  2. Highlight all the nouns in the above paragraph.

  3. In the answer sheet list the nouns in the problem statement that refer to the problem domain separately from the ones that refer to elements in the solution domain. Note that a domain model should not reflect solution concepts.

    For example, pothole, size, web-site, and system are all nouns. However, pothole and size refer to the problem domain and web-site and system are in the solution domain.

  4. In the answer sheet, list the nouns from the problem domain that should be treated as classes and those that are to be treated as attributes. For example, pothole is a domain class, and size can be treated as an attribute of pothole.

  5. Highlight all the verbs in the above paragraph.

  6. In the answer sheet, list the verbs that may be methods, and thus do not need to be treated as domain classes. Also note that a domain model does not show operations inside any class. An example of such a verb is used in "filler material used".

  7. However some verbs may be treated as classes because they result in the retention of state information that you do care about. An example of such a verb is reported because it results in a "report", which is a useful domain class to have for this application. In the answer sheet, list such verbs and the classes corresponding to these verbs.

  8. In the answer sheet, create a domain model showing the classes and attributes along with useful associations between appropriate classes. Each association should represent information that we care about the relationship between the classes. The associations must have a useful name (i.e., not something like "has"), and multiplicities at each of the two ends.