Com S 362 --- Object-Oriented Analysis and Design HOMEWORK 8: FIRST ELABORATION ITERATION (File $Date: 2003/04/08 03:34:38 $) Due: problem 1, at 11 AM March 31, 2003; problem 2, at 11 AM April 7, 2003; problem 3 (the demo), by 5 PM April 11, 2003. Note that, following the practice of iterative design, you should be sure to hand in something on April 7, and reduce the scope of the what you are implementing if you were having trouble making this due date. This is a team homework problem. That is, you should work together with your teammates. 1. [First Elaboration Iteration, planning] The team part of this homework, below, is part of the first iteration of the elaboration phase of your team project. (We have quite artificially emphasized use cases and SSDs, however.) For this problem, read chapters 5-9 of Craig Larman's book Applying URL and Patterns (Second edition, Prentice-Hall PTR, Upper Saddle River, NJ, 2002). You may also find it helpful to read chapter 20. Also read chapter 3 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 task is to create your team project's: a. Use case model. (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 first elaboration iteration of your project. You must plan to implement at least one scenario and also a startUp use case (see Larman, section 17.8). The rest of the elaboration phase will be part of homework 10, and will last two weeks. (iii) (10 points) Briefly justify your team's selection of use cases to implement in this iteration. This justification should primarily 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) (60 points) Write at least 2 fully dressed use cases, including all of the use cases from which you are implementing scenarios in this iteration. (See Larman's book, section 6.6 or go to usecases.org for the format.) Also, even if you are only implementing scenarios from one use case, you must have at least 2 fully dressed use cases. (v) (30 points) Write at least some of the remaining use cases in casual format (see Larman section 6.3). You must write up enough of these so that at least 50% of the use cases in your project are done in either casual or fully dressed format. (vi) (15 points) Write another 25% of the remaining use cases in brief format. That is only 25% of the use cases for your project should have only titles. (vii) (60 points) Write two system sequence diagrams (see Larman chapter 9), including those for all of the scenarios that you are implementing in this iteration. You must have at least 2 SSDs. b. Other requirements: (10 points) Include other requirements artifacts that you find helpful. For example, you may want to write system operation contracts (see Larman Chapter 13) for some of the system operations if they are subtle or complex. You may also want to present a refined supplementary specification or a glossary. If you don't need any other artifacts, write a brief statement as to why and label it "part b". Hand in printouts of all of these artifacts. All of your project's artifacts, with the possible exception of your SSDs, should be on your project's web site. Also, don't forget to hand in the course's "Certification of Individual Contribution and Understanding Form" each time you hand in something. 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. 2. [Rest of the first elaboration iteration] 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/~cs362/sticksync/ Your task is to design and implement the use case scenarios you identified in problem 1, 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 problem 1) 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. d. 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) (optional) We recommend that you write JUnit test classes for unit testing of your code, however this is not required. 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. Also, don't forget to hand in the course's "Certification of Individual Contribution and Understanding Form" each time you hand in something. 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. 3. [Demonstrate Your Project] (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 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 Since you will be both learning a lot of things and trying to accomplish various things on your team's project, it's very important that you don't put off everything until the last minute. However, it is sensible to wait until the individual parts of this homework are due before starting the team part, as that will make sure everyone is up to speed on the ideas and notation. 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.