3: Design

You have been asked to write a piece of software to manage a small fitness center. You receive the following short vision statement:

Entry in to the fitness center is members-only. Memberships can be bought for a month, 6 months or a year at a time. There are two kinds of membership: a basic membership that allows access to all of the facilities including the weight room, climbing wall, and pool, and a premium membership which, in addition to all the facilities provided by the basic membership, gives you 5 free appointments with a personal trainer per month. Of course, basic members and premium members who want more than 5 appointments can pay a small fee to get personal training appointments. A member can switch from basic to premium membership by paying a pro-rated membership fee. Switching from premium to basic is allowed only during renewal.

The fitness center needs to be able to keep track of customers and their memberships including historical information. The center also needs to keep track of personal trainer appointments so as to avoid double-booking.

The software must allow the center to update the pricing of the memberships. The change should not affect the current memberships until it is renewed.

  1. (10 Points) As a warm up, write out a feature list for this application by extracting feature bullets from the above.
  2. (10 points) Now, add four features you think are useful/important for such a fitness center to function well but are not explicitly mentioned in the above description.
  3. (10 points) One method for finding classes and methods to put in a class diagram is to take an English description (like the above) and find nouns which could be useful as classes, and verbs which could be useful as methods on classes. This is called "textual analysis". It is in the design lecture notes but the professor forgot to cover it this year. In any case it's a very simple idea.

    For this question make two lists, one of nouns and the other of verbs (or verb phrases) from the above which are reasonable candidate class and methods names. Don't be completely brainless in your lists of nouns and verbs, for example merge synonyms, there may be noun/verb phrases as opposed to single nouns/verbs, etc.

  4. (20 Points) Draw a UML class diagram which serves as a domain model of the above application (including your new features from question 2). Follow the lecture guidelines on which UML syntax features you should use: associations, multiplicities (0..n, 2, *, etc), whole-part (diamond) annotations, inheritance and also include important fields and methods in the class box. Make sure to verify your UML class diagram syntax to avoid point losses.
  5. (5 points) Comment briefly on how helpful the textual analysis of question 3 was for your diagram in question 4. Just give your opinion to harvest the full 5 points.