Title: Composition Problems, Causes and Solutions
1Composition Problems, Causes and
Solutions Luyin Zhao J.D.Edwards Program
2Problem Introduction
- Traditionally
- Development is based on single framework
- Frameworks are designed for extension
Bring About
- Framework Composition Problems
- Composition of framework control
- Composition with legacy components
- Framework gap
- Overlap of framework entities
- Composition of entity functionality
3Problem 1Composition of Framework Control
Application Code
Controls invokes
Measurement system framework
GUI framework
Calling Frameworks
4Problem 2 Composition with Legacy Components
- Lack of domain-specific behavior
- Adopt legacy system
- Consequence
- Incompatibility between framework and legacy
system, such as class name confliction
5Problem 3 Framework Gap
- Two frameworks are non-overlap and the composed
structure is lack of functionality. - Consequence
- If the framework is a called framework
- Wrapping Approach
- If the framework is a calling framework
- Complex mediating software is needed
-
6Problem 4 Composition Overlap of Framework
Entities
It is possible that multiple frameworks contain
the representations of the same real-world
entity. Consequence Composition becomes complex
when different representations influence each
other
7Problem 5 Composition of Entity Functionality
Real world entity involves functionalities from
different frameworks Consequence No simple way
to achieve only by composing respective classes
8Problem 6 Architectural mismatches
Two or more integrated frameworks with different
architectural styles fail to interoperate even
the integration of these systems makes sense from
an application-domain perspective.
9Underlying Causes
- Framework cohesion
- Framework classes have cohesive behavior, which
is tightly coupled with entities inside
framework. it is difficult for outside classes to
gain this behavior
10Underlying Causes
- Domain Coverage
- Lack of domain scope standards. It may cause no
domain overlap, little domain overlap and
considerable domain overlap among frameworks.
11Underlying Causes
- Design Intention
- The design for most frameworks is for reuse by
extension and one-way communication. Several
issues regarding framework composition were not
considered in design.
12Underlying Causes
- Access To Source Code
- SE may only get the compiled code or the source
code is too complex to be analyzed. - Even wrapper could not solve some problems in
framework composition
13Solutions for problem 1
- Integrate framework control (change event loops
in the frameworks). - Concurrency
- Framework has own control thread
- Wrapping
- Wrapper intercept inter-framework messages
- Remove and rewrite
- Change some control loop (need source code)
14Solutions for problem 2
- Adapter design pattern
- Methods in adapter forward request to the
equivalent methods in the legacy class - Change framework
- Change part of framework related with legacy
class - Roles
- Represent the frameworks reuse interface as a
set of roles. Then fill the roles with classes
related to the framework or existing legacy
classes
15Solutions for problem 3
- Wrapping
- Extend the missing functionality of a called
framework through additional API - Mediating software
- Manage interaction and extend functionalities
to fill the gap - Redesign and extend
- Need source code
16Solutions for problem 4
- Multiple inheritance
- take care of updates and conversions between
different entity representations of two
frameworks. - Aggregation
- Contain every entity representations as parts
- Subclassing and aggregation
- Subclass each framework classes representing
real-world entity, then aggregate them into an
additional aggregate class - Subject orientation
17Solutions for problem 5
- Aggregation or multiple inheritance
- Compose the framework classes with the required
functionality into a single class - Observer design pattern
- Domain-specific class can be extended with
notification behavior through Observer design
pattern
18Solutions for Problem 6
- Modifying or changing architectural components.
- Possible negative impacts, need source code
- Wrapping
- Introducing multilingual framework components.
- Interface adaptation and interface
standardization