KobrA: A Model-Driven Component-Based Software Product Line
Download
Report
Transcript KobrA: A Model-Driven Component-Based Software Product Line
KobrA:
A Model-Driven
Component-Based
Software Product Line
Engineering
Methodology
Jacques Robin
Ontologies
Reasoning
Components
Agents
Simulations
Outline
1. KobrA goals
2. KobrA principles
3. KobrA artifacts
4. KobrA process
5. KobrA Built-In Contract Testing
6. KobrA limitations
7. KobrA2 improvement goals
8. KobrA2 meta-model
9. A UML2 profile for KobrA2
10. KobrA2 process
KobrA Goals
Component-Based
(CBE)
Vision
Engineering
Assemble applications from
prefabricated parts
COTS component market
Web Services
Vision
Development activities
oriented around product
families
Manage commonalities
and variabilities
Product-Line
Engineering (PLE)
Pre-KobrA Obstacles
Current technologies (.NET, J2EE)
exclusively at the code-level
Little understanding of how to
scope components
KobrA
2
Obstacles
Larges upfront investment
Poor connection with regular
“single-system” technology
Pre-KobrA Obstacles
Lack of systematic methods for
creating PIMs
Fixed and Ad-hoc mapping
techniques
Model-Driven
Engineering (MDE)
Vision
Capture core software assets as platformindependent models (PIMs)
Automatically map PIMS to PSMs to code
through model transformation
KobrA Characteristics
Integrates:
Model-Driven Engineering
Component-Based Engineering
Product-Line Engineering
Object-Oriented Engineering
Recursive Top-down Decomposition/Refinement
Design Patterns
Quality Assurance
Scope focus:
In essence PIM construction, even tough historically conceived before OMG’s
distinction of CIM, PIM, PSM and source code executability levels
Engineering for reuse and then with reuse (weak on reuse of software artifacts
not developed for reuse)
Highest level part of CMMI technical solution process area
Artifact specification separate from process specification (idea reused in
SPEM2.0 standard)
Why?
Provide precise guidance on which UML diagrams to use for each part of a KobrA
component model
Without sacrificing process flexibility to be adaptable to a wide range of
circumstantial process needs
KobrA Principles
Uniformity to achieve simplicity and scalability through recursive
artifact nesting:
Uniform recursive software unit: KobrA component
Only behaviored classifier are KobrA components
Only operation-less Classes used only for data modeling
Uniform modeling language: precisely prescribed restricted subset of
UML1.4 diagrams completed with tables with predefined fields filled by
unrestricted natural language
Component engineering/assembly driven process:
Thus driven by architecture,
neither by entities and relationships (like BD and OO engineering),
nor by functionalities (like use-case driven engineering);
Avoids RUP inherent conflict between being entities (object) driven and
functionality (use-case) driven
KobrA Principles: Encapsulation
KobrA component clearly separates:
the externally exposed structure and behavior of a component needed
from its internally hidden structure and behavior that realize the
exposed ones as assembly of nested component
Component
External
view point
Specification
Internal
view point
Realization
thus component engineering (for reuse) = component assembly (with reuse)
+
=
+
=
KobrA Principles: Creation Tree
Driven Process
In general, the client/server model leads to arbitrary graph of
interconnected components
But, an arbitrary graph has numerous shortcomings as software structure:
No model of composition/nesting
No obvious development order
Tree based software structure has many advantages:
Natural model of composition/nested
Obvious development sequences
Recursive definitions and activities
Systematic
All together resulting in improved quality and reusability
How to reconciling arbitrary client server graphs with tree-based process?
Solution: by projecting graph on creation tree
Every software entity must be created by exactly one other entity
Every object-oriented system running today contains a creation tree
An entity normally creates the things to which it has a strong composition
relationship
KobrA Component Assembly
Client-Server Graph Projected on Creation Tree
A
imports
B
C
D
E
F
G
creates
H
I1
I2
KobrA Principles
Locality:
All diagrams show a restricted view of the global PIM limited to
artifacts directly related to a given component
Thus global PIM results from assembly of local UML diagrams and
complementary tabular and natural language artifacts
Separation of concern by distinguish 3 orthogonal engineering axis:
Specificity axis (product line common framework components vs.
product specific components)
Refinement/nesting axis (refinement level through recursive
engineering/assembly of nested components)
Executability axis (CIM, PIM, PSM, source code)
KobrA Principles: Locality
Run-time Hierarchy
Development Time Description
Traditional
approaches
“component of”
relationship
defines set of models
KobrA
(Principle of
Locality)
Separation of Concerns
Process does not fix whether to move first left, front or down in this cube
Executability
Framework
Framework
Engineering
Instantiation
Applicati
on
Implementation
Specificity
Refinement/Nesting
Implement
ation
KobrA Local Primary Artifacts
Specification
Behavior Model
(UML
statechart diagram)
Functional Model
(Operation specifications)
Structural Model
(UML class/object dia
KobrA
Component
Interaction Model
(UML collaboration diagrams)
Activity Model
(UML activity diagrams)
Structural Model
(UML class/object dia
Realization
KobrA Component Functional
Specification
For each operation provided as service by the component:
One table with predefined fields filled with unrestricted natural
language descriptions
e.g., createAccount Operation Specification
Name
createAccount
Informal
Description
An account is opened in a particular currency for a customer
with a particular name, and the Account ID is returned
Constraints
--
Receives
name : String
currency:String
Returns
A String with the ID of the account
Changes
bank
Assumes
Result
There is an exchange rate for the specified currency
A new account with a unique ID in the denomination,
currency, has been generated
The name of the customer has been stored in account
The account ID has been returned
KobrA Local Complementary Artifacts
Non-functional requirements specification
desired quality characteristics
Quality Measures
desired quality thresholds and the related quality factors
Dictionary
tables of model entities and their role
Test Cases
test cases to support functional testing
Decision Model
variable features and related user decisions
KobrA Local Artifact
Conformance Rules
Consistency
relationships
A
Contract
relationship
Refinement
relationships
B
KobrA Local Artifact Assembly
Specification of server
component must match
realization of client
component
Clientship +
Containment rules
Clientship +
Containment rules
Containment rules
Clientship
rules
Cliensthip
rules
Clientship +
Containment rules
Clientship
rules
KobrA Top-Level Artifact:
Context Realization
Corresponds to:
CIM in MDE,
Domain model in domain engineering
Business model in early requirement engineering;
KobrA’s uniformity principle:
Whole system = all containing top level server component
Server of whom?
Of system usage context = non-computational environment!
Its specification must conform to some containing client component
The non-computational environment is thus represented using a set of artifacts
that specializes the artifacts of a KobrA component realization
This context realization is thus a peculiar specification-less KobrA Component
Interaction Model
(UML collaboration diagrams)
Activity Model
(UML activity diagrams)
Structural Model
(UML class/object diagram
Realization
KobrA Recursive Process
Interleaves component specification with component realization
COTS reused by wrapping them in KobrA specification constructed
by black-box reverse engineering
Specification
Realization
Cpt A
Component
Reuse
Cpt C
Cpt B
COTS Component
Cpt D
KobrA: Refinement Process Orthogonal
to Implementation Process
Refinement: recursive PIM component specification and realization
down the component nesting structure
Implementation: translation of PIM to PSM and code
Cpt A PIM
Cpt A
Source Code
Cpt A PSM
Cpt B PIM
Cpt C
PIM
Cpt B PSM
Cpt C
PSM
Cpt C
Source Code
Cpt C
Source Code
KobrA Process Activities
Context
Realization
Specification
Activities
Data
Specification
Object-oriented
Single
Component
Realization/
Specifications
Top-Down
Recursive
Nested
Assembly
Realization
Specification
Realization
Specification
Activities Data
KobrA Specification Process Activities
Business process modeling
who does what to what and when
actors, activities, data and rules
described at “business” level of Activities
abstraction
Data
Data modeling
identify organizational and
technological data
identify information and
material data
Usage modeling
Business Process
Modeling
Usage
Modeling
Interaction
Modeling
activity modeling
decompose activities that
involve the “system”
interface design
screen templates, dialogues etc.
Interaction modeling
integrate actors, activities,
data and rules
Realization
Data
Modeling
Role of Use Cases in KobrA
Traditional use-case modelling
roughly covers the concerns
addressed by usage and
interaction modelling
use case modelling = usage
modelling + interaction
modelling
A use case corresponds to an
activity asociated with the
software system
Use Case
use case = activity associated Modeling
with the software system
a use case diagram can be
used to document such
activities
The system is one of the
actors or data items
identified in the “to be“
business process models
Data
Activities
Business Process
Modeling
Data
Modeling
KobrA Process Realization Activities
Structural model
describes the data and
components needed by the
component in order to fulfill its
contract
Activities
Data
one or more class diagrams
zero or more object diagrams
Activity model
describes the algorithms used
to realize the operations of the
component
zero or more activity diagrams
Interaction model
describes how operations of
the component are realized in
terms of interactions
zero or more interaction
diagrams (per operation)
Activity
Modeling
Structural
Modeling
Interaction
Modeling
KobrA: Product Line Artifacts
Generic framework component contains all the functionalities of all their
possible product specific instantiations
<<variant>> stereotype in framework component model elements not general
to all products
Decision model:
Maps characteristics of product to <<variant>> stereotyped model elements to
include in corresponding product
Table with predefined fields filled with natural language
KobrA PLE:
Example of
Framework
Class Diagram
with
<<variant>>
stereotype
KobrA PLE Framework Artifacts
Decision Model
(textual)
Specification
Behavior Model
(UML
statechart diagram)
Functional Model
operation
( schemata)
Structural Model
(UML class/object dia
KobrA
Framework
Component
Structural Model
(UML class/object dia
Interaction Model
(UML collaboration diagrams)
Activity Model
(UML activity diagrams)
Decision Model
(textual)
Realization
KobrA Built-In Contract Testing (BICT)
KobrA’s principle of uniformity and locality applied to testing
Built testing capability locally in each component
The component assembly not only results in application by
functionality composition
But it also results in testing infrastructure composition that saves
work of constructing a global application specific testing
infrastructure
Key idea:
Add to each client component a nested tester component to test each
server to which it may be connected through assembly
Add to each server component a testing interface distinct from the
functional interface that can be used by the nested tester component of
the clients to which it may be connected through assembly
The testing interface expose state information not needed for the
application execution but needed for its testing
KobrA Built-In Contract Testing (BICT)
<<Component>>
Client A
<<Interface>>
Client A
<<uses>>
<<Component>>
Server B
<<Component>>
Server B w/ BICT
<<Component>>
Client A w/ BICT
<<Testing Interface>>
Client A
<<uses>>
<<Tester Component>>
Tester(A)
Limitations of KobrA
Based on UML1.4 which did not support neither for MDE nor CBE:
Monolithic meta-model, unpractical for partial reuse in profiles for
building PSM
No OCL, thus no fully refined PIM in an unambiguous computational
language free of natural language, thus no possibility for automated code
generation through model transformation
No full-life cycle components (only in deployment diagram), thus no
design by contract PIM
Narrow scope not covering:
Implementation
Model transformation
Focuses on design for reuse:
Provides little guidance for design with reuse from legacy software,
refactoring, reverse engineering, etc.
Simplistic, not scalable PLE variation modeling scheme
Does not deal with component repository management
KobrA2 Improvement Goals
Support more advanced forms of MDE and CBE
By leveraging the latest OMG standards:
UML2.1 modular meta-model and better founded profiles
UML2.1 full life cycle components
OCL2.0 to model PIM, PSM, meta-models and UML2.0 profiles that are:
Fully refined, yet free of natural language ambiguities,
thus viable input to fully automatic model transformation
MOF2.0 and Ecore to define meta-model of KobrA2
SPEM2.0 to support full KobrA2 method and process modeling
By leveraging latest Eclipse integrated MDE CASE tools:
Eclipse Modeling Framework (EMF, based on Ecore)
Eclipse Process Framework (EPF, based on SPEM2.0)
Borland Together (based on EMF)
Atlas Transformation Language Development Tool (ATL-DT, based on EMF)
Leverage model transformation to:
Weave product-specific elements onto framework components instead of or in
addition to instantiating them
Add on and take off BICT artifacts