Final Exam Review

The final exam will be held:

Monday, December 14, 9:45-12:00

Like the midterm, the final will be online. You will be asked to draw diagrams, write code, and answer question. At the end of the exam you will email your solutions to me. Take all necessary precautions to ensure your laptop will run properly for the duration of the exam.

Material Covered

The midterm will be cumulative, covering all topics from lectures, labs, and projects.

For pre-midterm material see the following links:

Midterm Review

Midterm

Midterm Solutions

In particular, expect to be asked to create use case and analysis models from informal specifications.

The main post-midterm topics include:

Analysis Patterns

Meta-Modeling

You should also be familiar with advanced UML concepts such as aggregation, association classes, and OCL.

I am particularly interested in asking you to create class diagrams that model the entities of some domain. For example, the entities for Halo, PCP, or the UML Meta-Model.

Sample Questions

The OOA Labs are a rich source of OOA questions.

1. Convert the following EBNF grammar into a class diagram:

COMMAND ::= EXPRESSION | BLOCK | IF | WHILE
BLOCK :: = {(COMMAND;)+}
IF ::=  if (EXPRESSION) COMMAND else COMMAND
WHILE ::= while(EXPRESSION) COMMAND
EXPRESSION ::= CONSTANT | VARIABLE | EXPRESSION OPERATOR EXPRESSION
OPERATOR ::= + | * | -

2. A program consists of instructions and variables. A variable has a name and a value. Numbers and references to objects are values. Executing an instruction updates the value of one or more variables.

A debugger consists of a virtual machine and a debugger window. Through the debugger window, programmers can load programs, set and clear breakpoints, inspect variables, and command the virtual machine execute the program one instruction at a time or until the next breakpoint.

A. Create a use case model for a debugger.

B. Create an analysis model for a debugger.

3. A project consists of tasks, task references, and a schedule. A task has a duration, state, and description. The state of a task can be one of the following: PROPOSED, AUTHORIZED, FUNDED, IN_PROGRESS, SUSPENDED, ABANDONED, COMPLETED. A task reference represents a task in a schedule. It has a list of predecessors and a list of successors. Predecessors and successors are also task references. (Using task references in a schedule instead of tasks means a task can be executed multiple times, each time with possibly different predecessors and successors.)

A. Translate the previous paragraph into a UML class diagram.

B. Draw a state chart diagram showing the lifecycle of a typical task.

A custom software process consists of the following tasks: Gather (requirements), Analyze (requirements), Design, Implement, Test, and Deploy. The Gather and Analyze tasks will be performed once. The Design, Implement, and Test tasks will be performed twice. If the second testing is successful, the Deploy task is executed, otherwise the project is abandoned.

C. Draw an object diagram instantiating the class diagram from part A that models the above process.  

D. Draw an activity diagram modeling the above process.

3. Create a UML model of an analysis model.