Component based models and technology

53
Component Based Models and Technology

Transcript of Component based models and technology

Page 1: Component based models and technology

Component Based Models and Technology

Page 2: Component based models and technology

Introduction

In contrast to design, which usually denotes a well-defined phase in the software life cycle between requirements engineering and implementation, modeling covers all activities ranging from analytical studies of an application domain to testing of system parts.Our experience has shown that these activities require a lot of knowledge and creativity. Thus it is not purposeful to structure modeling activities by a strict method. The process of modeling is not predictable and cannot be controlled in a generic way.Important properties of design or modeling techniques are the various visualrepresentation forms (diagrams and descriptions) of several system aspects.We are not surprised by this focusing on design description and representation, because our view on modeling agrees that it is simply impossible to find adequate solutions just by following a strict method.

Page 3: Component based models and technology

Style of Representation

The main purpose of the representation of the architecture is the documentation of (intermediate) results of the modeling process to communicate the concepts among developers, managers, programmers and anyone else. On the one hand, it should be relatively (programming) language-independent, but, on the other hand, the implementation should be rather straightforward. Due to the importance of reusability, prefabricated components should be easily embedable.Most representation techniques use primarily diagrams and charts to capture the essential model concepts. The reason is the more direct transformation of mental models into graphic images and their better intuitive comprehensibility.But graphics have their drawbacks: They tend to require enormous drawing space which is usually just not available or useful.Furthermore, transforming a graphic diagram into an executable program is often a nontrivial, error-prone task. In this respect, textual representations are superior. Unfortunately, they are less intuitive and prove inferior as thinking tools or vehicles. So our solution encompasses both, a graphical and a textual representation.

Page 4: Component based models and technology

Composition Representation

The first kind of diagram or description depicts the decomposition of (part of) the system into components and how these components are coupled. Each building block has a unique name and a number of essential attributes. The attributes serve to describe the main characteristics of their components.Direct coupling expresses that one component uses another directly for some reason and that the former knows the actions of the latter. Hence all actions defined by the used part can be invoked.Indirect coupling means that the first component can only use a (typically small) set of standardized actions which are forwarded by the mediating component. Mediating components which do not offer additional functionality are represented in a collapsed form by a small circle.

Page 5: Component based models and technology

Figure depicts a component structure model consisting of three coupled components.The second attribute of component2 holds a string value, which can be written directly behind the attributes name whenever no other component refers to the string.

The following textual description represents similar structure in a textual form.

Page 6: Component based models and technology

The textual description gives a better chance to annotate attributes and couplings. Components of the same kind, but with different couplings, can be described collectively in a list as shown for comp4 , comp5, comp6 . Indirect coupling is indicated by a symbolized double arrow (->->).The purpose of the component representation is to describe the static structure of the system. To complement this picture, we need a description of the dynamic behavior, which is introduced in the next section.

Page 7: Component based models and technology

Collaboration Representation

It is not possible to give one aspect absolute precedence over the other; both the composition and the collaboration model have to be developed in parallel.For equal rights reasons, we now start with a textual representation. It first describes the components by relevant actions and events which can and should be used by other components. Each action is introduced by a leading ”>” symbol; the events are marked by an appended ”>” symbol. Next, we describe all collaborations with causality relationships. A causality relationship associates an event of an originator component with an action of a receiver component. The meaning is obvious: Whenever the originator component triggers the event (because of a state change during an action execution), the associated action is invoked at the specified receiver component. Optionally, a collaboration relationship may specify a list of arguments which serve as parameters for the action. The collaboration relations of a component implemented by a generic event dictionary where the event names serve as keys and the action commands can be registered appropriately. When an event is triggered in a specific component at run time, a dispatching mechanism looks up in the event dictionary and activates one by one the action commands that are registered for the event.

Page 8: Component based models and technology

As in the composition model, equal components can be described collectively by arranging them in a list. Figure 2 depicts the dynamic collaboration model in a graphic form.

Page 9: Component based models and technology

Layered Application Architecture

Composing applications out of components is not as simple as building toy models out of Lego bricks; therefore we suggest a layered architecture for highly interactive applications, with well defined functionality at each layer. For typical information system applications, our architecture model consists of four layers, as shown in Figure.

Page 10: Component based models and technology

Layer 1: User Interface ModelThe user interface layer consists entirely of the user interface building blocks, i.e., components which have a run-time representation on the screen. Obviously, the task of these components is visualizing of application data and control devices as well as capturing user input and triggering events for invoking the associated commands. Very often, user interface componentscan be changed either by direct manipulation by the user (e.g., selecting a list item) or by changing program states (e.g., updating a displayed list). Since interaction components cannot assume any functionality of the functional components, the collaboration can only be configured dynamically in one directionLayer 2: Application Model

The application model consists of components which form the functional core of the application. It has to build up and open the user interface at program start. During program execution the application components have to maintain the user interface according to the program state. Actuating a control element at the user interface usually results in invoking a method of the application model. Since the application model knows the user interface model as well as the lower-level model, it establishes the dynamic collaboration relationships among all components. It is purposeful to decompose a complex application model into several independent components which either work together via dynamic collaboration or even better are just synchronized by the underlying layer.

Page 11: Component based models and technology

Layer 3: Access ModelThe access layer serves as mediator between the user interface or the application model on the one side and the domain model on the other side. It has two important tasks: first, synchronizing accesses to and updates of the data (i.e., broadcasting changed events to all dependent view or application components) and second, supplying view components with their data when required. Ideally, the access layer should completely hide and encapsulate the underlying data, but provide controlled access. Therefore, only values and copies of data objects should be passed through to the higher layers. Application-specific access model components can be viewed as the respective handling instances (authorities) for the domain components.Layer 4: Domain ModelThe primary purpose of the domain model is to store the application data during program execution. We prefer to use a structural object model, which is an object-oriented data model of the domain. The domain model provides all necessary operations for querying and manipulating the data in a basic, application-independent form. Furthermore, the domain model is responsible for checking all integrity conditions and ensuring other semantic characteristics of the data model. If separated domain models might influence each other, all manipulations should be done via the access layer. In such cases, only dynamic collaboration can be used.

Page 12: Component based models and technology

Modeling Process ActivitiesDomain InvestigationHaving a sound knowledge on the problem domain is an absolute requirement for being able todevelop systems that solve real problems. For acquiring problem domain knowledge, a numberof techniques have been discovered and proven purposeful, including interviews,questionnaires and accumulation of artifacts (forms, reports). Additionally, use cases andscenarios can be used for describing business process activities. These utilities are documentedextensively in the requirements engineering literature.

Conceptual Modeling"Conceptual modeling denotes an understanding and construction process with the purpose of forming a model of some part of the world expressed by concepts and phenomena, i.e. a concept formation process. The purpose of the model may either be the understanding of some existing system or the design of some new model system."The resulting model describes or represents concepts and phenomena of the problem domain and their relationships in an informal way, so that the concepts and phenomena can be communicated among all involved persons.

Page 13: Component based models and technology

User Interface Modeling (Prototyping)A crucial step in modeling is the development of a user view of the system.This can be done by involving the experts (i.e., end users) as important participants in the process.

Data ModelingEspecially (but not exclusively) in information system development, data structures form adecisive factor in the development process. The data engineering community has created a richrepertoire for many aspects of data modeling.

Behavior ModelingWhat we term behavior modeling is a consolidation and simplification of dynamic and statemodeling as described by Rumbaugh et al. [Rumbaugh91]. Here we view the system model asa state automaton where each system state or mode is expressed in domain subject terms. Thebehavior model is formed by a list of transactions. Each transaction is described by a usercommand (input), a current state, the resulting visual response (output) and the resulting newor old state. Additionally, each transaction may specify its implications on the data model. It isimportant to understand that our behavior model views the system as a black box with aknown internal state. The behavior model should closely correspond to the conceptual modelof the end user of the system.

Page 14: Component based models and technology

Component ModelingComponent modeling encompasses the activities of finding and identifying all components,defining attributes, defining actions, defining events, and defining couplings and collaborationsof the proposed composition and collaboration model.Components are usually already indicated by nouns of the glossary. They often correspondto nouns, but in contrast to object modeling, closely related things which cannot existindependently are grouped together within one component. Adjectives which can be associatedwith component nouns are often candidates for attributes and verbs for actions. Since nocomponent is an island, some attributes may refer to other components, and/or events can beidentified which may be of interest to the environment

Interface Definition ModelingWe assume that a number of components can be reused from a library of prefabricated parts.Only components which are not already available have to be implemented by means of aprogram. For this purpose we suggest deriving class interface definitions out of the componentmodel. Developing the class definitions requires some experience to find good compromisesbetween optimal suitability for the system at hand and enough flexibility for future changes orreuse engagements for the component.

Implementation and TestPerhaps surprisingly, these activities belong to the modeling activities, too. But creating anexecutable system in parallel with other modeling activities has the advantage that manyhindsights gained from programming can improve the overall process and the product.Additionally, feasibility or efficiency problems of any kind arise much earlier, and developersare motivated by an already working subsystem.

Page 15: Component based models and technology

Component TechnologiesComponent Technologies

Page 16: Component based models and technology

Overview Introduction ACME Architectural Description Language Java Bean Component Model COM, DCOM, MTS and COM+ CORBA Component Model (CCM) .NET Component Model OSGI Component Model

Page 17: Component based models and technology

Introduction

A Short Historical Perspective Component Interface and Connections Performing Services Transparently

Page 18: Component based models and technology

A Short Historical Perspective

Programming languages, can be seen from either The run-time point of view or, The design and reuse perspective

Page 19: Component based models and technology

Component Interface and Connections

ADLs primarily address the issues related to the early phases of software engineering: Design Analysis

They identify a number of concepts, such as: Architecture, configurations, connectors, bindings,

properties, hierarchical models, style, static analysis and behavior.

Page 20: Component based models and technology

Component Interactions

Iteractions withtraditional software entities

Interactions withother

components

Interact withother

component

Interactions withcomponent

infrastructure

Components

Traditional software entities

Component Infrastructure

Page 21: Component based models and technology

Majors steps in CBD lifecycle

Aspect Phase Actor

Interface Definition Designer

Assembly Assembly Architect

Implementation Implementation Developer

Lifecycle Packaging, Deployment

Administrator

Framework, run-time support

Execution End User

Page 22: Component based models and technology

ACME Architectural Description Language

Components and Ports Connectors and Roles Systems and Attachments Representations and Bindings Properties, Constraints, Types and Styles

Page 23: Component based models and technology

Components and Ports

Components Represent the computational elements and data

stores of a system. Ports

Are the points of interaction between a component and its environment.

Component

Port

Page 24: Component based models and technology

Connectors and Roles

Connectors Represent interactions between components such as

method calls or an SQL connection between a client and a database server.

The interface of a connector is defined as a set of roles

Connector

Role

Page 25: Component based models and technology

Systems and Attachments The structure of a system is specified by a set of

components, a set of connectors, and a set of attachments.

Attachment Links a component port to a connector role.

Attachement

Page 26: Component based models and technology

Representations and Bindings

Connector

Component

PortRole

AttachementBinding

Page 27: Component based models and technology

Java Bean Component Model

Key Features Interface of a Component Implementation of a Component Components Assembly Packaging and Deployment

Page 28: Component based models and technology

Key Features Bean Box "A Java Bean is a reusable software component that

can be manipulated visually in a builder tool”. The Java Bean was designed for the construction of

graphical user interface (GUI). Explicitly tailored to interact in two different contexts:

At composition time, within the builder tool. At execution time, with the runtime environment.

Page 29: Component based models and technology

Interface of a Component

This model defines four types of port: methods, properties, event sources and event sinks called listeners.

Read-only property

Write-only property

Property

Method

Event source

Event sink (listener)

Bounded property

v Vetoable property

ro

wo

1 Unicast event source

Ports

Page 30: Component based models and technology

Implementation of a Component Most bean components are implemented by a simple

Java object, the object being encapsulated in the component, but there are more sophisticated implementations possible. Wrapping a legacy object. Multiple-objects implementation. Dependency on traditional entities.

Page 31: Component based models and technology

Implementations of Bean Components

Object

Method

Method call

Binding

A simple implementation A more complex implementation

Page 32: Component based models and technology

Components Assembly Assembly is one of the key features of Java Bean

though no not specific solution is provided. Different ways of assembling components are

supplied.

Component-based assembly Heterogeneous assembly

Page 33: Component based models and technology

Packaging and Deployment

Java Beans define a model for packaging components into archives. Includes the definition of dependency relationships between

the package items. The customization code can be more complex than

the component itself! Each package item can be marked "Design Only", so

that they can be removed in a final application.

Page 34: Component based models and technology

COM, DCOM, MTS and COM+

Interfaces and Assembly Implementation Framework Lifecycle

Page 35: Component based models and technology

Interfaces and Assembly A COM interface is seen as a C++ virtual class and t

akes the form of a list of data and function declarations without associated code.

All interfaces are descendants of the IUnknown interface.

Component interface

Interface

Component implementation

Page 36: Component based models and technology

Implementation

A COM object is a piece of binary code, written in any programming language, as long as the compiler generates code following the binary interoperability convention.

Page 37: Component based models and technology

Framework

Standard interfaces A simple run-time

Page 38: Component based models and technology

Lifecycle

COM, and COM+ are strictly execution time and binary component models.

No lifecycle issues are explicitly supported.

Page 39: Component based models and technology

CORBA Component Model (CCM)

Interface and Assembly Framework : The Container Approach

Lifecycle

Page 40: Component based models and technology

Interface and Assembly

A component interface is made of ports divided into: Facets Receptacles Event sources Event sinks

Component interface

Attribute

Facet

Event source

Event sink

Ports

Receptacle Segment

Component implementation

Page 41: Component based models and technology

Framework : The Container Approach

Services can be made available to components without having to change that component’s source code.

CCM run-time infrastrucure

container

Page 42: Component based models and technology

Lifecycle

CCM is the best effort to date: To gather the advances made in different fields, To include a wide spectrum of lifecycle activities,

while still claiming efficiency and heterogeneity capabilities,

However, the whole does not provide the feeling of being as “simple” as claimed.

Page 43: Component based models and technology

.NET Component Model

Interfaces and Assembly Implementation Framework Lifecycle

Page 44: Component based models and technology

Interfaces and Assembly programming language approach for component program

ming. The program contains the information related to the relati

onships with other “components”, and that the compiler is responsible for generating the information needed at execution.

There is no explicit concept of connection but rather the traditional list of imported and exported resources.

Page 45: Component based models and technology

Implementation A component (assembly) is made of modules, which

are traditional executable files (DLL). Modules cannot be assemblies, thus the .NET model

is not hierarchical.

Component interface

Attribute

Method

Event source

Ports

Event source

Component implementation

Modules

Page 46: Component based models and technology

Framework

.NET relies on the traditional programming approach : the framework is seen as the language run-time support.

Transaction control relies on MTS.

Page 47: Component based models and technology

Lifecycle Assemblies (and their modules) are local to an

application, and thus different DLLs with same name can run simultaneously.

Each assembly has a versioning information about itself and about the assemblies it depends on. Version control is delegated to the dynamic loader, which selects

the “right” version. Significantly improve the application packaging and

deployment. Early lifecycles phases do not seem to have received

much attention.

Page 48: Component based models and technology

OSGI Component Model Components Interface of a Bundle Component Assembly of Bundle Components Implementation of a Bundle Component

Page 49: Component based models and technology

Components A bundle use three kinds of ports to express its

interactions with Traditional technology Other components The run-time environment

Bundles may listen to events published by the framework such as the insertion of a new component in a system.

Page 50: Component based models and technology

Interface of a Bundle Component

Package export

Package import

Service use

Ports

Service interface

static

dynamic

Interface of a bundle component

Page 51: Component based models and technology

Assembly of Bundle Components

A system is an evolving set of bundle components. A bundle component publishes a service interface

It can attach to it a set of properties describing its characteristics.

A component requires an interface for its use, It will select one via a query expression based on these

properties. This flexibility also has its counterpart

There is no guarantee than the service will continue to be available

Page 52: Component based models and technology

Implementation of a Bundle Component JAR archive containing: 

Service components Java packages Other resources files

Package

Resource

Service component

Activator

Page 53: Component based models and technology

Thank you!Thank you!

Mayukh Maitra (2K11/SE/038)Saransh Garg (2K11/SE/063)Siddharth Malhotra (2K11/SE/074)Isha Panesar (2K11/SE/034)