Topics for Exam 1 in Com S 362 This test covers topics from homeworks 1-3. 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 1-19 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. (You should also read chapter 20 of Larman's book, as that ties things together, but we won't be testing on that directly.) For reference on the UML notation and another take on the design ideas, see Chapters 1-5 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. It's also a good idea to read Chapters 2-4 and 7 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. * Overview - Explain iterative development and its advantages and disadvantages - Explain the phases of a typical development, how long each phase is (relative to the others), and what is involved in each - Explain what kinds of systems object-oriented techniques should be used for, and which ones they should not be used for. * Inception phase - Explain the goals of the inception phase. + Be able to write a vision statement. [HW1, HW2] ++ Be able to write use cases in an essential, UI-free, style, in both brief and casual format. [HW2, HW3] + Be able to find non-functional requirements and write them a supplementary specification. [HW2, HW3] + Be able to identify risks in a system. [HW2, HW3] - Be able to write a glossary [HW2, HW3] * Elaboration phase + Explain what artifacts are appropriate for the elaboration phase. [HW3] + Determine a subset of the use cases and scenarios for a system that are appropriate for implementing in the first iteration of the elaboration phase, and justify those choices. [HW3] + Identify system operations and describe them in a system sequence diagram (based on given use cases). [HW3] ++ Find conceptual classes, associations, and attributes appropriate for a use case, and specify them in a conceptual class diagram (domain model). [HW3] - Be able to explain conceptual class diagrams and draw conclusions from them. - Specify details about system operations in operation contracts (from use-cases and system sequence diagrams). [HW3] - Be able to explain operation contracts and draw conclusions from them. ++ Design objects and methods with appropriate assignment of responsibilities, using the GRASP patterns, and record these in interaction diagrams, and design class diagrams. [HW3] - Be able to explain interaction diagrams and design class diagrams and draw conclusions from them. - Be able to justify or explain assignments of responsibilities uses of the GRASP patterns. - Turn designs into clear OO code. [HW3] - Describe plans for testing OO code (given other UML artifacts describing it). [HW3] - Explain how a system starts, and how its user interface can be connected to the code.