Component Level Design

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 2

Component level design:

A component is a modular building block for computer software. More formally, the OMG Unified Modeling language specification defines a component as a modular, deployable and replaceable part of a system that encapsulates Implementation and exposes a set of interfaces. Component-level design occurs after the first iteration of architectural Design has been completed. At this Stage, the overall data and program Structure of the software has been established. The intent is to translate the design model into operational software. Four basic design principles are applicable to component level design and have been widely adopted when object-oriented software engineering is applied. The underlying motivation for the application of these principles is to create designs that are more amenable to change and to reduce the propagation of side effects when changes d o occur. You can use these principles as a guide as each software component is developed. The Open Closed Principle (OCP): A module should be opened for extension but closed for modification. The Liskov Substitution Principle (LSP): Subclasses should be substitutable for their base classes. Dependency Inversion Principle (DIP): Depend on abstractions, Do not depend on concretions. The interface segregation Principle (ISP): Many client-specific interfaces are better than one general purpose interface. The Release Reuse Equivalency Principle (REP): The granule of reuse is the granule of release. The Common Closure Principle (CCP): Claases that change together belong together. The Common Reuse Principle (CRP): Classes that are not reused together should not be grouped together. Guide lines for component level design: Components: Naming conventions should be established for components that are specified as part of the architectural model and then refined and elaborated as part of the component-level model. Architectural component names should be drawn from the problem domain and should have meaning to all stakeholders who view the Architectural model.

Interfaces: Interfaces provide important information about communication and collaboration. Dependencies and Inheritance: For improved readability, it is a good idea to model dependencies from left to right and inheritance from bottom derived classes) to top (base classes). Cohesion: Cohesion implies that a component or class encapsulates only attributes and operations that are closely related to one another and to the class or component itself Coupling: Coupling is a qualitative measure of the degree to which classes are connected to one another. As classes (and components) become more interdependent, coupling increases. An important objective in component-level design is to keep coupling as low as is possible.

You might also like