CS509-S04: Final Exam Study Guide
This document is a study guide for your final exam. If you are comfortable
with the topics, and questions below you should be able to do well on the exam.
Patterns and refactoring
- You should be able to describe the GRASP patterns, and explain when they
are used.
- Given a (partial) specification, you should be able to show how the different
GRASP patterns might be used to assign responsibilities to classes.
- You should be able to apply (shown by a UML diagram and some text or code)
the following patterns: (All of the presentations will be posted no later
than 4/19).
- Singleton
- Observer
- Adapter
- Iterator
- Factory Method
- Composite
- Visitor
- Strategy
- State
- Given a context, you should be able to indicate which of the above patterns
might be appropriate. For example, if you are given an example where there
is a mismatch between what your software calls and what the supplier of your
software requires, then you would apply an Adapter.
- What is refactoring? How is it different than applying patterns?.
- Know the difference between refactoring and patterns
- What is an anti-pattern? What are some anti-patterns? Why do we care about
anti-patterns?.
Enterprise applications, components, architecture
- What are the characteristics of enterprise applications?
- What is a component? How does it differ from a program, a library, etc.?
- What is, according to Fowler, the major architectural mechanism for enterprise
systems?
- You should be able to give examples of different types of layered systems?
- What is architecture? Give at least two definitions that are similar and
explain the differences?
- Describe pipe-and-filter architecture.
- What are the two primary types of EJBs? What are they used for?
- What is the remote and home interface for EJBs?
- What is the purpose of the EJB container?
- You should be able to code a simple EJB.
- Describe the reference model for component-based assembly from the Brown
and Wallnau paper.
- What are the three phases in framework development described by Brereton
and Budgen?
- Be able to identify and discuss the issues for component-based system development
described in the Brereton and Budgen article?
Miscellaneous topics
- You should know what mock objects are and when they are used.
- You should know the type of capabilities that can be expected from mock
objects.
- Understand aspect-oriented programming and be able to identify how a program's
behavior might changed by the application of aspects.
- You should be able to identify benefits and disadvantages of aspect-oriented
programming.
- Why can't you follow a process exactly according to Parnas and Clements?
- What do Parnas and Clements mean when they talk about faking the process?
- You should know the metrics covered in the last class and be able to calculate
them. (Slides from the class will be posted by 4/18).
UML
- You should be able to draw use case, sequence, collaboration, and class
diagrams with reasonable adherance to the UML standard. That is, you should
know what lines should be solid, which should be dashed, the appropriate symbols,
etc. I do not expect you to remember all of the different arrowhead possibilities,
but you should have the correct ones for generalization and normal directed
association.
Modified:
17-Apr-2004
Gary Pollice