Com S 362 --- Object-Oriented Analysis and Design HOMEWORK 9: SECOND ELABORATION ITERATION (File $Date: 2004/12/12 21:30:28 $) Due: Problem 1, December 10, 2004 at 11AM; Problem 2, December 14, 2004 at 5PM. This is a team homework. 1. [Second Elaboration Iteration] In this problem, you and your team will do the second elaboration iteration for your team project. For this problem, read chapters 9-23 of Craig Larman's book Applying URL and Patterns (Second edition, Prentice-Hall PTR, Upper Saddle River, NJ, 2002). Also read chapters 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/~cs362/sticksync/ Your overall task is to decide on more use case scenarios, and implement them. Details follow. a. (20 points) Summarize what you learned about your team's project's requirements, design, and and implementation from iteration 1. This can be a paragraph or two of text. b. Use Case model. The use cases should be revised to reflect the lessons you learned in the first elaboration iteration. (i) (5 points) List all the names of all the use cases for your project. (This can be an index on a web page with hyperlinks to the use case text if you wish.) (ii) (10 points) Determine a subset of the use cases (and scenarios within these) for your project that you will implement in the second elaboration iteration of your project. You must plan to implement at least two more scenarios. See the due dates above for how long you have to implement these. (iii) (10 points) Briefly justify your team's selection of use cases to implement in this iteration. This justification should mostly be based on achieving sufficient coverage to be able to demonstrate something at the end of the iteration and to provide a basis for further elaboration later. However, if you can, you should also address your project's risks. (iv) (30 points) Write all of the use cases from which you are implementing scenarios in this iteration in fully dressed format. (See Larman's book, section 6.6 or go to usecases.org for the format.) (v) (10 points) Do any other work on the use cases you think will be helpful for this iteration. For example, you might write up some more use cases in casual format. (vi) (40 points) Write system sequence diagrams (see Larman chapter 9) for all of the scenarios that you are implementing in this iteration. You must have at least 4 SSDs. c. Starting Design Class Diagram (20 points) Present the design class diagram for the classes present at the end of the first elaboration iteration. Use the notation described in Larman's book, Chapter 19 for this. d. 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 design 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 revised 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. Be sure to label this so it can be distinguished from the design class diagram that was present at the end of the first elaboration iteration. (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 6 of your classes. 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. (iii) (30 points) Your code should include at least 4 classes or interfaces with JML specifications (pre- and postconditions for methods, and invariants). Be sure to clearly indicate which classes or interfaces have such specifications. 2. [Demonstrate Your Project] (40 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 the previous problem. Your grade for this will depend on how well the system implements the scenarios that you have decided to implement for this iteration. HINTS We recommend against drawing the diagrams 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 diagrams 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.