Topics for Exam 3 in Com S 362 This test covers topics from homeworks 4 and 5 and problem 1 from homework 6. REMINDERS This test is open book and notes. However, it is to be done individually and you are not to exchange or share materials with other students during the test. So if you have materials on your team project you wish to refer to during the test, please make copies. If you need more space, use the back of a page. Note when you do that on the front. This test is timed. We will not grade your test if you try to take more than the time allowed. Therefore, before you begin, please take a moment to look over the entire test so that you can budget your time. For diagrams and programs, clarity is important; if your diagrams or programs are sloppy and hard to read, you will lose points. Correct syntax also makes some difference. READINGS Principally, chapters 10-20 of Craig Larman's "Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process", Second Edition. Prentice Hall PTR, Upper Saddle River, NJ, 2001. 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/~cclifton/courses/sticksync/vision.shtml If you have more time, see the syllabus for further readings. TOPICS Topics marked + below are more important than topics marked - below. Topics marked with a ++ will almost certainly be on the test. In general, things that are more like the homework will be more important. * Concepts - Explain how feedback from one iteration affects the next iteration. [HW6] * Analysis ++ Read and understand use cases in brief, casual, or fully dressed format. [HW4] ++ Be able to draw a system sequence diagram for a scenario of a use case. [HW4] - Write (or read) system operation contracts. ++ Find conceptual classes, associations, and attributes appropriate for a use case or use case scenario, and specify them in a conceptual class diagram (domain model). [HW5] - Be able to explain conceptual class diagrams and draw conclusions from them. * Design - Explain the connection between analysis models and design models. ++ Design objects and methods with appropriate assignment of responsibilities, using the GRASP design patterns, and record these in interaction diagrams, and design class diagrams. [HW5] ++ Be able to read and write sequence diagrams with proper notation (see Larman chapter 15). ++ Be able to read and write collaboration diagrams with proper notation (see Larman chapter 15). ++ Be able to read and write design class diagrams with proper notation (see Larman chapter 19). + Be able to explain interaction diagrams and design class diagrams and draw conclusions from them. ++ Be able to justify or explain assignments of responsibilities using design patterns. As in the homework you should be able to do this by including 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. [HW5] + Be able to explain the GRASP design patterns + Be able to identify instances of high coupling or low cohesion, and suggest how to remedy them using design patterns. + Be able to identify uses of GRASP design patterns from interaction diagrams or English descriptions. * Implementation - Explain the connection between design models and code. + Turn designs into clear OO code in Java. [HW5] - Describe plans for testing OO code (given other UML artifacts describing it). [HW5, HW6] + Be able to write a JUnit test class for a Java class or from interaction diagrams and design class diagrams for code. [HW5, HW6] + Be able to write Java code to implement a class based on existing JUnit tests. [HW6] + Be able to write a lightweight JML specification for a class, given code, JUnit tests for it, or English descriptions of its methods. [HW6]