Public Member Functions | Protected Member Functions

de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel Class Reference

Implementation of abstract class BDDModel for AXLang application models. More...

List of all members.

Public Member Functions

 AxlBddVisitorApplicationModel (BddSolverImp manager) throws SolverException
 Constructor.
AbstractArchitectureModel axlModel ()
boolean checkConsistency () throws SolverException
 fires the consistency checking of an application model.

Protected Member Functions

void checkPreconditionOfSetAxlModel (IAXLangElement model) throws SolverException
boolean hasNoChildren (IAXLangElement parent) throws SolverException
 checks if an IAXLAngElement has NO children Hook method of "AxlBddVisitor.translateIAXLangElementAtomic()"
BDD iterateThroughDelegationConnectors (IAXLangElement parent, IAXLangElement pT) throws SolverException
 Iterates through all delegation connectors of a SubComponent and interpret them. precondition (not checked): The BDD variables for ports already exist.
BDD iterateThroughHierarchy (IAXLangElement parent) throws SolverException
 Iterating through the children of an subcomponent and building a corresponding BDD.
BDD iterateThroughHorizontalConnectors (IAXLangElement parent, IAXLangElement pT) throws SolverException
 Iterates through all horizontal connectors of a SubComponent and interpret them. precondition (not checked): The BDD variables for ports already exist.
BDD iterateThroughPorts (IAXLangElement parent, IAXLangElement pT) throws SolverException
 Iterates through all ports of a SubComponent and interpret them. For all ports corresponding BDD variables are created so that they can be accessed via theAxlVarSet later on.
BDD startIterationThroughHierarchy (IAXLangElement parentType) throws SolverException
 Iterating through an application model and building a corresponding BDD: Start of recursion.
BDD translateApplicationModel (AbstractArchitectureModel appModel) throws SolverException
 Translates an aXLang application model to a BDD structure.
BDD translateDelegations (IAXLangElement parent, AxlElementPath parentPath, AxlElementPath parentPortPath, Collection< AxlElementPath > connectedPortPathCollection) throws SolverException
 Translates the relationship between a component and one of its ports into a BDD.
BDD translateHorizontalConnectorsV1 (IAXLangElement parent, AxlElementPath parentPath, Collection< IAXLangElement > horConnectorCollection) throws SolverException
 Translates the horizontal connectors into a BDD. Version1: Translate each horizontal connector as a single, isolated constraint.
BDD translateHorizontalConnectorsV2 (IAXLangElement parent, AxlElementPath parentPath, Collection< IAXLangElement > horConnectorCollection) throws SolverException
 Translates the horizontal connectors into a BDD. Version2: Translate all horizontal connectors which are all connected to the same output port together! (similar to the approach of translating delegation connectors).
BDD translateIAXLangElementComposite (IAXLangElement parent, Collection<?extends IAXLangElement > childrenCollection) throws SolverException
 Translates the relationship between a composite component and its subcomponents into a BDD. Adds some preconditions to the super operation.
BDD translateModel (IAXLangElement model) throws SolverException
 Translates an aXLang application model to a BDD structure.
BDD translatePort (IAXLangElement parent, IAXLangElement port) throws SolverException
 Translates the relationship between a component and one of its ports into a BDD.

Detailed Description

Implementation of abstract class BDDModel for AXLang application models.

In order to distinguish between multiply used components in an application model the class uses de.fraunhofer.isst.axbench.operations.checker.solver.AxlElementPath class.

For the public:

Author:
smann
Version:
0.9.0
Since:
0.9.0
Todo:

consideration of ports, connectors, signals, services etc. //TODO

data structure for results etc. //TODO


Constructor & Destructor Documentation

de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.AxlBddVisitorApplicationModel ( BddSolverImp  manager  )  throws SolverException

Constructor.

Parameters:
bddSolver 
Exceptions:
SolverException 

Member Function Documentation

AbstractArchitectureModel de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.axlModel (  ) 

Get the assigned aXLang application model

Reimplemented from de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitor.

boolean de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.checkConsistency (  )  throws SolverException [virtual]

fires the consistency checking of an application model.

Parameters:
application model to be checked
Returns:
the result of the check as a boolean (and currently some results to System.out)
Exceptions:
internal exceptions

Implements de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitor.

void de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.checkPreconditionOfSetAxlModel ( IAXLangElement  model  )  throws SolverException [protected, virtual]

Implementation of the precondition check for setModel() method (a hook method)

Parameters:
model,: a f2a mapping
Exceptions:
SolverException 

Implements de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitor.

boolean de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.hasNoChildren ( IAXLangElement  parent  )  throws SolverException [protected, virtual]

checks if an IAXLAngElement has NO children Hook method of "AxlBddVisitor.translateIAXLangElementAtomic()"

Parameters:
parent should be a Component, a SubComponent or an corresponding AxlElementPath
Returns:
boolean
Exceptions:
if parent does not represent a Component or SubComponent

Implements de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitor.

BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.iterateThroughDelegationConnectors ( IAXLangElement  parent,
IAXLangElement  pT 
) throws SolverException [protected]

Iterates through all delegation connectors of a SubComponent and interpret them. precondition (not checked): The BDD variables for ports already exist.

Parameters:
parent,: a SubComponent or its corresponding AxlElementPath
parentType,: the component type of parent
Returns:
a BDD representing the variability logic of delegation connectors; null if there are no delegation connectors
Return values:
null if no delegation connectors
Exceptions:
if parent does not represent a SubComponent
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.iterateThroughHierarchy ( IAXLangElement  parent  )  throws SolverException [protected]

Iterating through the children of an subcomponent and building a corresponding BDD.

Parameters:
parent,: a SubComponent or an AxlElementPath of the SubComponent
Returns:
a BDD for the parent representing the variability logics
Exceptions:
if parent does not represent a SubComponent
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.iterateThroughHorizontalConnectors ( IAXLangElement  parent,
IAXLangElement  pT 
) throws SolverException [protected]

Iterates through all horizontal connectors of a SubComponent and interpret them. precondition (not checked): The BDD variables for ports already exist.

Parameters:
parent,: a SubComponent or its corresponding AxlElementPath
parentType,: the component type of parent
Returns:
a BDD representing the variability logic of delegation connectors; null if there are no delegation connectors
Return values:
null if no horizontal connectors
Exceptions:
if parent does not represent a SubComponent
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.iterateThroughPorts ( IAXLangElement  parent,
IAXLangElement  pT 
) throws SolverException [protected]

Iterates through all ports of a SubComponent and interpret them. For all ports corresponding BDD variables are created so that they can be accessed via theAxlVarSet later on.

Parameters:
parent,: a SubComponent or its corresponding AxlElementPath
parentType,: the component type of parent
Returns:
a BDD representing the variability logic of parent with its ports; null if there are no ports
Exceptions:
if parent does not represent a SubComponent
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.startIterationThroughHierarchy ( IAXLangElement  parentType  )  throws SolverException [protected]

Iterating through an application model and building a corresponding BDD: Start of recursion.

Todo:
Consider the communication structure of components.
Parameters:
parentType,: the component type (Component) as the root (e.g. root component of an application model) or the ElemenPath of that component type
Returns:
a BDD for the parentType representing the variability logics
Exceptions:
if parentType does not represent a Component or ... //TODO
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.translateApplicationModel ( AbstractArchitectureModel  appModel  )  throws SolverException [protected]

Translates an aXLang application model to a BDD structure.

Currently, here it is decided whether ElementPaths or usual IAXLAngElements are used for checking.

Todo:
This should be optionalized or disregarded in future versions. //TODO
Parameters:
appModel,: the application model to be translated
Returns:
a BDD which represents to variability logics of the application model
Exceptions:
if appModel is null or if internally is something wrong (a bug indicator?)
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.translateDelegations ( IAXLangElement  parent,
AxlElementPath  parentPath,
AxlElementPath  parentPortPath,
Collection< AxlElementPath connectedPortPathCollection 
) throws SolverException [protected]

Translates the relationship between a component and one of its ports into a BDD.

Parameters:
parent,: a SubComponent
parentPath,: the corresponding AxlElementPath for parent
parentPortPath,: the AxlElementPath of a parent's port
connectedPortPathCollection,: the ElementPaths of all connected ports of parentPort connectedPortPathCollection is not empty
Returns:
a BDD representing the variability logic of parent with its port
Exceptions:
//?if parent does not represent a *composite* SubComponent or Component (or internal exceptions)
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.translateHorizontalConnectorsV1 ( IAXLangElement  parent,
AxlElementPath  parentPath,
Collection< IAXLangElement horConnectorCollection 
) throws SolverException [protected]

Translates the horizontal connectors into a BDD. Version1: Translate each horizontal connector as a single, isolated constraint.

Parameters:
parent,: a SubComponent or its corresponding AxlElementPath
parentPath,: the corresponding AxlElementPath of parent (maybe null)
horConnectionCollection,: the set of horizontal connections within parent to be translated
Returns:
a BDD representing the variability logic of the realtionship of ports connected by the horizontal connectors
Return values:
null if there are no horizontal connectors to be translated
Exceptions:
 
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.translateHorizontalConnectorsV2 ( IAXLangElement  parent,
AxlElementPath  parentPath,
Collection< IAXLangElement horConnectorCollection 
) throws SolverException [protected]

Translates the horizontal connectors into a BDD. Version2: Translate all horizontal connectors which are all connected to the same output port together! (similar to the approach of translating delegation connectors).

Parameters:
parent,: a SubComponent or its corresponding AxlElementPath
parentPath,: the corresponding AxlElementPath of parent (maybe null)
horConnectionCollection,: the set of horizontal connections within parent to be translated
Returns:
a BDD representing the variability logic of the relationship of ports connected by the horizontal connectors
Return values:
null if there are no horizontal connectors to be translated
Exceptions:
\xrefitem todo 40.
BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.translateIAXLangElementComposite ( IAXLangElement  parent,
Collection<?extends IAXLangElement childrenCollection 
) throws SolverException [protected]

Translates the relationship between a composite component and its subcomponents into a BDD. Adds some preconditions to the super operation.

Parameters:
parent,: a composite SubComponent or its corresponding AxlElementPath
childrenCollection,: the subcomponents of parent or their corresponding ElementPaths
Returns:
a BDD representing the variability logic of parent wrt. its children
Exceptions:
if parent does not represent a *composite* SubComponent or Component (or internal exceptions)

Reimplemented from de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitor.

BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.translateModel ( IAXLangElement  model  )  throws SolverException [protected, virtual]

Translates an aXLang application model to a BDD structure.

Parameters:
model,: the application model to be translated
Returns:
a BDD which represents to variability logics of the application model
Exceptions:
if model is not an AXLang application model

Implements de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitor.

BDD de.fraunhofer.isst.axbench.operations.checker.solver.variabilityvisitor.impold.AxlBddVisitorApplicationModel.translatePort ( IAXLangElement  parent,
IAXLangElement  port 
) throws SolverException [protected]

Translates the relationship between a component and one of its ports into a BDD.

Parameters:
parent,: a SubComponent or its corresponding AxlElementPath
port,: a port of parent or its corresponding ElementPaths
Returns:
a BDD representing the variability logic of parent with its port
Exceptions:
//?if parent does not represent a *composite* SubComponent or Component (or internal exceptions)