The Final
- Mix of short essay, multiple choice, matching, writing code, drawing diagrams
- We will provide paper for any diagrams you must draw, and you will
turn that paper in (as opposed to uploading them).
- You can bring a single page of notes. The page can have material
(notes, diagrams, etc.) on both sides, but you cannot have two pages.
- You will need to submit your page of notes. If you want a copy, you
might simple scan it yourself using one of the campus copiers.
- It is critical you not discuss the exam with anyone until you have
heard everyone has taken the exam or the finals week is ended. This is
important because some students may take the exam late due to illnesses
or other conflicts, and giving them hints will hurt your grade.
Review Topics
Unless otherwise specified below, know the following for each pattern
mentioned here:
- goals
- be able to draw a class model applying the pattern
- explain the pro's and con's of using the pattern
- be able to write code applying the pattern
Patterns
- Creational patterns
- Factory Method, including static factory methods
- Singleton
- Structural patterns
- Adapter
- Composite
- Decorator
- You should understand the motivations behind usng the decorator
pattern with Java input & output classes, but you do not need to
know the names and details of the classes involved
- Façade
- Behavioral patterns
- Command
- Observer
- Strategy
- Other patterns
- Null Object
- Simple Factory
- Model/View/Controller (MVC)
- Cloud patterns (more precisely, architectural patterns for the cloud)
- FaaS/AWS Lambda
- Pub/Sub: observer pattern with a queue
- Competing Consumer
- Primary facts about the patterns presented by other students
- primary goals, primary issues
- uses of the pattern, as discussed in the presentation, in Java
class libraries or real-world applications
Design and other topics
- Key
git
terminology: clone, commit, pull, push
- Definition of an object
- UML Notation
- generalization, association, multiplicities, role names,
attributes, methods, abstract vs. interface
- sequence diagrams - reading only; you won't have to write these
- Domain objects: responsibility, identity, behavior, state
- give an example responsibility
- what is identity and how is it used?
- Noun/verb identification method
- Cohesion and coupling
- Threads, synchronization
- Basics of Cloud Computing, particularly serverless computing
Where to go from here?
- What would be the impact of using all the patterns on every project?
- How does coupling and cohesion relate to design patterns? Design in
general?
- Is this all of the patterns?
- Consider the Bomb pattern
- Pattern Languages of Programs
(PLoP) conferences:
annual discussion of patterns among researchers
- Why the focus
on domain-driven
design?
- Basic structure: layers (Ch. 28 in Java Design Pattern
Essentials)
- Cost: potential performance impact
Challenge: Going Laptop-free
- Imagine a campus where all computing resources were cloud-based, no
one carried a laptop
- Each student has an individual VM on the server set up to run
Windows as if it were a laptop right in front of you
- That is, each student has disk space allocated to them, an
operating system that runs programs (as if they are run on your
laptop), and a way for mouse events/key presses/display updates to go
back and forth.
- Students carry foldable keyboards, mice and connected via their phones
- Assume each desk in each room has a screen
- Key requirements:
- Administrative tools so automated systems can provision systems,
run updates, decommission
- Each department determine all software needed; administrative tools
autoload these
- Need strong predictive (AI) tools to determine when systems likely to be
needed so have adequate server capacity
- Need strong data privacy: all application data stored on disks (eg documents,
social media history) must be
encrypted using keys owned by the student alone, with the student able
to allow administrative access for a period when necessary.
- Need monitoring tools that help determine if a system has been
compromised by an unauthorized user and alert the user and then staff
of the issue, but the monitoring tools must respect data
privacy. For example, access times by the student and data transfer
amounts can be registered (but not the content of that data).
- Set up "honeypot" systems with weaker security to assist IT in
identifying systematic penetration attacks.
- Others?
- Working in groups, identify applications of design patterns to this system
- For each pattern, write a couple sentences describing how it would
be applied and justifying its application