3. Different Levels of Abstraction
• Architecture Pattern
• Specify the structure of the overall system
• Integration Pattern
• Specify how many systems can interact with each other.
• Design Pattern
• Define a common ways to solve a common problems in design phase of systems
• Implementation Pattern
• Specify how a low level pattern that relate to the specific implementation will be written
4. Design Pattern - Taxonomy
• Creational Pattern
• Concern the process of object creation
• Structural Pattern
• Deal with the composition of classes or objects
• Behavioral Pattern
• Characterize the ways in which classes or objects interact and distribute responsibility
Notes de l'éditeur
1- Talk in general about the UML diagrams that are related to the DESIGN phase of system development such as (Component Diagram, Class Diagram, Object Diagram, Sequence Diagram) in addition to clearly describe how interface-based design is the main concept in system design
2- Describe the main principles that must be considered when a new system is being designed
3- Describe the pattern of problem-solution pairs that are common occurred in design new systems
4- show and describe the symptoms of poor design of any system that must avoid them in your design
Architectural Pattern expresses a fundamental structural organization schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them
Integration Pattern define the structure and the foundation that the systems should use interoperate with each other
Design Pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes a commonly recurring structure of communicating components that solves a general design problem within a particular context
Implementation Pattern is a low-level pattern specific to a particular platform. An implementation pattern describes how to implement particular aspects of components or the relationships between them, using the features of a given platform.
Creational Patterns: aim to separate a system from how its objects are created, composed, and represented. They increase the system’s flexibility in terms of the what, who, how, and when of object creation. Creational patterns encapsulate the knowledge about which classes a system uses, but they hide the details of how the instances of these classes are created and put together
Structural Patterns: employed while a system is being designed, or later on during maintenance and extension. In fact, some of them are specifically useful in the post-production stages of the lifecycle of a software system, when changes are introduced that were not foreseen and when even the interfaces between components need updating. Thus, sometimes when you want to add functionality, you will be working with existing classes that cannot be changed
Behavioral Patterns: are concerned with algorithms and communication between them. The operations that make up a single algorithm might be split up between different
classes, making a complex arrangement that is difficult to manage and maintain. The behavioral patterns capture ways of expressing the division of operations between classes and optimize how the communication should be handled.