![]() |
SearchWiki Heuristics.RecentChanges Edit Page Page Revisions |
| Home Design Patterns Heuristics Software Development Software Process Patterns TheIntroduction LogicalDesign PhysicalDesign PatternFoundations GuidelinesAndMyths ReferenceImplementation DependencyPatterns UsabilityPatterns ExtensibilityPatterns MaintenancePatterns AntiPatterns UtilitiesAndTools AllPatterns | As developers of object-oriented software systems, we often devote valuable resources and energy to creating a resilient and robust architecture. We know that a flexible architecture ensures consistency throughout the system, and helps the system accommodate change as the system grows into the future. In fashioning these flexible structures, we typically devote the majority of our effort to the class relationships within our system. Of course, some time is also devoted to defining our system's package structure. However, in designing the package structure, little time is actually spent designing the relationships between packages. Instead, packages are typically viewed as class containers. The reality of architecture, however, is that package relationships serve as the foundation of many architectural patterns. Simply understanding the facts behind an architectural pattern doesn't bode well in customizing those patterns to fit an application context. Instead, understanding some more fundamental concepts, we are able to express our own variations of many powerful architectural patterns. These package coupling heuristics offer guidance when designing our package relationships. In addition, we'll explore how these heuristics serve as the foundation of many architectural patterns we have likely become accustomed to using. |