SE2811 -- Detailed Outcomes
Spring 2006
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.
- Read and understand a UML use case diagram and non-UML 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
- Factory Method
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:
- Abstract Factory
- Command
- Adapter
- Facade
- State
- Proxy
- Visitor
- Composite
- Iterator
Acknowledgement
This page was based on a similar page developed originally by
Dr. Pat Schroeder.