CS340, Spring 2008, Exam 2
Topics covered in slides and lecture (not necessarily in order)
- Design goals
- how can a design be used? how evaluated?
- qualities of a good design
- Design views, levels
- Software architecture patterns
- what's documented
- common patterns: client/server, layers, repository, etc.
- Documenting design
- what goes into a design document?
- Modules and modularity
- factoring into modules
- module qualities
- coupling, cohesion
- Design criteria
- information hiding
- abstraction, abstract data types (ADTs)
- Top-down functional decomposition
- structure charts (see extra set of slides from F'99)
- what quality issues can be observed?
- limitations of this approach
- Object-oriented design
- UML class diagrams
- classes and what's documented in them
- associations, multiplicity
- inheritance, generalization
- UML object diagrams
- UML sequence diagrams
- Not on exam: UML state diagrams
- Kinds of classes in an OO design
- classes for "data-objects"
- classes that hide design decisions
- classes that manage or control
- (from discussion in labs and lectures)
- Multithreading
- terminology used with threads
- making threads cooperate by waiting
- protecting data objects from race conditions
- basics of use of threads in Java
- creating and starting a thread
- creating and using locks
- creating and using conditions
- synchronized keyword
- (Nothing on threads in C#)