ESL0001 - Behavior requirements and constraints¶
Field | Value |
---|---|
Author(s) | T.J.L. Schuijbroek, T. Wilschut |
Reviewer(s) | A.T. Hofkamp |
Status | Final |
Type | Standard (S) |
Created | 29-04-2019 |
Finalized | 12-08-2019 |
Warning
This LEP's syntax enhancement is written using an EBNF syntax as opposed to the current PEG syntax since it was finalized before the switch.
Abstract¶
The Elephant Specification Language (ESL) is a language for creating highly structured multi-level system specifications. ESL version 1.0 is particularly suited to describe the static structure of a system. Modern systems, however, are usually dynamic in nature. Therefore, behavior requirements and constraints are introduced in this LEP. Behavior requirements and constraints can be used to describe the dynamic behavior of systems. That is, they describe when (under which conditions) what requirements must be satisfied and what constraints hold. The aim of behavior requirements and constraints is to provide additional detail in the system specifications. Additionally, we aim to enable engineers to automatically derive, visualize and analyze the dynamic dependency structure of systems. The dynamic dependency structure and underling behavior specifications are meant to serve as a structured starting point for modelling and implementing the dynamic behavior of systems.
Motivation¶
In ESL version 1.0 the static structure of a system can be neatly defined in terms of goal- and transformation-requirements that state the transfer and transformation of flows between and inside components. Those flows can be subject to design-requirements that state the static bounds on the values of flows. Similarly, properties of components, for example length and life-span, can be subject to design-requirements. Together, the goal-, transformation- and design-requirements describe the static structure of a system.
Modern engineering systems, however, are usually dynamic in nature. That is, they change behavior and/or state in response to stimuli such as operator input or changes in their environment. As such, there is a strong need to be able to specify when a system should exhibit what behavior. In other words, there is a strong need to be able to specify dynamic bounds on flows.
By adding behavior requirements and constraints to ESL we aim to provide additional detail and reduce ambiguity in design specifications describing the dynamic behavior of systems. Additionally, we aim to enable engineers to automatically derive, visualize and analyze the dynamic dependency structure of systems. The dependency structure and underlying behavior specifications are meant to serve as a structured starting point for modelling and implementing the dynamic behavior of systems.
Note
The concepts of behavior and state are not limited to the control domain. For example, thermal and mechanical responses of a system as a result of stimuli are considered to be behavior as well.
Rationale¶
In the literature, system behavior is often modeled in conjunction with system functions and system states. See, for example, the Function-Behavior-State model1, the Structure-Behavior-Function model23 and the requirements engineering book of Hull4. These models all have their own definitions of behavior, function and state.
In light of the literature and the flow based foundation of ESL, function, behavior and state are defined as:
- Function: everything what a 'thing' must be able to do, i.e., all transfers and transformations of flow which a 'thing' must be able to perform.
- Behavior: everything what a 'thing' must do in response to stimuli, i.e., when which flows need to be transferred and transformed in what quantity in response to stimuli. Stimuli are changes in (un)controllable flows (state changes).
- State: description of the behavior of a 'thing' given certain bounded stimuli, i.e., what flows are being transferred and transformed in what quantity given certain bounded stimuli. A state change happens when a stimulus crosses the defined boundaries. For example, a sensor signal (information flow) switches from high to low.
Note
When following the state definition above, a state is a representation of the values of a set of flows within certain bounds. In ESL all flows are represented by variables. Bounds are variables as well. A state in ESL is specified as a variable bounded by other variables.
For example, the specification below contains three variables: door-open
and door-closed
of type
state
and door-sensor-voltage
of type electrical-energy-flow
.
Here, the variable types enable a reader to easily distinguish the flow variable
door-sensor-voltage
and the state variables door-open
and door-closed
. Such a distinction at
type level is currently sufficient for the goal of ESL to provide a structured starting point for
modelling and implementing the dynamic behavior of systems.
The dynamic behavior itself, however, cannot be described within ESL version 1.0. At best, one can
specify a sensor-door-behavior-model
relation with variables door-open
, door-closed
and
door-sensor-voltage
as arguments, as shown in the example below.
Here, relation door-sensor-behavior
indicates that there exists a dependency between arguments
door-open
, door-closed
and door-sensor-voltage
. The relation contains no information on what
behavior should be modeled or implemented. With the addition of behavior requirements and
constraints we aim to provide additional structured information on the input-output relation between
these arguments.
Syntax rationale¶
In the literature one can find many boilerplates for behavior requirements, see for example these
references256. In general, boilerplates have
a "when < A > then < B >" like structure. The when
keyword indicates a set of conditional
statements A that indicate under which conditions requirement set B must be satisfied.
Furthermore, behavior requirements usually describe a set of alternative cases. Such requirements follow a "when < A1 > then < B1 > or ... or when < An > then < Bn >" structure. The order of the cases in such a requirement is usually meaningless. That is, the order of case specification does not impose any precedence constraints.
Following the literature, the behavior syntax as shown in the example below is proposed. In this
example, a behavior requirement named door-state
is specified. The requirement comprises the two
cases door-is-closed
and door-is-open
. The case order has no semantics. Each case is composed of
when-clauses and then-clauses. The when-clauses state the conditions under which the then-clauses
apply. That is, when condition c1
holds then requirements r1
an r2
must be satisfied. When
condition c2
holds requirements r3
and r4
must be satisfied.
In writing behavior requirements one should strive for complete and deterministic
requirements. Complete implies that the conditions cover the complete range of stimuli.
Deterministic implies that only one case may apply simultaneously. Note that the example above is
complete and deterministic as conditions c1
and c2
cover the full range of possible values of
door-sensor-voltage
and can never hold simultaneously.
Note
In the Completeness and determinism section we briefly explore to possibilities for the compiler to automatically check for completeness and determinism.
Fall-back cases¶
In striving for completeness, exhaustively specifying all possible cases may become a cumbersome and
time consuming task. As such, it is desirable to be able to specify a fall-back case. A fall-back
case is similar to the else
construct used in many programming languages.
A special when no other case applies
clause is used to enable users to specify fall-back cases.
The example below specifies behavior requirement output-x
which contains cases A
, B
and C
.
Case C
is the fall-back case that applies when neither A
nor B
applies. In other words, C
applies when y
is at least 5 and at most 10.
Note that the when no other case applies
when-clause is a short-hand notation for negation of the
when-clauses of case A
and B
.
Behavior, goal and transformation specifications¶
Behavior specifications are complimentary to goal and transformation specifications. In fact, the addition of behavior requirements allows for more natural transformation specifications. For example, assume we have the following three goal-requirements:
which are dependent on one another. In ESL version 1.0 one has to define a
transformation-requirement convert-power
, as shown below, to ensure that goal provide-torque
has
a functional dependency with goals send-control-signal
and provide-power
.
Physically, however, motor-control-signal
is not really transformed into torque
by motor
. As
such, transformation requirement convert-power
may seem flawed by readers.
By adding a behavior-requirement, as shown in the listing below, one can separate the physical
function of transforming power into torque from the logical behavior that motor
must only provide
torque when needed.
That is, variable motor-control-signal
is no longer an input argument of convert-power
. Instead,
it is the subject of conditions c1
and c2
. This implies that the desired value of torque
,
which is an output argument of convert-power
, is conditionally dependent on the value of
motor-control-signal
. Consequently, goal provide-torque
torque has a functional dependency on
goal provide-power
and a behavior dependency on send-control-signal
. Since power
is needed to
provide torque and motor-control-signal
denotes when torque
must be provided.
Specification¶
In this section the formal syntax and dependency derivation rules are given and discussed.
Syntax¶
The Syntax definition below shows the syntax of an ESL behavior section in
Extended Backus-Naur Form (EBNF). A behavior section starts with a behavior type keyword, either
behavior-requirement
or behavior-constraint
, followed by a new line. The next line starts with a
behavior-NAME
, i.e., the identifier of the behavior statement, followed by a colon, a
behavior-clause
and a new line. Such a pattern is repeated one or more times. A behavior-clause
starts with the keyword case
followed by a CASE-NAME
, a colon and a new line. On the new line
one may find a regular-case-clause
or a fall-back-case-clause
. This pattern may repeat itself
one or more times. A behavior-clause
may contain at most one fall-back-case-clause
.
A regular-case-clause
is composed of a when-clause
followed by a then-clause
. The
when-clause
states the case conditions and is composed of the keyword when
followed by a new
line. The new line starts with a CASE-CONDITION-NAME
followed by a colon, a design-rule-line
and
a new line. A when-clause
must contain at least one condition.
A then-clause
states the case design-rules and starts with the keyword then
followed by a new
line, a CASE-RULE-NAME
, a colon, a design-rule-literal
and a new line. Each then-clause
must
contain at least one design rule. The then-clauses of the cases within the scope of a
behavior-requirement must have the same set of subject variables.
A fall-back-case-clause
starts with the keyword sequence when
no
other
case
applies
and
a new line where one finds a then-clause
.
Syntax definition¶
Dependency derivations¶
This section describes the formal derivation rules that are used to derive 'behavior dependencies' between components, goals, transformations, behaviors, variables and combinations thereof. These dependencies are an addition to the function, design and coordination dependencies described in the Dependency derivations section of the ESL reference documentation.
Definitions¶
Let \(\mathcal{H}\) be the set of all behavior specifications (requirements and constraints) within an instantiated ESL specification. Let a single behavior specification \(h \in \mathcal{H}\) be given by:
where, \(n\) is the number of cases in \(h\) and \(A_{i}\) is case \(i\). Now note that the when- and then-clauses are syntactically equal to subclauses which are defined in the Dependency derivation section of the ESL reference documentation. As such, a case \(A\) is given by:
where \(S\) and \(S'\) denote the when-clauses and then-clauses, respectively, and are sets of design rule lines \(Q\). A design rule literal \(q \in Q\) is given by:
where \(v\) is the subject variable and bound \(b\) which may be a variable or real, integer, boolean or string value.
Behavior dependencies between variables¶
In ESL, behavior is expressed in terms of flows which are represented by variables. Therefore, behavior dependencies between variables are the most fundamental behavior dependencies. Behavior dependencies between other ESL elements, such as components and goals, can be derived from the behavior dependencies between variables.
Following the definitions provided in the previous section, the set of behavior dependencies between variables \(E_{\mathrm{v_b}}\) is given by:
That is, \(E_{\mathrm{v_b}}\) consists of all variable pairs \((v, v')\) for which there exist a design-rule \((v, b)\) within design rule line \(Q\) within when-clauses \(S\) and a design-rule \((v', b')\) within design-rule-set \(Q'\) within then-clauses \(S'\). In other words, if there exists a case in which the value of \(v'\) is bound by the the value of \(v\).
Behavior dependencies between components¶
The set of behavior dependencies between variables \(E_{\mathrm{v_b}}\) can used to derive the set of behavior dependencies between components \(E_{\mathrm{c_b}}\), which is given by:
wherein, the first set of component pairs denotes those pairs \(c_i\) and \(c_j\) for which there exist a goal \((c_i, c'_i, V_i, S_i) \in \mathcal{G}\) and a goal \((c_j, c'_j, V_j, S_j) \in \mathcal{G}\) such that there exists a path over the set of behavior dependencies between variables \(E_{\mathrm{v_b}}\) between a variable \(v_i\) in \(V_i\) and a variable \(v_j\) in \(V_j\), such that all intermediate variables \(v_k\) part of this path do not relate to any other transformation \(g\) or transformation \(t\). In other words, the value of a flow to be transferred by component \(c_j\) is bound by the value of a flow to be transferred by component \(c_i\), without any transformations or goals in between.
The second set of component pairs denotes those component pairs \(c_i\) and \(c_j\) for which there exist a transformation \((c_i, V_i, V'_i, S_i) \in \mathcal{T}\) and a transformation \((c_j, V_j, V'_j, S_j) \in \mathcal{T}\), such that there exists a path over the set of behavior dependencies between variables \(E_{\mathrm{v_b}}\) between a variable \(v_i\) in \(V_i\) and a variable \(v_j\) in \(V_j\), such that all intermediate variables \(v_k\) part of this path do not relate to any other transformation \(g\) or transformation \(t\).
The third set of component pairs denotes those pairs \(c_i\) and \(c_j\) for which there exist a goal \((c_i, c'_i, V_i, S_i) \in \mathcal{G}\) and a transformation \((c_j, V_j, V'_j, S_j) \in \mathcal{T}\), such that there exists a path over the set of behavior dependencies between variables \(E_{\mathrm{v_b}}\) between \(v_i\) in \(V_i\) and a variable \(v_j\) in \(V'_j\) , such that all intermediate variables \(v_k\) part of this path do not relate to any other transformation \(g\) or transformation \(t\).
The fourth set is similar to the third set except here a flow in \(V_j\) is bound by an output flow in \(V'_i\).
Behavior dependencies between goals¶
The set of behavior dependencies between goals \(E_{\mathrm{g_b}}\) is given by:
That is, \(E_{\mathrm{g_b}}\) contains all pairs of goals \(g_i\) and \(g_j\) for which there exists a path over the set of behavior dependencies between variables \(E_{\mathrm{v_b}}\) between a variable \(v_i\) in \(V_i\) and a variable \(v_j\) in \(V_j\), such that all intermediate variables \(v_k\) part of this path do not relate to any other transformation \(g\) or transformation \(t\). In other words, if at least one variable in \(V_j\) is bound by a variable in \(V_i\).
Behavior dependencies between transformations¶
Similar to goal behavior dependencies, the set of behavior dependencies between transformations \(E_{\mathrm{t_b}}\) is given by:
That is, transformation \(t_i\) has a behavior dependency with transformation \(t_j\) if there exists a path over the set of behavior dependencies between variables \(E_{\mathrm{v_b}}\) between a variable \(v_i\) in \(V'_i\) and a variable \(v_j\) in \(V'_j\), such that all intermediate variables \(v_k\) part of this path do not relate to any other transformation \(g\) or transformation \(t\). In other words, the the output of \(t_j\) is bound by the output of \(t_i\).
Behavior and coordination dependencies between behaviors¶
Finally, the set of dependencies between behaviors \(E_{\mathrm{h_b}}\) is given by:
That is, two behaviors \(h_i\) and \(h_j\) have a behavior dependency if at least one variable that is used within then-clauses \(S'_i\) of \(h_i\) is used within when-clauses \(S_j\) of \(h_j\). Such a dependency implies that the result of \(h_j\) is bounded by the result of \(h_i\).
Similarly, coordination dependencies \(E_{\mathrm{h_c}}\) are given by:
That is, two behaviors \(h_i\) and \(h_j\) have a coordination dependency if at least one variable that is used within a then-clauses \(S'_i\) of \(h_i\) is used within a then-clauses \(S'_j\) of \(h_j\). Such a dependency implies that both behaviors aim to set the values of a least one shared variable.
Mapping relations¶
The mapping relations between behaviors and other ESL elements can simply be derived based on shared variables. Let \(v_Q\) be a function that collects all variables that are used within a design rule line \(Q\), and be given by:
Let \(v_h\) be a function that collects all variables used within a behavior requirement \(h\) and be given by
Now the set of mapping relations of a behaviors is given by:
where \(\mathcal{C}\) is the set of all components, \(\mathcal{G}\) is the set of all goals, \(\mathcal{T}\) is the set of all transformations, \(\mathcal{D}\) is the set of all designs, \(\mathcal{R}\) is the set of all relations, and \(\mathcal{V}\) is the set of all variables over an instantiated ESL specification. \(V_c\) is the set of all variables used by component \(c\), \(V_g\) is the set of all variables used by goal \(g\), \(V_t\) and \(V'_t\) are, respectively, the sets of input and output variables of transformation \(t\), \(V_d\) is the set of all variables used by design specification \(d\), and \(V_r\) is the set of all variables used by relation \(r\).
Backwards Compatibility¶
Behavior requirements are an addition to ESL. No changes to existing language concepts are required. So backwards compatibility with respect to processing specifications written in ESL version 1.0 is not an issue.
The compiler output, however, contains additional behavior objects and and behavior dependencies. Post processing tools should be adapted to handle these objects and dependencies.
Proof of concept¶
In this section, four examples are shown which illustrate the usage of behavior-specifications.
The following examples build on some common types, verbs and a torque-curve-model relation. We start
with a rudimentary specification without any behavior-requirements. The Example rudiments
block shows an illustrative example containing a (wireless) switch
and a
(electric) motor
. The switch
must send a motor-control-signal
to motor
. The motor
must
internally convert power
into torque
.
Example rudiments¶
These lines are assumed to be given for each example and therefore left out of their respective code blocks.
Example 1¶
In ESL behavior is expressed in terms of (bounded) flows. In the code block below, a
behavior-requirement is added for the electric-motor
. There, the requirement motor-torque-output
denotes that torque
must equal to 60 Nm when motor-control-signal
is equal to 'on'. When
motor-control-signal
is equal to 'off', torque
must be equal to 0 Nm. Thus, this
behavior-requirement denotes a logical dependency between the value of motor-control-signal
and
torque
. Here the values of motor-control-signal
and torque
are both discrete.
The figure below shows a component - function spec - behavior spec - variable multi-domain-matrix. The piecharts within the figure denote the logical dependencies and mapping dependencies that have been derived from the example specification.
Component motor
logically depends on component switch
(row 2, col 1) as the amount of torque the
motor must produce depends on the control signal sent by the switch
. This dependency is seen
within the function domain as a logical dependency of transformation specification
convert-power-into-torque
on goal specification send-control-signal
(row 3, col 4). Similarly,
within the variable domain (rows, cols 6-8) one can see that variable torque
logically depends on
variable motor-control-signal
.
Example 2¶
The previous Example 1 contains no information on when the value of
motor-control-signal
should be equal to 'on' or 'off'. In this example we added
transformation-requirement convert-voltage-into-control-signal
and behavior-requirement
motor-control-signal-value
. The transformation requirement denotes that switch
must internally
convert switch-circuit-voltage
into motor-control-signal
.
The behavior-requirement denotes that motor-control-signal
must be equal to 'on' or 'off'
depending on the switch-circuit-voltage
value. That is, the moment the switch-circuit-voltage
becomes above 1 V, for example by pressing the switch, motor
will switch on and produce 60 Nm
of torque. The moment the switch-circuit-voltage
drops below 1 V, for example by releasing the
switch, motor
will turn off.
The figure below shows the updated MDM showing logical dependencies
between components, function specs, behavior specs and variables which are derived from behavior
specs motor-control-signal-values
and motor-torque-output
.
Note
Transformation-requirement convert-voltage-to-control-signal
(row 3), behavior-requirement
motor-control-signal-value
(row 6), and variable switch-current-voltage
are added to the
MDM. Within the behavior-domain (rows, cols 6-7) one can see that behavior spec
motor-torque-output
depends on behavior spec motor-control-signal-value
. Within the variable
domain (rows, cols 8-11) one can see the logical dependency chain from switch-circuit-voltage
to motor-control-signal
to torque
.
Example 3¶
In the previous Example 2 the desired of values of torque
are discrete and time
independent. In certain cases one may want to define continuous time dependent flow values. ESL has
no time concept. Hence on cannot directly express time dependent flow values. However, one can make
use of relations.
In the next code block the behavior requirement motor-torque-output
is modified and behavior
requirement motor-state-transitions
, relation torque-curves
, and variables start-up-curve
and
shut-down-curve
are added to the specification.
Relation torque-curves
returns variables start-up-curve
and shut-down-curve
which represent
the continuous time dependent torque values during start-up and shut down of motor
.
Behavior-requirement motor-state-transitions
defines the different values of motor-state
, being
'start-up', 'steady-state', 'shut-down', and 'off', depending on the values of torque
and
motor-control-signal
.
Behavior-requirement motor-torque-output
defines the desired (continuous) values of torque
depending on the value of motor-state
.
world.esl | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
|
The next figure shows the updated component - function spec - behavior spec - variable MDM. Note the
additional elements and dependencies within the behavior (rows, cols 6-8) and variable (rows, cols
9-13) domains. Especially, note the bi-directional dependencies between behavior-requirements
motor-state-transitions
and motor-torque-output
and variables motor-state
and torque
. Hence,
we introduced a feedback mechanism.
Rejected ideas¶
The following ideas where rejected.
If-clauses¶
If-clauses attached to goal-, transformation and design requirements and constraints, as shown in the listing below.
In this example, the condition relates to the validity of the goal-requirement and not the the
actual value of flow foo
. This is not consistent with the definitions of function, behavior and
state given in Section Rationale. Additionally, it is preferred to explicitly separate
the function specifications from the behavior specifications, as is common in the literature. Hence
it has been rejected.
External files¶
Defining dynamic behavior in external files and linking them via relations. This approach does not support the derivation of the dynamic structure since we have no control over the structure of the external files. Hence it has been rejected.
Extending the relation concept¶
Extending the relation
concept to include behavior. For example, a relation definition:
In the systems engineering domain behavior-requirements and relations have different semantics despite that they are mathematically equivalent. Therefore, we prefer to have behavior and relations as separate concepts within ESL.
For now, relations remain a means to define miscellaneous dependencies between flow and design
variables. In a later development stage, we foresee a role for relations equivalent to response
functions ( resfunc
) of the Psi language7. Thereby, bridging the
gap between requirement engineering, system architecting and MDO applications in an engineering
design context.
Nested cases¶
Nested cases, as shown in the code example below, are rejected. In this example, cases A1
and A2
are subordinate to case A
. That is, for case A1
to apply the when-clauses of A
and the
when-clauses of A1
must hold. For case A2
to apply the when-clauses of A
and the when-clauses
of A2
must hold.
Nested cases enable users to create very complex nested requirements of arbitrary depth This is not in line with the general rule of thumb to strive for atomic requirements. As such, for now, we chose to keep it simple and reject nested cases. If the current solution turns out to be insufficient, we may reconsider this idea at a later stage.
Open issues¶
The following open issues are identified.
Completeness and determinism¶
Completeness and determinism are important aspects concerning behavior requirements. A complete specification states the desired behavior over the full value range of the stimuli. In a deterministic specification, at most one set of conditions related to the value of a variable evaluates to true at the same time.
Automated checking for completeness and determinism is desirable when a specification matures. However, ESL specifications grow and evolve over the course of a design project. As such, it is unlikely that an ESL specification is (ever) complete and deterministic during the course of a design project. Moreover, the actual value of a variable \(x\) may depend on many other variables and may be given by a relation defined in an external file written in another formalism. As such, evaluating when a condition that includes \(x\) evaluates to true is currently not within the possibilities of ESL.
Events¶
In defining control logic on often uses the concept of events. That is, state transitions of elements within the system trigger state transition of other components within the system.
In Example 1 for example one has to keep pressing the switch for the motor to produce torque. This may be undesirable since it may quickly drain the battery of the switch. It may be preferred that pressing the button when the motor is off results in the motor turning on. While pressing the button when the motor is on results in the motor shutting down. In this case, the state change of the switch (event) dictates the change in motor control signal rather than the actual state of the switch. Currently it is not possible to define such behavior.
-
Y. Umeda, M. Ishii, M. Yoshioka, Y. Shimomura, and T. Tomiyama. Supporting conceptual design based on the function-behavior-state modeler. Artificial Intelligence for Engineering Design, Analysis and Manufacturing, 10(4):275–288, 1996. ↩
-
A. K. Goel, S. R. Rugaber, and S. Vattam. Structure, behavior, and function of complex systems: The structure, behavior, and function modeling language. Artificial Intelligence for Engineering Design, Analysis and Manufacturing, 23(Special Issue 01):23–35, 2009. ↩↩
-
H. Komoto and T. Tomiyama. A framework for computer-aided conceptual design and its application to system architecting of mechatronics products. Computer-Aided Design, 44(10):931–946, 2012. ↩
-
E. Hull, K. Jackson, and J. Dick. Requirements engineering. Springer, London, England, 2nd edition, 2017. ↩
-
A. Mavin, P. Wilkinson, A. Harwood, and M. Novak. Easy approach to requirements syntax (EARS). In Proceedings of the 17th IEEE International Requirements Engineering Conference, 317–322. Atlanta, Georgia, USA, 2009. ↩
-
C. Arora, M. Sabetzadeh, L. C. Briand, and F. Zimmer. Requirement boilerplates: transition from manually-enforced to automatically-verifiable natural language patterns. In Proceedings of the 4th IEEE International Workshop on Requirements Patterns, 1–8. Karlskrona, Sweden, 2014. ↩
-
S. Tosserams, A. T. Hofkamp, L. F. P. Etman, and J. E. Rooda. A specification language for problem partitioning in decomposition-based design optimization. Structural and Multidisciplinary Optimization, 42(5):707–723, 2010. ↩