The . component/connector view is one
fundamental view of a software architecture. The other two are the Module Decomposition View and the Allocation view.
A . component is a unit of behavior. Its description defines what the
component can do and what it requires to do that job.
A . connector is an indication that there is a mechanism that relates one
component to another usually through relationships such as data flow or control flow.
Changing the grouping of behaviors in components or changing which components are connected changes the value of
certain quality attributes.
For "from scratch" design, this is usually the driving view.
Designing for Quality Attributes describes how qualities are enhanced and
degraded by changes in the division of behavior and in the communication paths between components.
AADL presents a
component-connector view in its models.
system Demo
end Demo;
system implementation Demo.basic
subcomponents
c: system client;
s: system serverType;
connections
conn1: event data port
c.requestService -> s.receiveRequest;
conn2: event data port
s.returnResults -> c.receiveResults;
end Demo.basic;
--------------------------------------------------------------------------------------------
-- This system executes two threads, one on each of
two
-- processors. This system uses the platform, client,
and
-- server packages.
--------------------------------------------------------------
system DemoSystem
features
systemBegin: in event
data port;
systemEnd: out event
data port;
flows
scenario1: flow path
systemBegin -> systemEnd;
scenario2: flow path
systemBegin -> systemEnd;
end DemoSystem;
system implementation DemoSystem.impl
subcomponents
client1: system;
client2: system;
client3: system;
------
server1: system;
server2: system;
------
communicationBus: bus platform::DefaultBus.impl;
-- [JFT] add a bus
connections
connection1: event data port
client1.requestData -> server1.receiveRequest {Latency => 10 Us;};
connection2: event data port
server1.sendToClient -> client1.receiveData {Latency => 10 Us;};
connection3: event data port
client2.requestData -> server2.receiveRequest;
connection4: event data port
server2.sendToClient -> client2.receiveData;
connection5: event data port
client3.requestData -> server1.receiveRequest;
connection6: event data port
server1.sendToClient -> client3.receiveData;
connection7: event data port
client3.requestData -> server2.receiveRequest;
connection8: event data port
server2.sendToClient -> client3.receiveData;
connection9: event data port
client1.completed -> systemEnd {Latency => 10 Us;};
connection10: event data port
systemBegin -> client1.initiate {Latency => 10 Us;};
flows
scenario1: flow path
systemBegin -> connection10 -> client1.initiatePath
-> connection1 -> server1.f1
-> connection2 -> client1.completedPath
-> connection9 -> systemEnd {Latency => 150 Us;};
scenario2: flow path
systemBegin -> connection10 -> client1.initiatePath
-> connection1 -> server1.f1
-> connection2 -> client1.f1
-> connection1 -> server1.f1
-> connection2 -> client1.completedPath
-> connection9 -> systemEnd {Latency => 100 Us;};
properties
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection1;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection2;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection3;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection4;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection5;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection6;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection7;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection8;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection9;
-- [JFT] binding on the
bus
Actual_Connection_Binding => reference communicationbus applies to connection10;
end DemoSystem.impl;
|