ROLE-BASED COMPONENT
ENGINEERING
 Submitted By-
Rahul(2k11/SE/054)
Suraj Prakash(2k11/SE/078)
OVERVIEW
 Role-based components
 Motivating the use of roles
 Role technology
 Frameworks and roles
ROLE-BASED COMPONENTS
 Focusing on the following aspects of object-oriented
components:
 The interface
 The size or granularity
 Encapsulation
 Composition mechanisms
COMPONENTS
 The interface of a component defines the syntax of
how to use a component. The semantics of the
interface are usually implicit.
 Reusability
 Plug-ability
CONCEPT OF ROLES
 Components may have several different uses in a system
that are dependent on the different roles a component can
play in the various component collaborations in the
system.
 With role-based components is that the public interface is
separated into smaller interfaces, which model these different
roles.
KEMERER AND CHIDAMBER’S SIX
METRICS
 WMC: Weighted Methods per Class
 DIT: Depth of Inheritance Tree
 NOC: Number Of Children
 CBO: Coupling Between Object classes
 RFC: Response For a Class
 LCOM: Lack of COhesiveness in Methods
WMC - WEIGHTED METHODS PER
CLASS
 In terms of classes:
 This metric reflects the notion that a complex class has a
larger influence on its subclasses than a small class.
 In terms of roles:
 Roles model only a small part of a class interface.
 The amount of WMC of a role is typically less than that of
a class.
 Components are accessed using the role interfaces.
 A smaller part of the interface must be understood than
when the same component is addressed using its full
interface.
DIT - DEPTH OF INHERITANCE TREE
 In terms of classes:
 This metric reflects the notion that a deep inheritance
hierarchy constitutes a more complex design.
 In terms of roles:
 The DIT value will increase since inheritance is the
mechanism for imposing roles on a component.
 It should be noted however that roles only define the
interface, not the implementation.
 Thus while the DIT increases, the distribution of
implementation throughout the inheritance hierarchy is not
affected.
NOC - NUMBER OF CHILDREN
 In terms of classes:
 This metric reflects the notion that classes with many
subclasses are important classes in a design.
 In terms of roles:
 Since role interfaces are typically located at the top of the
hierarchy, the NOC metric will typically be high.
 In a conventional class hierarchy, a high NOC for a class
expresses that that class is important in the hierarchy.
 Similarly, roles with a high NOC are important and have a
high cohesiveness value.
CBO - COUPLING BETWEEN OBJECT
CLASSES
 In terms of classes:
 This reflects that excessive coupling inhibits reuse and
that limiting the number of relations between classes
helps to increase their reuse potential.
 In terms of roles:
 The CBO metric will decrease since implementation
dependencies can be avoided by only referring to role
interfaces rather than by using classes as types.
RFC - RESPONSE FOR A CLASS
 In terms of classes:
 This metric measures the number of methods, which can
be executed in response to a message.
 In terms of roles:
 Since roles do not provide any implementation, the RFC
value will not increase in implementation classes.
 It may even decrease because class inheritance will be
necessary to inherit implementation only, interfaces no
longer.
LCOM - LACK OF COHESIVENESS IN
METHODS
 In terms of classes:
 This metric reflects the notion that non-cohesive classes
should probably be separated into two classes and that
classes with a low degree of cohesiveness are more
complex.
 In terms of roles:
 Roles typically are very cohesive in the sense that the
methods for a particular role are closely related and roles
will thus, typically, have a lower LCOM value.
TRANSFORMATION CONCLUSIONS
 Roles reduce complexity (improvement in CBO, RFC and
LCOM metrics).
 Roles increase complexity in the upper half of the
inheritance hierarchy (Higher DIT and NOC values).
ROLE TECHNOLOGY
 Using roles at the design level
 Using roles at the implementation level
USING ROLES AT THE DESIGN LEVEL
 Reenskaug proposes an extension to UML:
 General way to express object collaborations
 Not too general (class diagrams)
 Not too specific (object diagrams)
 Uses classifier -roles to denote the position an object
holds in an object structure.
CATALYSIS
 Catalysis:
 Is a very extensive methodology based on UML, using the
concepts of frameworks to model component interactions.
 It includes a notion of types and type models.
 A type corresponds to a role.
 A type model describes typical collaborations between
objects of that type.
USING ROLES AT THE
IMPLEMENTATION LEVEL
 Implementation languages:
 Are typically on a lower abstraction level than the design.
 Relations between classes in UML are commonly
translated to pointers and references when a UML class
diagram is implemented in, for example, C++.
 With roles, a similar loss of information occurs.
 The advantage of expressing roles in this way is that
references to other classes can be typed using the
interfaces.
MIXING CLASSES
 Interfaces can be simulated by using abstract classes
containing only virtual methods without
implementation.
 Since C++ supports multiple inheritance, these abstract
classes can be combined as in Java.
 This style of programming is often referred to as using
mixing classes.
USING MULTIPLE LANGUAGES
 Roles can also be mapped to IDL interfaces, which makes
it possible to use multiple languages (even those not
object-oriented) in one system.
USING MULTIPLE LANGUAGES:
EXAMPLE
 According to the API Documentation, the JButton
class in the Swing Framework implements the
following Java interfaces:
 Accessible, ImageObserver, ItemSelectable,
MenuContainer, Serializable, SwingConstants.
 These interfaces can be seen as roles, which this class
can play in various collaborations.
 The Serializable interface, for example, makes it
possible to write objects of the JButton class to a binary
stream.
FRAMEWORKS AND ROLES
 Using roles together with object-oriented frameworks
is useful.
 Object- oriented frameworks are partial designs and
implementations for applications in a particular domain.
 By using a framework, the repeated re-implementation of
the same behaviour is avoided and much of the
complexity of the interactions between objects can be
hidden by the framework.
 An example of this is the Hollywood principle ("don't call
us, we'll call you") often used in frameworks.
BLACK-BOX AND WHITE-BOX
FRAMEWORKS
Classes
Components
Abstract classes
Interfaces
Design documents
Are a part of
Inherit
Implement
Partially implement
Reflect
FRAMEWORK ELEMENTS
 Design documents
 Role Interfaces
 Abstract classes
 Components
 Classes
A MODEL FOR FRAMEWORKS
 In this section we will do so by specifying the general
structure of a framework and comparing this with
some existing ideas on this topic.
 Composition of framework control
 Composition with legacy code
 Framework gap
 Overlap of framework functionality
DEALING WITH COUPLING
 More coupling between components means higher
maintenance costs (McCabe’s cyclomatic complexity).
STRATEGIES FOR DEALING WITH
COUPLING
 That which they have in common is that for component X
to use component Y, X will need a reference to Y.
 Y is created by X and then discarded.
 Y is a property of X.
 Y is passed to X as a parameter of some method.
 Y is retrieved by requesting it from a third object.
DEPENDENCIES BETWEEN
COMPONENTS
 Regardless of how the reference is obtained, there
are two types of dependencies between components:
 Implementation dependencies: The references used in
the relations between components are typed using
concrete classes or abstract classes.
 Interface dependencies: The references used in the
relations between components are typed using only
interfaces.
DEPENDENCY CONSIDERATIONS
 Disadvantage of implementation dependencies
 It is more difficult to replace the objects to which the
component delegates.
 When interface dependencies are used, the object
can be replaced with any other object implementing
the same interface.
 Interface dependencies are thus more flexible and should
always be preferred to implementation dependencies.
 In the model presented in this section, all
components implement interfaces from role models
making the use implementation dependencies in the
implementation of these components unnecessary.
THANK YOU !

Rbce

  • 1.
    ROLE-BASED COMPONENT ENGINEERING  SubmittedBy- Rahul(2k11/SE/054) Suraj Prakash(2k11/SE/078)
  • 2.
    OVERVIEW  Role-based components Motivating the use of roles  Role technology  Frameworks and roles
  • 3.
    ROLE-BASED COMPONENTS  Focusingon the following aspects of object-oriented components:  The interface  The size or granularity  Encapsulation  Composition mechanisms
  • 4.
    COMPONENTS  The interfaceof a component defines the syntax of how to use a component. The semantics of the interface are usually implicit.  Reusability  Plug-ability
  • 5.
    CONCEPT OF ROLES Components may have several different uses in a system that are dependent on the different roles a component can play in the various component collaborations in the system.  With role-based components is that the public interface is separated into smaller interfaces, which model these different roles.
  • 6.
    KEMERER AND CHIDAMBER’SSIX METRICS  WMC: Weighted Methods per Class  DIT: Depth of Inheritance Tree  NOC: Number Of Children  CBO: Coupling Between Object classes  RFC: Response For a Class  LCOM: Lack of COhesiveness in Methods
  • 7.
    WMC - WEIGHTEDMETHODS PER CLASS  In terms of classes:  This metric reflects the notion that a complex class has a larger influence on its subclasses than a small class.  In terms of roles:  Roles model only a small part of a class interface.  The amount of WMC of a role is typically less than that of a class.  Components are accessed using the role interfaces.  A smaller part of the interface must be understood than when the same component is addressed using its full interface.
  • 8.
    DIT - DEPTHOF INHERITANCE TREE  In terms of classes:  This metric reflects the notion that a deep inheritance hierarchy constitutes a more complex design.  In terms of roles:  The DIT value will increase since inheritance is the mechanism for imposing roles on a component.  It should be noted however that roles only define the interface, not the implementation.  Thus while the DIT increases, the distribution of implementation throughout the inheritance hierarchy is not affected.
  • 9.
    NOC - NUMBEROF CHILDREN  In terms of classes:  This metric reflects the notion that classes with many subclasses are important classes in a design.  In terms of roles:  Since role interfaces are typically located at the top of the hierarchy, the NOC metric will typically be high.  In a conventional class hierarchy, a high NOC for a class expresses that that class is important in the hierarchy.  Similarly, roles with a high NOC are important and have a high cohesiveness value.
  • 10.
    CBO - COUPLINGBETWEEN OBJECT CLASSES  In terms of classes:  This reflects that excessive coupling inhibits reuse and that limiting the number of relations between classes helps to increase their reuse potential.  In terms of roles:  The CBO metric will decrease since implementation dependencies can be avoided by only referring to role interfaces rather than by using classes as types.
  • 11.
    RFC - RESPONSEFOR A CLASS  In terms of classes:  This metric measures the number of methods, which can be executed in response to a message.  In terms of roles:  Since roles do not provide any implementation, the RFC value will not increase in implementation classes.  It may even decrease because class inheritance will be necessary to inherit implementation only, interfaces no longer.
  • 12.
    LCOM - LACKOF COHESIVENESS IN METHODS  In terms of classes:  This metric reflects the notion that non-cohesive classes should probably be separated into two classes and that classes with a low degree of cohesiveness are more complex.  In terms of roles:  Roles typically are very cohesive in the sense that the methods for a particular role are closely related and roles will thus, typically, have a lower LCOM value.
  • 13.
    TRANSFORMATION CONCLUSIONS  Rolesreduce complexity (improvement in CBO, RFC and LCOM metrics).  Roles increase complexity in the upper half of the inheritance hierarchy (Higher DIT and NOC values).
  • 14.
    ROLE TECHNOLOGY  Usingroles at the design level  Using roles at the implementation level
  • 15.
    USING ROLES ATTHE DESIGN LEVEL  Reenskaug proposes an extension to UML:  General way to express object collaborations  Not too general (class diagrams)  Not too specific (object diagrams)  Uses classifier -roles to denote the position an object holds in an object structure.
  • 16.
    CATALYSIS  Catalysis:  Isa very extensive methodology based on UML, using the concepts of frameworks to model component interactions.  It includes a notion of types and type models.  A type corresponds to a role.  A type model describes typical collaborations between objects of that type.
  • 17.
    USING ROLES ATTHE IMPLEMENTATION LEVEL  Implementation languages:  Are typically on a lower abstraction level than the design.  Relations between classes in UML are commonly translated to pointers and references when a UML class diagram is implemented in, for example, C++.  With roles, a similar loss of information occurs.  The advantage of expressing roles in this way is that references to other classes can be typed using the interfaces.
  • 18.
    MIXING CLASSES  Interfacescan be simulated by using abstract classes containing only virtual methods without implementation.  Since C++ supports multiple inheritance, these abstract classes can be combined as in Java.  This style of programming is often referred to as using mixing classes.
  • 19.
    USING MULTIPLE LANGUAGES Roles can also be mapped to IDL interfaces, which makes it possible to use multiple languages (even those not object-oriented) in one system.
  • 20.
    USING MULTIPLE LANGUAGES: EXAMPLE According to the API Documentation, the JButton class in the Swing Framework implements the following Java interfaces:  Accessible, ImageObserver, ItemSelectable, MenuContainer, Serializable, SwingConstants.  These interfaces can be seen as roles, which this class can play in various collaborations.  The Serializable interface, for example, makes it possible to write objects of the JButton class to a binary stream.
  • 21.
    FRAMEWORKS AND ROLES Using roles together with object-oriented frameworks is useful.  Object- oriented frameworks are partial designs and implementations for applications in a particular domain.  By using a framework, the repeated re-implementation of the same behaviour is avoided and much of the complexity of the interactions between objects can be hidden by the framework.  An example of this is the Hollywood principle ("don't call us, we'll call you") often used in frameworks.
  • 22.
    BLACK-BOX AND WHITE-BOX FRAMEWORKS Classes Components Abstractclasses Interfaces Design documents Are a part of Inherit Implement Partially implement Reflect
  • 23.
    FRAMEWORK ELEMENTS  Designdocuments  Role Interfaces  Abstract classes  Components  Classes
  • 24.
    A MODEL FORFRAMEWORKS  In this section we will do so by specifying the general structure of a framework and comparing this with some existing ideas on this topic.  Composition of framework control  Composition with legacy code  Framework gap  Overlap of framework functionality
  • 25.
    DEALING WITH COUPLING More coupling between components means higher maintenance costs (McCabe’s cyclomatic complexity).
  • 26.
    STRATEGIES FOR DEALINGWITH COUPLING  That which they have in common is that for component X to use component Y, X will need a reference to Y.  Y is created by X and then discarded.  Y is a property of X.  Y is passed to X as a parameter of some method.  Y is retrieved by requesting it from a third object.
  • 27.
    DEPENDENCIES BETWEEN COMPONENTS  Regardlessof how the reference is obtained, there are two types of dependencies between components:  Implementation dependencies: The references used in the relations between components are typed using concrete classes or abstract classes.  Interface dependencies: The references used in the relations between components are typed using only interfaces.
  • 28.
    DEPENDENCY CONSIDERATIONS  Disadvantageof implementation dependencies  It is more difficult to replace the objects to which the component delegates.  When interface dependencies are used, the object can be replaced with any other object implementing the same interface.  Interface dependencies are thus more flexible and should always be preferred to implementation dependencies.  In the model presented in this section, all components implement interfaces from role models making the use implementation dependencies in the implementation of these components unnecessary.
  • 29.