and specifies its quantitative non functional prop-
erties. Each component (connector) has only one
Functional Dependency
construct described by one
or many dependency relations. Each relation ex-
presses that the component (connector) needs input
data received by its input ports (source roles) to pro-
ceed and produce data to its output ports (destina-
tion roles). This process is characterized by a set
of non-functional attributes. Consequently, each re-
lation description connects input ports (source roles)
and output ports (destination roles) and is character-
ized by specific non functional attributes values. A
Functional Dependency
description is written at the
end of a componentspecification, after the declaration
of all the ports, or at the end of a connector descrip-
tion, after the declaration of all the roles. A declara-
tion of a
Functional Dependency
consists of:
• A name, to identify the dependency relation,
• A declaration of the input relation (how input
ports or source roles are coordinated),
• A declaration of the output relation (how output
ports or destination roles are coordinated),
• A declaration of relevant properties (e.g. process-
ing time for components, transmission time for
connectors, etc).
As an example, let’s take a
Functional Dependency
construct that includes only one dependency relation.
We may write:
fundep {Relation Name //name of the dependency relation
input (Input Ports relations),
output(Output Ports relations),
properties(ProcTime=0.02 s, Thruput = 45 trans/s,
FailProb =0.001, MTTR= 120 h , MTBF= 2300 h)}
Identification of Input and Output ports:
At a minimum, the dependency must specify which
ports are used for input and which ones are used for
output. If a component has, say five ports, P1, P2, P3,
P4, P5 and we wish to record that P1, P2, P3 are the
input ports and P4,P5 are the output ports, we write:
input(P1,P2,P3),
output(P4,P5).
Relations between Input ports:
For input ports, we must specify whether they provide
alternative/duplicateinformation (the componentmay
proceed with data from any one of the ports) or com-
plementary information (component needs data from
all input ports before it proceeds); also, there are cases
where we may need a majority of input ports to pro-
ceed. We write respectively:
input(AnyOf(P1,P2,P3)),
input(AllOf(P1,P2,P3)),
input(MostOf(P1,P2,P3)).
In the latter two cases, we must also specify
whether the input ports must deliver their inputs syn-
chronously or asynchronously. Hence we could say,
for example:
input(AllOf(asynch(P1,P2,P3)),
input(MostOf(synchro(P1,P2,P3)).
Relations between Output ports: As for output
ports, in case we have more than one for a given com-
ponent, we may represent two aspects: the degree of
overlap between the data on the various ports (Dupli-
cate, Exclusive, Overlap), and the synchronizationbe-
tween the output ports (Simultaneous, Asavailable).
Pursuing the example discussed above, if P4 and P5
are output ports, then we can write, depending on the
situation:
output(Overlap(Asavailable(P4,P5)),
output(Exclusive(Simultaneous(P4,P5)),
output(Exclusive(Asavailable(P4,P5)).
4 ACME+ SEMANTIC
We want to map ACME+ source code onto a set
of Mathematica inequalities that characterize the non
functional attributes of the architecture of interest. To
this effect, we assume that: (1) all ports of compo-
nents are labeled for
input
or for
output
; all roles
of connectors are labeled as
fromRole
or as
toRole
;
(2) each port of each component and each role of each
connector has an attribute for each property of interest
labeled RT (response time), TP (throughput),FP (fail-
ure probability), MTTR and MTBF; (3) there is a sin-
gle component without input port and a single output
port, called the
source
; there is a single component
without output port and with a single input port, called
the
sink
; we assume that the
source
and
sink
com-
ponents are both dummy components, that are used
solely for the purposes of our model. The system non
functional properties are computed from the proper-
ties attached to the components and connectors (Proc-
Time, TransTime, Thruput, FailProb, MTTR, MTBF)
and represent attributes associated to the input port of
the
sink
component, namely:
System.ResponseTime = sink.input.RT,
System.Throughput = sink.input.TP,
System.FailureProbability = sink.input.FP,
System.MTTR = sink.input.MTTR,
System.Availability= sink.input.MTBF /
(sink.input.MTBF + sink.input.MTTR)
In order to obtain the values of these attributes, we
decide to maximize or minimize attribute values at-
tached to the input port of the
sink
component tak-
ing into account inequalities generated inductively.
AutomatedQuantitativeAttributesPredictionfromArchitecturalDescriptionLanguage
89