Gregory M. Kapfhammer
Key Concept
Corresponding Diagram
In-Class Discussion
In-Class Activity
Details in SETP or MMM
Modularity
Interfaces
Information Hiding
Incremental Development
Abstraction
Generality
No Coupling
Tight Coupling
Loose Coupling
Which type of coupling is better?
Which type of coupling supports change?
Refer to Figure 6.1 for diagrams with examples
There are different types of coupling (e.g., data)
Defines what services a unit will provide
Provides "signatures" for the methods of a unit
Often formulated as a design contract
Given as invariants and pre- and post-conditions
Units often contain accessors and mutators
Any questions about the use of interfaces?
Hide the design decisions for a software unit
Make software systems easier to understand and maintain
What are the aspects of software that we hide?
Data representation, algorithm, task sequence
Any questions about the use of interfaces?
Consider how modules "use" other modules
Try to minimize the number of not-needed dependencies
Implement modules of the system incrementally
Why is this possible if dependencies are few?
Encapsulation
Inheritance
Polymorphism
Package Diagram
Class Diagram
Sequence Diagram
Communication Diagram
State Diagram
There are other types of diagrams as well!
What are the strengths and weaknesses of diagrams?
Data Management
Exception Handling
User Interfaces
Toolkits and Frameworks
What are the trade-offs in using frameworks?