Doug Bennett (client / user)
Kevin Johnson (moderator)
Gail E. Harris
(reporter)
Paul Chisholm
(designer)
(designer)
(designer)
(designer)
This document reproduces the charts the team prepared for the Thursday session. It also contains some additional comments from the reporter from notes taken during the Design Fest. For background information on the problem please refer to the Problem description.
The Problem
Produce
Category Store
Category Membership
Category Inventory
Category Accounting
Please refer to the Problem Description for details about the change cases.
|
Responsibilities |
Collaborators |
|---|---|
|
due date |
Member |
|
rental transaction |
Rental Copy |
|
rental date |
Store |
|
late transaction |
Transaction (many to many) |
|
rewind fee transaction |
|
|
damage/replace transaction |
|
Responsibilities |
Collaborators |
|---|---|
|
record price |
Policy |
|
adjust due date |
|
Responsibilities |
Collaborators |
|---|---|
|
checked out status |
Active Rental |
|
ID (Bar Code) |
Rental Item |
|
Home store |
|
|
Current Store |
|
|
Purchase Date |
|
|
Purchase Cost |
|
Responsibilities |
Collaborators |
|---|---|
|
Maintain product information |
Rental Copy |
|
status (reserved) |
|
|
query support |
|
|
list of copies |
|
|
policy information (base policy) |
|
Responsibilities |
Collaborators |
|---|---|
|
can get to a rental copy |
(none recorded) |
|
Responsibilities |
Collaborators |
|---|---|
|
cancel, cancelled status |
Active Rental |
|
address |
Transaction |
|
phone number |
Contact Track |
|
credit information |
Policy |
|
names |
|
|
member ID |
|
|
print card |
|
|
policy (who can rent what) ratings history |
|
|
find transactions |
|
|
find active rentals |
|
|
(category) |
|
|
(home store ?) |
|
Responsibilities |
Collaborators |
|---|---|
|
Call Member re. Transactions and Active Rentals |
Member |
|
Active Rental | |
|
Transaction |
|
Responsibilities |
Collaborators |
|---|---|
|
Calculate price and due date |
Purchase |
|
Do I apply |
Transaction |
|
Refuse Rental |
|
|
Can I be combined |
|
Responsibilities |
Collaborators |
|---|---|
|
Returned date |
Member |
|
Rental date |
Rental Item |
|
original due date |
Rental Copy |
|
copy number |
|
Responsibilities |
Collaborators |
|---|---|
|
Maintain inventory |
Members |
|
Respond to query on inventory |
Titles, items |
|
Respond to query on members |
Active Rentals |
|
Maintain Active Rentals |
|
|
Lock up returned items |
|
|
Maintain Policies |
|
Responsibilities |
Collaborators |
|---|---|
|
Charged fee (total) |
Active Rental |
|
Charged late fee |
Policy |
|
Resolves policies |
|
|
Adjust due dates |
The core classes in the design are the Rental Copy, Rental Item, Active Rental and Transaction classes. The following descriptions are from notes taken during the discussion:
The team had lengthy and detailed discussions about how to design the pricing and policy aspect of the system. No one person had a complete solution, but rather the solution was built up with ideas from several people until we had something we all believed was workable. This process showed how a team can be greater than the sum of its parts, and that in a very short time frame the team was working well together. The conclusion was the following algorithm, where the Purchase class is responsible for it:
For all policies (essentially doing a breadth first search) if Policy Applies then If Policy can be combined then Adjust Price and Due Date Else Create a new result for price and due date Compare result sets using some evaluation or optimization choice, e.g. lowest price, longest duration, etc.
The team discussed two alternative class inheritance hierarchies for Rental Item and Rental Copy. In the first case, two parallel hierarchies were created, where Video Rental inherits from Rental Item, and Video Copy inherits from Rental Copy, and similarly for Game Rental and Game Copy. In the second case, only one hierarchy was created for Rental Item and its sub-classes, and Rental Copy never had any sub-classes. The team never discussed a third option of not using a hierarchy, but rather creating a meta system. The team decided not to debate this as a philosophical issue at design lab, and deferred this decision.
The second issue also involved a debate between two philosophical options, to capture status information in a class, or to copy information into a historical class once the instance was no longer active. This applied mostly to the Active Rental class. In the former case, it is necessary to always keep old instances of classes like policy, so as not to create orphan links. The team also decided not to debate this issue, and deferred this decision.
The third issue involved the division of responsibilities between the Financial Category classes, and the Inventory Category classes. This discussion was the main topic of the design lab, and the results are as shown in this report.
The fourth and final issue involved the design for managing store policies for pricing, rental duration, and other issues. This discussion was most interesting, particularly since this area had not been explored by the "user", and was an area that two of the participants had run into previously, without resolution. The results are as shown in this report (see section Notes on Purchase Class).
Here are a few personal observations: