Question 1 (40 Points)
The invoicing rules at Scrooge & Marley are getting too confusing for Markus Foley. Although he has had several meetings with his business domain experts in Accounts Receivable, he still is not clear about the tracking and setting of invoice status. Here are some of his notes; perhaps you can help him sketch the rules in a UML state chart.
- when an invoice is paid it is marked as "paid"
- sometimes customers send partial payments that we record against an invoice, but the invoice remains marked as "open"
- not sure what happens when a customer pays too much, but the invoice is definitely flagged as "paid" in those cases
- invoices are created when an order is placed, but the invoice is not sent to the customer until the order has shipped; invoices that have not been sent to the customer are marked as "draft", while those that have been sent are marked as "open"
- each invoice has a due date; any invoice that has not been paid in full by the due date is marked as "overdue"
- orders that are cancelled or returned have their corresponding invoices marked as "deleted"
- in rare cases, managers or accountants can override an invoice and zero it out; these are called voided invoices
- no payments can be applied to deleted or voided invoices; same's true for invoices that are fully paid
- only draft and open invoices can be sent to clients
- when a payment does not go through (for example, a bounced check), then the payment is revoked and the invoice status is updated
Question 2 (40 Points)
The design team at Ravix Interactive wants to build a series of tutorials on Evernote, the popular note recording and sharing application. They want to better understand the structure of Evernote, so they have hired you on a contract basis to build an "as is" class model of the Evernote application. Using a tool of your choice, build a UML Class Diagram. The diagram must contain at least six classes and each class must have at least two attributes. You may want to install Evernote on your PC, Mac, iPad, Android Tablet, or use their web application. Pay particular attention to the concept of different types of notes, notebooks, sharing, and note content. Be sure to add multiplicity constraints to all relationships. Be as thorough as you can, but focus on the "user visible" objects.
Question 3 (20 Points)
Visualize the following relational "rules" expressed in the narratives in UML Class Diagrams. Build a separate diagram for each question:
- A teaching roster lists instructors and the classes they have been assigned to teach, as well as classes assigned to them where they act in a supervisory capacity to new instructors. While most instructor teaches at least one class per term, there are a few instructors that may take a semester off to do research or work on committees. The faculty union, which all instructors must join, does not allow an instructor to teach more than five courses per term.
- A homeowners insurance policy is quite similar to an automobile policy. In fact, they are so similar that the underwriting department simply refers to them unit policies. There are differences, though, and therefore they are not the same, just similar. Regardless of policy type, each policy applies to a single unit, which could be a home, automobile, boat, RV, or motorcycle. Each policy has a set of coverages, exclusions, and riders. It is important to know the in-force dates of the policy and the insured party as well as the beneficiary that gets paid in case of a loss. In fact, underwriting is very interested in knowing the loss history for each policy and claims that may have been made by an insured party. Of course, each loss may only have a single claim against it. Each policy can only have a single beneficiary, but may be written for up to two insured parties (e.g., married couples).