Components and Connectors
Relationships
Related Elements
Main Description

 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;