Commit 8eccf4c2 authored by Hernan Ponce de Leon's avatar Hernan Ponce de Leon
Browse files

Remove Interface Behavior: I have forgotten to removed this from the


model and plugin.xml. Also there were some references still in the code.
Issue-Ref:3368
Signed-off-by: Hernan Ponce de Leon's avatarHernan Ponce de Leon <ponce@fortiss.org>
parent b2ac5004
......@@ -41,12 +41,6 @@
modelElementClass="org.fortiss.af3.mira.model.Requirement">
</modelElementClass>
</modelElementHandler>
<modelElementHandler
handler="org.fortiss.af3.mira.ui.handler.InterfaceBehaviourHandler">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour">
</modelElementClass>
</modelElementHandler>
<modelElementHandler
handler="org.fortiss.af3.mira.ui.handler.RequirementSpecificationHandler">
<modelElementClass
......@@ -161,12 +155,6 @@
modelElementClass="org.fortiss.af3.mira.model.functional.SignalContainerSpecification">
</modelElementClass>
</modelElementHandler>
<modelElementHandler
handler="org.fortiss.af3.mira.ui.handler.AspectHandlers$InterfaceBehaviourSpecificationHandler">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviourSpecification">
</modelElementClass>
</modelElementHandler>
</extension>
<extension
point="org.fortiss.tooling.kernel.ui.modelEditorBinding">
......@@ -182,12 +170,6 @@
modelElementClass="org.fortiss.af3.mira.model.functional.SignalRequirement">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.InterfaceBehaviourEditorBinding">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.GlossaryEntryEditorBindings$GlossaryEntryEditorBinding">
<modelElementClass
......@@ -296,18 +278,6 @@
modelElementClass="org.fortiss.af3.mira.model.Requirement">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.TracesEditorBinding">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.OtherEditorBinding">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.AspectBindings$ParameterDefinitionBinding">
<modelElementClass
......@@ -320,12 +290,6 @@
modelElementClass="org.fortiss.af3.mira.model.Requirement">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.AspectBindings$InterfaceBehaviourBinding">
<modelElementClass
modelElementClass="org.fortiss.af3.mira.model.Requirement">
</modelElementClass>
</modelEditorBinding>
<modelEditorBinding
binding="org.fortiss.af3.mira.ui.editorbinding.AspectBindings$SignalBinding">
<modelElementClass
......
......@@ -25,9 +25,6 @@ Export-Package: org.fortiss.af3.mira,
org.fortiss.af3.mira.model.glossary.impl,
org.fortiss.af3.mira.model.glossary.util,
org.fortiss.af3.mira.model.impl,
org.fortiss.af3.mira.model.interfacebehaviour,
org.fortiss.af3.mira.model.interfacebehaviour.impl,
org.fortiss.af3.mira.model.interfacebehaviour.util,
org.fortiss.af3.mira.model.relations,
org.fortiss.af3.mira.model.relations.impl,
org.fortiss.af3.mira.model.relations.util,
......
This diff is collapsed.
......@@ -42,11 +42,6 @@
uri="http://www.fortiss.org/af3/mira/requirementSource"
class="org.fortiss.af3.mira.model.requirementSource.RequirementSourcePackage"/>
<!-- @generated mira -->
<package
uri="http://www.fortiss.org/af3/mira/interfacebehaviour"
class="org.fortiss.af3.mira.model.interfacebehaviour.InterfacebehaviourPackage"/>
<!-- @generated mira -->
<package
uri="http://www.fortiss.org/af3/mira/constraints"
......
......@@ -2,7 +2,7 @@ AnalysisCompositor.java 682836040391b224d80598b64af5f94e46c58e36 GREEN
AnalysisFileProjectCompositor.java e9e1e12d8270fa7e527c0d591050c6b52651422e GREEN
GlossaryCompositor.java ca630c5bd0447ae4eb589b875598dc33ea3bd797 GREEN
ModeSpecificationCompositor.java 4f1c441100ea03f42476085e3f590dea91cf7509 GREEN
RequirementCompositor.java b407b6b9d203328e73eb8234d81b19e92a5ca463 GREEN
RequirementCompositor.java 116f72cd030e21ff1c9475c6729e49de8f9e2857 YELLOW
RequirementSourceCompositor.java db1e0424a0da2ae7c1cd6cb3e8578e00c987d0b8 GREEN
RequirementSpecificationCompositor.java 75654efc4dffb62f4925c580a99588df9af23e77 GREEN
RequirementsContainerCompositor.java 69ad11d765c83bc6691520a54e5a7af39b4133d4 GREEN
......
......@@ -27,7 +27,6 @@ import org.fortiss.af3.mira.model.SafetyLevelRequirementSpecification;
import org.fortiss.af3.mira.model.functional.FormalSpecification;
import org.fortiss.af3.mira.model.functional.FunctionalSpecification;
import org.fortiss.af3.mira.model.functional.SignalContainerSpecification;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviourSpecification;
import org.fortiss.af3.mira.model.security.Assets;
import org.fortiss.af3.mira.model.security.CounterMeasuresRequirementSpecification;
import org.fortiss.af3.mira.model.security.ThreatsRequirementSpecification;
......@@ -58,11 +57,6 @@ public class RequirementCompositor extends HierarchicElementCompositorBase<Requi
if(fs == null && contained instanceof FormalSpecification) {
return true;
}
InterfaceBehaviourSpecification ifbs =
pickFirstInstanceOf(InterfaceBehaviourSpecification.class, specs);
if(ifbs == null && contained instanceof InterfaceBehaviourSpecification) {
return true;
}
DerivedRequirementSpecification drs =
pickFirstInstanceOf(DerivedRequirementSpecification.class, specs);
if(drs == null && contained instanceof DerivedRequirementSpecification) {
......@@ -119,7 +113,6 @@ public class RequirementCompositor extends HierarchicElementCompositorBase<Requi
public boolean canComposePrototype(Prototype prototype) {
EObject elt = prototype.getPrototype();
return elt instanceof FormalSpecification || elt instanceof ModeSpecification ||
elt instanceof InterfaceBehaviourSpecification ||
elt instanceof TimingRequirement ||
elt instanceof DerivedRequirementSpecification ||
elt instanceof SignalContainerSpecification || elt instanceof ParameterDefinition ||
......@@ -154,7 +147,6 @@ public class RequirementCompositor extends HierarchicElementCompositorBase<Requi
@Override
public boolean canDecompose(EObject contained) {
return contained instanceof FormalSpecification || contained instanceof ModeSpecification ||
contained instanceof InterfaceBehaviourSpecification ||
contained instanceof SignalContainerSpecification ||
contained instanceof ParameterDefinition ||
contained instanceof DerivedRequirementSpecification ||
......
InterfaceBehaviourStaticImpl.java 5ea7d05b53fad1f2b99a964fff203c672104e3b2 GREEN
/*-------------------------------------------------------------------------+
| Copyright 2011 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.mira.model.interfacebehaviour.impl;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour;
import org.fortiss.af3.mira.model.interfacebehaviour.ScopeSpecification;
/**
* Static implementation of {@link InterfaceBehaviour}.
*
* @author pham
*/
public class InterfaceBehaviourStaticImpl {
/** Return the {@link ScopeSpecification}. */
public static ScopeSpecification getScopeSpecification(InterfaceBehaviour ifaceBehaviour) {
return pickFirstInstanceOf(ScopeSpecification.class, ifaceBehaviour.getReferencedBy());
}
}
<!-- (c) 2017 fortiss GmbH -->
<body>
This package contains the implementation for advanced access methods from the
classes of the org.fortiss.af3.mira.model.usecase package.
</body>
PrototypeProvider.java 5979fbad94acde161a19ea4ff83756023c672f34 GREEN
PrototypeProvider.java 0dcbfceabac2faba4b4b28949b5d714f512e5685 YELLOW
......@@ -21,7 +21,6 @@ import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createExternalS
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createFunctionalSpecification;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createGlossary;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createGlossaryEntry;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createInterfaceBehaviourSpecification;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createModeSpecification;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createRequirement;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createRequirementDocument;
......@@ -45,7 +44,6 @@ import org.fortiss.af3.mira.model.functional.FormalSpecification;
import org.fortiss.af3.mira.model.functional.FunctionalSpecification;
import org.fortiss.af3.mira.model.functional.SignalContainerSpecification;
import org.fortiss.af3.mira.model.glossary.Glossary;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviourSpecification;
import org.fortiss.af3.mira.model.requirementSource.RequirementSource;
import org.fortiss.af3.mira.model.security.Assets;
import org.fortiss.af3.mira.model.security.CounterMeasuresRequirementSpecification;
......@@ -115,9 +113,6 @@ public class PrototypeProvider extends PrototypeProviderBase {
FunctionalSpecification fs = createFunctionalSpecification();
registerPrimaryPrototype("Functional aspect", fs, CATEGORY_NAME);
InterfaceBehaviourSpecification ifbs = createInterfaceBehaviourSpecification();
registerPrimaryPrototype("Temporal property aspect", ifbs, CATEGORY_NAME);
Trace t = createTrace();
registerPrimaryPrototype("Trace to requirement", t, CATEGORY_NAME);
......
MiraModelElementFactory.java df86430d26dd3677a3e53d6ef327eaa2762e2686 GREEN
MiraUtils.java c7712ac09ae4b53e980dfe02f716388767f95a56 GREEN
MiraModelElementFactory.java f11e219b9d77f5de9b53e7e1679b92ca5098e35c YELLOW
MiraUtils.java 03c70ad9e18d4256c994c46f02316bd3ba9dfb6d YELLOW
ParameterUtils.java 5f8e05cf290bbc1c6e958657f918e26a169d44df GREEN
SignalsUtils.java 49f24da2bcdcd658597e5913691ddfaea5a6d054 GREEN
......@@ -18,12 +18,8 @@ package org.fortiss.af3.mira.utils;
import static org.fortiss.af3.mira.model.timing.TimeComparisonOperator.LOWEREQUAL;
import static org.fortiss.af3.mira.model.timing.TimePropertyType.LATENCY;
import static org.fortiss.af3.mira.model.timing.TimeUnit.MILLISECOND;
import static org.fortiss.af3.mira.utils.MiraUtils.loadChecklist;
import static org.fortiss.tooling.base.layout.LayoutKeyConstants.NODE_POSITION;
import static org.fortiss.tooling.base.utils.PointUtils.setPoint;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.copy;
import java.util.ArrayList;
import org.fortiss.af3.component.model.Component;
import org.fortiss.af3.component.utils.ComponentModelElementFactory;
......@@ -55,15 +51,6 @@ import org.fortiss.af3.mira.model.functional.SignalRequirement;
import org.fortiss.af3.mira.model.glossary.Glossary;
import org.fortiss.af3.mira.model.glossary.GlossaryEntry;
import org.fortiss.af3.mira.model.glossary.GlossaryFactory;
import org.fortiss.af3.mira.model.interfacebehaviour.ConditionBase;
import org.fortiss.af3.mira.model.interfacebehaviour.IBConditionType;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviourSpecification;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfacebehaviourFactory;
import org.fortiss.af3.mira.model.interfacebehaviour.Response;
import org.fortiss.af3.mira.model.interfacebehaviour.Scope;
import org.fortiss.af3.mira.model.interfacebehaviour.ScopeSpecification;
import org.fortiss.af3.mira.model.interfacebehaviour.Trigger;
import org.fortiss.af3.mira.model.relations.ConflictedRequirementRelationType;
import org.fortiss.af3.mira.model.relations.ContradictingRequirementRelationType;
import org.fortiss.af3.mira.model.relations.DefinedDirectedRequirementRelationType;
......@@ -199,42 +186,6 @@ public final class MiraModelElementFactory {
// return MiraFactory.eINSTANCE.createFunctionalSpecification();
}
/** Creates a {@link InterfaceBehaviour}. */
public static InterfaceBehaviour createInterfaceBehaviour() {
InterfaceBehaviour iface = InterfacebehaviourFactory.eINSTANCE.createInterfaceBehaviour();
iface.getConnectors().add(MiraFactory.eINSTANCE.createRequirementConnector());
iface.setPriority(RequirementPriority.NORMAL);
iface.setScope(InterfacebehaviourFactory.eINSTANCE.createScope());
initializeInterfaceBehaviourSpecification(iface);
// create check list prototype
ArrayList<CheckList> checklists_requirement = new ArrayList<CheckList>();
checklists_requirement = loadChecklist("/template/CheckListPrototypeRequirement.xml");
for(CheckList checklist : checklists_requirement) {
iface.getSpecifications().add(copy(checklist));
}
return iface;
}
/** Creates a {@link InterfaceBehaviour}. */
public static InterfaceBehaviourSpecification createInterfaceBehaviourSpecification() {
InterfaceBehaviourSpecification iface =
InterfacebehaviourFactory.eINSTANCE.createInterfaceBehaviourSpecification();
initializeInterfaceBehaviourSpecification(iface);
return iface;
}
/** Initializes the given {@link InterfaceBehaviourSpecification}. */
private static void initializeInterfaceBehaviourSpecification(
InterfaceBehaviourSpecification iface) {
iface.setCondition(IBConditionType.ALWAYS);
iface.setTrigger(InterfacebehaviourFactory.eINSTANCE.createTrigger());
iface.setPrecondition(InterfacebehaviourFactory.eINSTANCE.createConditionBase());
iface.setResponse(createResponse());
}
/** Creates a {@link Assets}. */
public static Assets createAssets() {
return SecurityFactory.eINSTANCE.createAssets();
......@@ -382,39 +333,6 @@ public final class MiraModelElementFactory {
return spec;
}
/** Creates a {@link ScopeSpecification} for {@link InterfaceBehaviour} requirements. */
public static org.fortiss.af3.mira.model.interfacebehaviour.ScopeSpecification
createScopeSpecificationIB(String name, String comment) {
org.fortiss.af3.mira.model.interfacebehaviour.ScopeSpecification spec =
InterfacebehaviourFactory.eINSTANCE.createScopeSpecification();
spec.setName(name);
spec.setComment(comment);
return spec;
}
/** Creates a {@link ConditionBase} for {@link InterfaceBehaviour} requirements. */
public static org.fortiss.af3.mira.model.interfacebehaviour.ConditionBase
createConditionBaseIB() {
return InterfacebehaviourFactory.eINSTANCE.createConditionBase();
}
/** Creates a {@link Trigger} for {@link InterfaceBehaviour} requirements. */
public static org.fortiss.af3.mira.model.interfacebehaviour.Trigger createTriggerIB() {
return InterfacebehaviourFactory.eINSTANCE.createTrigger();
}
/** Creates a {@link Scope} for {@link InterfaceBehaviour} requirements. */
public static org.fortiss.af3.mira.model.interfacebehaviour.Scope createScopeIB() {
return org.fortiss.af3.mira.model.interfacebehaviour.InterfacebehaviourFactory.eINSTANCE
.createScope();
}
/** Creates a {@link Response}. */
public static Response createResponse() {
return InterfacebehaviourFactory.eINSTANCE.createResponse();
}
/** Creates a {@link RequirementSource}. */
public static RequirementSource createRequirementSource(String name, String comment) {
RequirementSource requirementSource =
......
......@@ -55,7 +55,6 @@ import org.fortiss.af3.mira.model.functional.FormalSpecification;
import org.fortiss.af3.mira.model.functional.Signal;
import org.fortiss.af3.mira.model.glossary.Glossary;
import org.fortiss.af3.mira.model.glossary.GlossaryEntry;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour;
import org.fortiss.af3.mira.model.relations.impl.DirectedRequirementRelationTypeImpl;
import org.fortiss.af3.mira.model.requirementSource.ExternalSystem;
import org.fortiss.af3.mira.model.requirementSource.RequirementDocument;
......@@ -255,13 +254,6 @@ public class MiraUtils {
if(object instanceof RequirementsPackage) {
return 8;
}
if(object instanceof Requirement) {
if(object instanceof InterfaceBehaviour) {
return 11;
}
return 9;
}
if(object instanceof Array) {
return 12;
}
......@@ -332,10 +324,6 @@ public class MiraUtils {
if(object instanceof RequirementsPackage) {
return "Requirements package";
}
if(object instanceof InterfaceBehaviour) {
return "Interface behaviour requirement";
}
if(object instanceof Requirement) {
return "Requirement";
}
......@@ -678,23 +666,6 @@ public class MiraUtils {
return comparator;
}
/**
* Return the implemented interface of the given object.
*
* @param object
* the object whose type shall be detected.
* @return the implemented interface of the given object
*/
public static Class<? extends Requirement> getRequirementInterface(EObject object) {
if(object instanceof InterfaceBehaviour) {
return InterfaceBehaviour.class;
} else if(object instanceof Requirement) {
return Requirement.class;
} else {
return null;
}
}
/**
* @param newReq
* @param reqs
......@@ -723,15 +694,7 @@ public class MiraUtils {
}
return;
}
// if no Requirement/Interface behavior has been defined in the package,
// use default name for the respective requirement type.
if(newReq instanceof InterfaceBehaviour)
reqID = "<New interface behaviour>";
else if(newReq instanceof InterfaceBehaviour)
reqID = "<New structure>";
else
reqID = "<New requirement>";
newReq.setReqId(reqID);
return;
}
......
......@@ -4,4 +4,4 @@ RequirementConflictChecker.java fa48386a00083e82a1ebb99afc4e217f5d41c659 GREEN
RequirementConstraintViolation.java 9a21e7c397645eb00603cfb5dc376f3b8bd62b95 GREEN
RequirementDeclinedSourceChecker.java 685e02162bdb3d29470b01674bdb1cd79dda6262 GREEN
RequirementRedundantTraceChecker.java 469e19dfbb4b82fc9ae1d2cad3d84c9120b2ef34 GREEN
RequirementTraceToComponentArchitectureChecker.java 1ce71c444eed29eef92be84713bf4d2a36f2970b GREEN
RequirementTraceToComponentArchitectureChecker.java c187be323b7af3028c79be1e537ad4297c705f95 YELLOW
......@@ -15,22 +15,15 @@
+--------------------------------------------------------------------------*/
package org.fortiss.af3.mira.verification;
import static org.fortiss.af3.mira.verification.ConstraintMessage.createNoConnectionToComponentArchitectureViolation;
import java.util.ArrayList;
import java.util.List;
import org.fortiss.af3.component.model.Component;
import org.fortiss.af3.mira.model.ExternalRelation;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.interfacebehaviour.InterfaceBehaviour;
import org.fortiss.tooling.kernel.extension.IConstraintChecker;
import org.fortiss.tooling.kernel.extension.base.ConstraintCheckerBase;
/**
* {@link IConstraintChecker} {@link Requirement} implemented in component architecture.
* {@link InterfaceBehaviour} should be connected to a {@link Component} in the
* component architecture.
*
* @author teufl
*/
......@@ -42,20 +35,6 @@ public class RequirementTraceToComponentArchitectureChecker extends
ArrayList<RequirementConstraintViolation<Requirement>> result =
new ArrayList<RequirementConstraintViolation<Requirement>>();
if(requirement instanceof InterfaceBehaviour) {
boolean connected = false;
for(ExternalRelation rel : requirement.getExternalRelation()) {
if(rel.getExternalRelationSpecification().getSpecificationOf() instanceof Component) {
// requirement connected, check passed
connected = true;
break;
}
}
if(!connected) {
result.add(createNoConnectionToComponentArchitectureViolation(requirement));
}
}
return result;
}
}
......@@ -3,7 +3,7 @@ MIRA.export_report.html fbd97dff764cff59e647a79f7cd62cd897cf55b4 GREEN
MIRA.glossary.html f0f4ff9b771d96001bdac388b88590716581c573 GREEN
MIRA.interfacebehaviour.html 4a728ed69bbf92fe5a3a3899b9ea093a9a774888 GREEN
MIRA.requirement_source.html 5fc52fcd8527b0b0c1418b88a9a51affc641aaa2 GREEN
MIRA.requirements.html cd905dec77dcb10114d427132ced32dab272fb11 GREEN
MIRA.requirements.html 52acaf28bddc12f3bd30b08fcf52785e5414042e GREEN
MIRA.requirements_analysis.html d8a27745b2db24883e473f4a819337d4268cb261 GREEN
MIRA.what_is_MIRA.html 3b6528f3da42ff9dc142251243e8340307540740 GREEN
MSC.html 96f052975c78e6d4a985347893c31ab3d6ccc2f1 GREEN
......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
Documentation of MIRA - Model-based Integrated Requirements Analysis.
@author pham
@ConQAT.Rating GREEN Hash: FFC09344BC1181AC84313933F45EBF01
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>MIRA - Creating a Requirements Analysis using AutoFOCUS3 (AF3)</title>
</head>
<body>
<h1><u><font color="#336699">MIRA - Model-based Integrated Requirements Analysis</font></u></h1>
<h2><font color="#336699">Interface Behaviour requirements</font></h2>
<i>Interface Behaviour</i> requirements are another special type of <a href="MIRA.requirements.html">Requirements</a>.
They are used to structure requirements on the interface behaviour of a system.
<br><br>
Every interface behaviour has a <i>Detail</i> section.
Additionally, every interface behaviour can be formalized to a <i>Formal Specification</i>.
<br><br>
<img src="./pictures/MIRA.interfaceBehaviour.png">
<br><br>
<h3><font color="#336699">Detail Section</font></h3>
The Detail section consists of a set of fields to specify the interface behaviour:
<ul>
<li><b>Scope:</b> The system under development</li>
<li><b>Condition type:</b> The condition type of the temporal specification. Specifically, these are
<i>Always (ubiquitous)</i>, <i>When (event)</i>, <i>If (undesired behavior)</i>, <i>While (state)</i>.
</li>
<li><b>Trigger:</b> The action that triggers the specification. Only accessible if the condition type is <i>When</i> or <i>If</i>.</li>
<li><b>Precondition:</b> The precondition of the specification. Disabled when condition type is <i>Always</i>.</li>
<li><b>Response type:</b> The response type of the temporal specification.</li>
<li><b>Response type:</b> The event that will be triggered.</li>
</ul>
<h3><font color="#336699">Examples</font></h3>
<b>Always (ubiquitous):</b> The emergency system shall always be able to supply energy
<br><br>
<img src="./pictures/MIRA.IF_ExampleAlways.png">
<br><br>
<b>When (event), then (state):</b> When the emergency system is on and an emergency situation occurs, then (state) the system shall supply energy
<br><br>
<img src="./pictures/MIRA.IF_ExampleWhen.png">
<br><br>
<b>When (event), then (event):</b> When the emergency system is on and an emergency situation occurs, then the central control system shall be informed within 5 seconds
<br><br>
<img src="./pictures/MIRA.IF_ExampleWhenEvent.png">
<br><br>
<b>While (state), then (state):</b> While the emergency system is providing energy, then the central control system shall be informed every 10 seconds
<br><br>
<img src="./pictures/MIRA.IF_ExampleWhile.png">
<br><br>
<b>If (undesired behavior), then (event):</b> If the emergency system cannot provide energy, then the central control system shall be informed within one second
<br><br>
<img src="./pictures/MIRA.IF_ExampleIf.png">
<br><br>
<h3><font color="#336699">Connection of interface behaviour to component architecture</font></h3>
In the section <i>Detail</i> of an interface behaviour, a simple connection to the component architecture can be done by setting the scope of the interface behaviour to a component of the component architecture.
<br><br>
<img src="./pictures/MIRA.IBDetail.png">
<br><br>
<!-- NOTE: TODO
<h3><font color="#336699">Create temporal logic patterns with interface behaviour requirements</font></h3>
After all detail information has been filled, a temporal logic pattern can be generated with the respective button at the bottom of the detail section.
A combination of all possible statements and which kind of pattern they actually fit in
<br><br>
<table border="1">
<thead>
<tr>
<th>Condition Type</th>
<th>Response Type</th>
<th>Pattern Type</th>
</tr>
</thead>
<tbody>
<tr>
<td>When (event)</td>
<td>Then always (state)</td>
<td>All kinds of verification patterns</td>
</tr>
<tr>
<td>When (event)</td>
<td>Then once (event)</td>
<td>All kinds of verification patterns</td>
</tr>
<tr>
<td>If (undesired behaviour)</td>
<td>Then always (state)</td>
<td>All kinds of verification patterns</td>
</tr>