110 likes | 236 Views
Extending Interface Based Design. Logical vs. Physical Design. Logical Design Essential vs. Inessential Coupling Interface as Type Design Patterns Physical Design Assemblies Versioning. Goals of Physical Design. Easier to test and change smaller units Faster unit tests
E N D
Logical vs. Physical Design Logical Design Essential vs. Inessential Coupling Interface as Type Design Patterns Physical Design Assemblies Versioning
Goals of Physical Design Easier to test and change smaller units Faster unit tests Easier parallel development Easier change management
Assembly Partitioning Concepts Look for application fault lines Treat Interfaces as fundamental types Design Patterns indicate application partitions
Interfaces as Fundamental Types Interfaces are behavior, not implementation Treat as fundamental types Place in separate assemblies Put implementation in separate assemblies
Patterns Drive Partitions Code that implements the pattern Code that uses the pattern Code the pattern isolates Indicate possible assembly partitioning
Example: Factory Pattern Application CustomerManagerFactory CustomerManager
Assemblies As Components Independent evolution Versioning Testing Goal is partitioning Reuse is possibly emergent
Design For Testability Test smaller units of functionality Faster unit tests Minimize test dependencies Partitioning for testability
Physical Design Challenges Assembly Management Reduced Encapsulation Performance Problems Probability of Change
Summary Partition based on: Fundamental Types Patterns Test Dependencies