Component Based Architecture Objectives Introduce notions of Software

Component Based Architecture

Objectives Introduce notions of Software Component Discuss Pros and Cons

Introduction Component-based Architecture used to Divide a problem into sub-problems Each sub-problem is associated with a component Interface plays an important role Motivation Components are highly reusable A component encapsulates the functionality and behaviors of a software element into a reusable and self-deployable binary. Use of COTS or developed in-house components Increases overall reliability Can greatly reduce development cost

Components Important points A component is a deployable software package that can provide services to its client It may require services from other components It remains self-contained and substitutable as long as it interface is unchanged.

Components Vs. OO design A component-oriented represents a higher level of abstraction than an equivalent OO design The component-oriented design defines components and connections between them instead of classes and connections between classes In component-oriented design First identify all components and their interfaces Advantages over OO design Reduced time in market Lower development costs by reuse of the existing components, and increased reliability with reuse of the existing components

Component Examples Many standard component frameworks COM/DCOM Java. Bean EJB CORBA. Net Web Services Grid Services

What is Component A component is a modular (cohesive), deployable (portable), replaceable (plug-and –play), and reusable set of well-defined functionalities that encapsulates its implementation and exports it as a higher-level interface. • It is called as provided port • It is called as required port • Services the component provides • Services the component requires • Supported Interface Ports may be connected synchronously or asynchronously or via I/O streams

Example A UML component can be mapped to any target technology component Examples: EBJ Component (. jar file) Java Web Component (. war file) What about MS. Net Component? ü. dll file

Why use components? Reusability Productivity Composability Adaptibility Scalability Reliability and many others

Component Implementation Usually consists of a set of class files Abstract Interface Concrete Implementation Classes Note: Some IDE tools support visualization of components, e. g. , VS Studio. Net Toolset However, it does not mean that each component should have such a visual representation

Java Example: Java Counter package counter; interface Counter { public void set. Count(int c); public int get. Count(); public void inc(); }

Java Example: Implementation File import counter. *; class Couter. Impl implements Counter { private int count; public void set. Count(int c){ count = c; } public int get. Count(){ return count; } public void inc() { count ++; } }

Why Interface & Implementation? Separation of Interface and Implementation allows changeability! Example 1: Counter. Impl 1 my. Counter = new Counter. Impl 1(); my. Counter. inc(); Example 2: Counter. Impl 2 my. Counter = new Counter. Impl 2();

Principles of Component-Based Architecture Figure out semantics of connections Communication semantics important ü Local: relatively easy ü Remote: pay attention! many different call semantics Think about INTERFACE, not the implementation

Component Level Design Before the design phase, we have Use case modeling Business concept modeling Use case diagrams ü Describes user interactions with the system which indicate all necessary operations of the component We can map use case diagram to the provided service interfaces of the first-cut component specification

Component Level Design A collaboration diagram ü is an identifiable slice of functionality that describes a meaningful service involving several concepts. A collaboration diagram case the implementation of a use For each use case U, there will be a collaboration diagram “encapsulated” in a component C.

Component Level Design Use case component implementation

Component Level Design Business concept diagram ü Depicts the relationships of the business process entities in the domain ü Extract business process entities that can exist independently without any associated dependency on other entities. ü Recognize and discover these independent entities as new components.

Component Level Design Starts from Use Case Diagram May also need business concept diagram Mapping Use case interface provider conceptual classes modules of components If necessary, big components can be further decomposed

Example: Doctor Appt. System A clinic has dozen family doctors Each doctor has a schedule with slots of 15 minutes patients can make appointment patients can change and cancel appointment New patients are welcome doctor can mark off slots patients and doctors can display schedules on computer at any time

Use Case Diagram

Business Concepts Diagram Domain entities and business concept

Identification of Components and Types Assume no class diagram available Derived, so cannot exist independently Doctor and patients can exist alone without any dependency The UML notation for interface or core type is << >> The core type can exist independently Each core type has management interface A schedule belongs to doctor and is derived from appointments Daily appointments are derived from doctor-patient schedule

Component Design

Summary - CBA Applicable domain Suitable for where the interface contracts between sub-systems are clear. Suitable for loose coupling between the components and many reusable components are available Suitable for the class library system organization. . NET class library and Java API themselves are built in component architecture

Summary - CBA Benefits: Reusability of components: System maintenance and evolution: Independency and flexible connectivity of components Productivity Many OO design tools available Limitations: Sometime it is difficult to find suitable components to reuse. Adaptation of components is always an issue.
- Slides: 26