Com S 362 --- Object-Oriented Analysis and Design HOMEWORK 5: REST OF FIRST ELABORATION ITERATION (File $Date: 2002/11/11 21:04:20 $) Due: parts (a)-(f), November 11, 2002 at 11AM, the demo in part (g) must happen by the end of Nov. 19, 2002 to avoid late penalties. This is a team homework. In this homework, you and your team will do the rest of the first elaboration iteration for your team project. For this problem, read chapters 10-20 of Craig Larman's book Applying URL and Patterns (Second edition, Prentice-Hall PTR, Upper Saddle River, NJ, 2002). Also read chapter 4 and 11 of Martin Fowler with Kendall Scott's book UML Distilled (Addison-Wesley Longman, Inc., Reading, MA, 2000). Finally, as an example look at the web page for the StickSync project: http://www.cs.iastate.edu/~cclifton/courses/sticksync/ Your task is to design and implement the use case scenarios you identified in homework 4, problem 6 as to be implemented in the first elaboration iteration. a. Use Case model. (20 points). Make any necessary corrections and elaborations you need in the use case model (see homework 4, problem 6(a)), including the use cases, the subset of use cases you are implementing, their justification, and your SSDs. Note that this is to be handed in again, even if you make no changes. b. Domain model (30 points) Present a domain model, including at least a conceptual class diagram for concepts in the domain you have identified. Use the notation described in Larman Chapters 10-12. Your domain model will be compared against the use case scenarios that you have identified for this iteration to see if it captures the main concepts. The notation used is also important. Don't include methods or visibility links in the conceptual class diagram. c. Design model. (i) (50 points) Present your interaction diagrams for your design, along with any commentary needed to help understand them. You can use either sequence diagrams or collaboration diagram notation for this, although we recommend the collaboration diagram notation. These can be (and probably should be) hand drawn. (See Larman chapters 15-16 for notation.) (ii) (20 points) Include on your interaction diagrams dog-eared boxes (annotations) with names of patterns to indicate what patterns you are using to assign responsibilities. See Larman's chapter 17 for examples of this, e.g., Figure 17.7. (If you find that most of your annotations are justifying assignment of responsibilities based on a single pattern, such as Expert, you can make a prominent annotation stating the default for your diagram, and only write out annotations for the justifications that do not use the default pattern.) (iii) (30 points) Present a design class diagram for classes in your implementation and planned for this iteration. Use the notation described in Larman Chapter 19 for this. The design class diagram should identify the methods in each class and have arrowheads on associations to indicate navagability. (iv) (optional) Include any other artifacts for your design that you feel are useful. For example, you might need a database design. f. Code and test (i) (60 points) Give us a printout or access to your code. This must be in Java. Your code should be clearly written and indented, and should include either javadoc documentation comments or JML specifications. (ii) (40 points) You must have JUnit test classes for testing at least 4 of your classes. These can be done using JML but that is not necessary. Handing these in without any additional comments certifies that your code passes these tests. If it does not, you must include output or descriptions saying what tests do not pass. g. Demo (20 points) You must schedule a demonstration with our teaching assistant, which should show how the system works on the test case scenarios you implemented, and which also demonstrates some of your testing. This should be scheduled within a 4 days of the due date of this homework. Your grade for this will depend on how well the system implements the scenarios that you have decided to implement for this iteration. We recommend against drawing figures using a tool (like Rational Rose), because you would spend a significant part of your time working with the tool. (However, it's okay if you really want to do this.) Instead we suggest drawing the figures by hand; if you wish, scan them in to your project's web site. All of your project's artifacts, with the possible exception of figures drawn should be on your project's web site. Hand in a printout of these artifacts. Don't forget to hand in the course's "Certification of Individual Contribution and Understanding Form". You can find this form in 3 formats from the course web pages at the URL: http://www.cs.iastate.edu/~cs362/docs/ or on the department machines in the directory /home/course/cs362/public/docs/ The certification form must be printed and signed, you cannot turn that in by email.