Topics for Final Exam in Com S 362 The final exam is on May 7 (Tues.) at 9:45a.m.-11:45a.m in B29 Atanasoff. This test focuses on topics from homeworks 4-5. Although topics covered in homeworks 1-3 are also relevant, they are not the emphasis of the test. 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 6.1, 9, 13, 15-23, and 34 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, see the sections on the relevant design patterns from the book "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Addison-Wesley, 1995. For reference on the UML notation and another take on the design ideas, see Chapters 1-6 of Martin Fowler with Kendall Scott's "UML Distilled Second Edition: A Brief Guide to the Standard Object Modeling Language." Addison-Wesley Longman, Inc., Reading, MA, 2000. Chapter 11 of this book is also useful for notes about mapping designs to code. You may also want to read Chapters 3 of Arthur J. Reil's "Object-Oriented Design Heuristics". Addison-Wesley, Reading, MA, 1996. If you have more time, see the syllabus for further readings. TOPICS Topics marked + below are more important than topics marked - below. In general, things that are more like the homework will be more important. * Concepts + Explain how feedback from one iteration affects the next iteration. [HW4] + Explain what inheritance, subtyping, and polymorphism are. [HW5] * Analysis + Write (or read) use cases in fully dressed format. [HW4] - Write (or read) use cases in casual format or brief format. [HW4] - Write (or read) a system sequence diagram. [HW4] - Write (or read) system operation contracts. [HW4] + Find conceptual classes, associations, and attributes appropriate for a use case, and specify them in a conceptual class diagram (domain model). [HW4] - Be able to explain conceptual class diagrams and draw conclusions from them. * Design ++ Design objects and methods with appropriate assignment of responsibilities, using various design patterns, and record these in interaction diagrams, and design class diagrams. [HW4, HW5] + 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. For example, you can 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. [HW4, HW5] + Be able to explain the use of the GoF design patterns: Adapter, Factory, Singleton, Strategy, Composite, Facade, Observer, Template Method, and State. [HW5] - Be able to read a statechart diagram (see Larman chapter 29 and 34.16). * Implementation ++ Turn designs into clear OO code in C++ or Java. [HW4, HW5] - Explain how design patterns are reflected in C++ or Java code. [HW5] - Describe plans for testing OO code (given other UML artifacts describing it). [HW4]