At the time of the midterm exam, a student should be able to:
State the advantages of the object-oriented paradigm of system analysis, design, and implementation over the procedural paradigm.
Describe the "object-oriented approach" to problem solving.
Explain the object-oriented concepts of encapsulation, inheritance, and polymorphism.
Create a syntactically correct UML class diagram that depicts relationships (generalization, aggregation, association) among classes.
Explain the concept of domain modeling.
Briefly describe each of the steps in the Iconix OOAD process.
State the difference between requirements analysis and design.
Interpret and create text-based use cases.
Use grammatical inspection to create a domain object model.
Document a domain object model using a UML class diagram that depicts relationships (generalization, aggregation, association) among objects.
Explain why low coupling and high cohesion are characteristics of a good design.
Perform preliminary OOD using robustness analysis with a domain object model and text use cases as input.
Document preliminary design in a syntactically correct robustness diagram that indicates the logical relationships between boundary, control, and entity objects.
Perform detailed OOD using interaction modeling with a domain object model, text use cases, and robustness diagram as input.
During interaction modeling, allocate behavior among classes in a way that leads to a design with low coupling and high cohesion (highly cohesive classes that model one and only one abstraction; weakly coupled classes that communicate with as few other classes as possible).
Document detailed design in a syntactically correct UML sequence diagram that indicates appropriate collaboration among the system's objects.
Generate a design-level UML class diagram whose operations are consistent with the UML sequence diagram generated during interaction modeling.
State the motivation behind using patterns.
Define "software design pattern."
Design Principles
Design principles covered:
Loose Coupling
Abstract Variations
Program to Interface
Favor Composition
Extend! -- !Modify
For each of the above design principles:
Describe the motivation behind each principle.
Give an example application of each principle.
State which design patterns make use of this principle.
Design Patterns
Design patterns covered:
Observer
Strategy
Decorator
Adapter
Composite
For each of the above design patterns:
Describe intent and motivation behind each pattern.
Describe how to apply the pattern, including a structural UML representation.
Describe the consequences of applying the pattern, both positive and negative (should there be any).
At the time of the Final Exam, a student should be able to:
Describe and apply the null object pseudo pattern.
Additional Design Principles
Design principles covered since midterm:
Dependency Inversion Principle
Design Patterns
Design patterns covered since the midterm:
Factory Method
Abstract Factory
Command
Facade
Iterator
State
Visitor
Prototype
Flyweight
Acknowledgement
This page was based on a similar page developed originally by
Dr. Pat Schroeder.
I am responsible for all content posted on these pages; MSOE is welcome to share these opinions but may not want to.