Component level design in object oriented approach focuses on elaboration of analysis classes and the definition and refinement of infrastructure classes.
BASIC DESIGN PRINCIPLES
There are four basic design principles that are adopted to component level design.
Open-Closed Principle
A component or module should be open for extension and closed for modification. It means that the component should be allowed to extend without the need to make any internal changes. Abstractions are created that serve as a buffer between functionality that is expected to be extended and the design class itself.
Liskov Substitution Principle(LSP)
This principle suggests that a component that uses a base class should continue to function properly if a class derived from the base class is passed to the component instead. When a derived class is created, it also conforms to the pre- and post- conditions.
Dependency Inversion Principle(DIP)
This principle depends on abstractions. It does not depend on concretions. The more a component depends on other concrete components, the more difficult it will be to extend.
Interface Segregation Principle(ISP)
This principle suggests that a specialized interface should be designed to serve each major category of clients. Operations relevant to that category of clients should be described in interface. If multiple clients require same operations, they should be specified in each of the specialized interfaces.
Release Reuse Equivalence Principle(REP)
This principle suggests that when classes and components are designed for reuse, an implicit contract is established between the developer and the people who are using it. Older versions of entity are maintained by the developer who establishes a release control system.
Common Closure Principle(CCP)
This principle suggests that classes should address the same functional or behavioral area when they are packaged as part of a design.
Common Reuse Principle(CRP)
This principle suggests that release number of the package changes when one or more classes with a package changes. All other classes or packages that rely on the package that has been changed must now update to the most recent release of the package and be tested to ensure that new release operates without incident.
No comments:
Post a Comment