Commit 98928fb5 authored by Sebastian Voss's avatar Sebastian Voss
Browse files

Added safety requirements not as a specific requirement type, but as a...

Added safety requirements not as a specific requirement type, but as a property of requirements, incl model changes in the plugins sil and sil.ui 
refs 1434
parent f8d6f45a
......@@ -7,8 +7,9 @@ Bundle-ClassPath: .,
lib/swt-grouplayout.jar
Bundle-Vendor: fortiss GmbH
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.fortiss.af3.state.ui;bundle-version="2.4.0";visibility:=reexport,
Require-Bundle: org.fortiss.af3.state.ui;bundle-version="2.3.0";visibility:=reexport,
org.fortiss.af3.mira;bundle-version="2.4.0";visibility:=reexport,
org.fortiss.af3.sil;bundle-version="1.0.0",
org.eclipse.core.databinding.property;bundle-version="1.4.0",
org.eclipse.jface.text;bundle-version="3.6.0",
org.eclipse.core.databinding.beans;bundle-version="1.2.100",
......
......@@ -96,6 +96,10 @@ public class ConvertRequirementAction implements Runnable {
}
}
newReq.setSafetyLevel(oldReq.getSafetyLevel());
newReq.setSafetyStandards(oldReq.getSafetyStandards());
newReq.setSafetyRequirementType(oldReq.getSafetyRequirementType());
delete(oldReq, true);
IModelEditorBindingService.INSTANCE.openInEditor(newReq);
......
......@@ -26,6 +26,9 @@ import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__DESCR
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__PRIORITY;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__RATIONALE;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__REQ_ID;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__SAFETY_LEVEL;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__SAFETY_REQUIREMENT_TYPE;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__SAFETY_STANDARDS;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__SOURCES;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__STATUS;
import static org.fortiss.af3.mira.model.MiraPackage.Literals.REQUIREMENT__TODO;
......@@ -42,6 +45,9 @@ import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createRequireme
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createUseCase;
import static org.fortiss.af3.mira.utils.MiraUtils.getDisplayTypeFor;
import static org.fortiss.af3.mira.utils.MiraUtils.getRequirementInterface;
import static org.fortiss.af3.sil.utils.SafetySpecificationUtils.createSafetySpecForComponent;
import static org.fortiss.af3.sil.utils.SafetySpecificationUtils.hasSafetySpecification;
import static org.fortiss.af3.sil.utils.SafetySpecificationUtils.setPropagatedSafetyLevel;
import static org.fortiss.tooling.base.model.element.ElementPackage.Literals.IHIERARCHIC_ELEMENT_CONTAINER__CONTAINED_ELEMENTS;
import static org.fortiss.tooling.kernel.model.FortissToolingKernelPackage.Literals.INAMED_COMMENTED_ELEMENT__COMMENT;
import static org.fortiss.tooling.kernel.model.FortissToolingKernelPackage.Literals.INAMED_ELEMENT__NAME;
......@@ -71,6 +77,7 @@ import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
......@@ -97,10 +104,16 @@ import org.eclipse.ui.actions.TextStyledTextActionHandler;
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.fortiss.af3.component.model.Component;
import org.fortiss.af3.mira.model.Analysis;
import org.fortiss.af3.mira.model.ExternalRelation;
import org.fortiss.af3.mira.model.ExternalRelationSpecification;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.RequirementPriority;
import org.fortiss.af3.mira.model.RequirementStatus;
import org.fortiss.af3.mira.model.SafetyLevel;
import org.fortiss.af3.mira.model.SafetyRequirementType;
import org.fortiss.af3.mira.model.SafetyStandards;
import org.fortiss.af3.mira.model.glossary.Glossary;
import org.fortiss.af3.mira.model.requirementSource.FileItem;
import org.fortiss.af3.mira.model.requirementSource.RequirementDocument;
......@@ -121,7 +134,9 @@ import org.fortiss.tooling.base.ui.dialog.ElementTreeSingleSelectDialog;
import org.fortiss.tooling.base.ui.dialog.ModelElementTreeContentProvider;
import org.fortiss.tooling.base.ui.editor.FormsEditorBase;
import org.fortiss.tooling.kernel.ui.presentation.ModelElementLabelProvider;
import org.fortiss.tooling.kernel.service.ICommandStackService;
import org.fortiss.tooling.kernel.ui.service.IActionService;
import org.fortiss.tooling.kernel.ui.util.SelectionUtils;
/**
* Editor to edit a {@link Requirement}
......@@ -226,6 +241,20 @@ public class RequirementEditor<T extends Requirement> extends FormsEditorBase<T>
}
};
/** SafetyLevel Array for ISO26262 */
private SafetyLevel[] iso26262s = new SafetyLevel[] {SafetyLevel.NOTASSIGNED,
SafetyLevel.ASILA, SafetyLevel.ASILB, SafetyLevel.ASILC};
/** SafetyLevel Array for IEC61508 */
private SafetyLevel[] iec61508s = new SafetyLevel[] {SafetyLevel.NOTASSIGNED, SafetyLevel.SIL1,
SafetyLevel.SIL2, SafetyLevel.SIL3};
/** Combo viewer for @link{SILLevel}s */
private ComboViewer silInput;
/** Combo viewer for @@ink {Standards} */
private ComboViewer standardInput;
/** {@inheritDoc} */
@Override
public void registerGlobalActions(IActionBars bars) {
......@@ -283,10 +312,119 @@ public class RequirementEditor<T extends Requirement> extends FormsEditorBase<T>
createSectionImages();
createSectionsAfterGeneral();
createSectionRelation();
createSectionSafety();
createSectionComment();
}
/**
* Creates a Safety Section
*/
private void createSectionSafety() {
Composite safetyComposite = createNewSection("Safety", "Safety information");
safetyComposite.setLayout(new GridLayout(2, false));
/** REQUIREMENT TYPE - EDIT */
Label typeLabel =
toolkit.createLabel(safetyComposite, "Safety Requirement Type ", SWT.READ_ONLY);
singleLineLabelFactory.applyTo(typeLabel);
final ComboViewer typeInput = new ComboViewer(safetyComposite, SWT.READ_ONLY);
singleLineInputFactory.applyTo(typeInput.getCombo());
toolkit.adapt(typeInput.getCombo());
typeInput.setContentProvider(new ArrayContentProvider());
typeInput.setLabelProvider(new LabelProvider());
typeInput.setInput(SafetyRequirementType.values());
dbc.bindValue(observeSinglePostSelection(typeInput),
observeValue(editedObject, REQUIREMENT__SAFETY_REQUIREMENT_TYPE));
/** STANDARD - EDIT */
Label standardLabel = toolkit.createLabel(safetyComposite, "Standard ", SWT.READ_ONLY);
singleLineLabelFactory.applyTo(standardLabel);
standardInput = new ComboViewer(safetyComposite, SWT.READ_ONLY);
singleLineInputFactory.applyTo(standardInput.getCombo());
toolkit.adapt(standardInput.getCombo());
standardInput.setContentProvider(new ArrayContentProvider());
standardInput.setLabelProvider(new LabelProvider());
standardInput.setInput(SafetyStandards.values());
dbc.bindValue(observeSinglePostSelection(standardInput),
observeValue(editedObject, REQUIREMENT__SAFETY_STANDARDS));
if(editedObject.getSafetyRequirementType() == SafetyRequirementType.HARDWARE ||
editedObject.getSafetyRequirementType() == SafetyRequirementType.FUNCTIONAL) {
standardInput.getControl().setEnabled(false);
}
standardInput.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
setSafetyComboInput();
}
});
/** SAFETY INTEGRITY LEVEL - EDIT */
Label silLabel =
toolkit.createLabel(safetyComposite, "Safety Integrity Level (SIL) ", SWT.READ_ONLY);
singleLineLabelFactory.applyTo(silLabel);
silInput = new ComboViewer(safetyComposite, SWT.READ_ONLY);
singleLineInputFactory.applyTo(silInput.getCombo());
toolkit.adapt(silInput.getCombo());
silInput.setContentProvider(new ArrayContentProvider());
silInput.setLabelProvider(new LabelProvider());
setSafetyComboInput();
toolkit.createLabel(safetyComposite, "", SWT.NONE);
if(editedObject.getSafetyRequirementType() == SafetyRequirementType.HARDWARE ||
editedObject.getSafetyRequirementType() == SafetyRequirementType.FUNCTIONAL) {
silInput.getControl().setEnabled(false);
}
silInput.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
if(editedObject.getExternalRelationList() != null) {
IStructuredSelection selection = (IStructuredSelection)event.getSelection();
SafetyLevel selectedSafetyLevel = (SafetyLevel)selection.getFirstElement();
changingSafetyLevel(selectedSafetyLevel);
}
}
});
dbc.bindValue(observeSinglePostSelection(silInput),
observeValue(editedObject, REQUIREMENT__SAFETY_LEVEL));
}
/**
* @param selectedSafetyLevel
*/
public void changingSafetyLevel(SafetyLevel selectedSafetyLevel) {
/** Changes the SIL-Level in the SafetySpecification */
Component selectedComponent = null;
for(ExternalRelation er : editedObject.getExternalRelationList()) {
ExternalRelationSpecification ers = er.getExternalRelationSpecification();
if(er.isSafetyRelatedTrace()) {
selectedComponent = (Component)ers.getSpecificationOf();
}
/**
* SelectedComponent complies to the component that is selected in the
* wizard
*/
if(selectedComponent != null) {
if(hasSafetySpecification(selectedComponent)) {
setPropagatedSafetyLevel(selectedComponent, selectedSafetyLevel);
} else {
createSafetySpecForComponent(selectedComponent, selectedSafetyLevel);
setPropagatedSafetyLevel(selectedComponent, selectedSafetyLevel);
}
}
}
}
/**
* create a listener to get informed when the glossary and requirement source changed
*/
......@@ -687,4 +825,38 @@ public class RequirementEditor<T extends Requirement> extends FormsEditorBase<T>
new ListToWordRuleUpdateStrategy(analysis));
}
}
/**
* Definition of the Combobox Input, w.r.t. the standard that has been chosen
*/
private void setSafetyComboInput() {
switch(SelectionUtils
.checkAndPickFirst(standardInput.getSelection(), SafetyStandards.class)) {
case IEC61508:
if(silInput.getInput() != iec61508s && silInput.getInput() != null) {
ICommandStackService.INSTANCE.runAsCommand(editedObject, new Runnable() {
@Override
public void run() {
editedObject.setSafetyLevel(SafetyLevel.NOTASSIGNED);
}
});
}
silInput.setInput(iec61508s);
break;
case ISO26262:
if(silInput.getInput() != iso26262s && silInput.getInput() != null) {
ICommandStackService.INSTANCE.runAsCommand(editedObject, new Runnable() {
@Override
public void run() {
editedObject.setSafetyLevel(SafetyLevel.NOTASSIGNED);
}
});
}
silInput.setInput(iso26262s);
break;
}
}
}
......@@ -27,6 +27,11 @@ import static org.fortiss.af3.mira.ui.utils.HighlightUtils.createSourceViewer;
import static org.fortiss.af3.mira.ui.utils.SelectionDialogUtils.openRequirementRelationStatusSingleSelectDialog;
import static org.fortiss.af3.mira.utils.MiraModelElementFactory.createExternalRelation;
import static org.fortiss.af3.mira.utils.MiraUtils.initializeRequirementRelationStatus;
import static org.fortiss.af3.sil.propagate.PropagateFunctionality.updateIntendedSafetyHierarchically;
import static org.fortiss.af3.sil.propagate.PropagateFunctionality.updateSafetyLeveltoAllSubComponents;
import static org.fortiss.af3.sil.utils.SafetySpecificationUtils.createSafetySpecForComponent;
import static org.fortiss.af3.sil.utils.SafetySpecificationUtils.hasSafetySpecification;
import static org.fortiss.af3.sil.utils.SafetySpecificationUtils.setPropagatedSafetyLevel;
import static org.fortiss.tooling.base.model.element.ElementPackage.Literals.IMODEL_ELEMENT__REFERENCED_BY;
import static org.fortiss.tooling.kernel.model.FortissToolingKernelPackage.Literals.INAMED_COMMENTED_ELEMENT__COMMENT;
import static org.fortiss.tooling.kernel.ui.util.DataBindingUtils.performComplexTextBinding;
......@@ -66,6 +71,7 @@ import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.actions.TextStyledTextActionHandler;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.fortiss.af3.component.model.Component;
import org.fortiss.af3.mira.command.DeleteRequirementSpecificationCommand;
import org.fortiss.af3.mira.model.Analysis;
import org.fortiss.af3.mira.model.ExternalRelation;
......@@ -73,6 +79,7 @@ import org.fortiss.af3.mira.model.ExternalRelationSpecification;
import org.fortiss.af3.mira.model.MiraPackage;
import org.fortiss.af3.mira.model.Requirement;
import org.fortiss.af3.mira.model.RequirementSpecification;
import org.fortiss.af3.mira.model.SafetyLevel;
import org.fortiss.af3.mira.model.relations.RequirementRelationStatus;
import org.fortiss.af3.mira.ui.action.ConnectExternalRelationToComponentAction;
import org.fortiss.af3.mira.ui.editor.RequirementEditor;
......@@ -228,6 +235,10 @@ public class ExternalRelationSection {
createRelationColumn(relationTableViewer, ExternalRelationColumn.COMMENT, "Comment", 200,
true);
// column6 Safety Relevance
createRelationColumn(relationTableViewer, ExternalRelationColumn.SAFETY,
"Safety Relevance", 100, true);
// create table item according to requirement relations, which are related to the edited
// requirement
for(ExternalRelation externalRelation : analysis.getExternalRelationList()) {
......@@ -461,12 +472,68 @@ public class ExternalRelationSection {
null, null));
specifyControl(editorComment, sourceViewerComment.getTextWidget(),
ExternalRelationColumn.COMMENT, item, editorMap, controlMap);
// column6 Safety Relevance
TableEditor safetyRelevanceStatus = new TableEditor(relationTable);
final Button relevanceBtn = new Button(relationTable, SWT.TOGGLE);
relevanceBtn.setText(relation.isSafetyRelatedTrace() ? "yes" : "no");
relevanceBtn.setSelection(relation.isSafetyRelatedTrace());
relevanceBtn.addSelectionListener(new SelectionAdapter() {
/** {@inheritDoc} */
@Override
public void widgetSelected(SelectionEvent e) {
ICommandStackService.INSTANCE.runAsCommand(relation, new Runnable() {
/** {@inheritDoc} */
@Override
public void run() {
relation.setSafetyRelatedTrace(relevanceBtn.getSelection());
}
});
relevanceBtn.setText(relation.isSafetyRelatedTrace() ? "yes" : "no");
relevanceBtn.setSelection(relation.isSafetyRelatedTrace());
changingSafetyLevel(relation, relation.getSourceRequirement().getSafetyLevel());
}
});
specifyControl(safetyRelevanceStatus, relevanceBtn, ExternalRelationColumn.SAFETY, item,
editorMap, controlMap);
registeredSourceViewers.add(sourceViewerComment);
sourceViewerLookUpMap.put(sourceViewerComment.getTextWidget(), sourceViewerComment);
tableEditorsList.add(editorMap);
tableControlsList.add(controlMap);
bindingsList.add(bindingMap);
}
/**
* @param selectedSafetyLevel
*/
public void changingSafetyLevel(ExternalRelation er, SafetyLevel selectedSafetyLevel) {
SafetyLevel currentSafetyLevel = selectedSafetyLevel;
/** Changes the SIL-Level in the SafetySpecification */
Component selectedComponent =
(Component)er.getExternalRelationSpecification().getSpecificationOf();
if(!er.isSafetyRelatedTrace()) {
currentSafetyLevel = SafetyLevel.NOTASSIGNED;
}
/**
* SelectedComponent complies to the component that is selected in the
* wizard
*/
if(selectedComponent != null) {
if(hasSafetySpecification(selectedComponent)) {
setPropagatedSafetyLevel(selectedComponent, currentSafetyLevel);
updateIntendedSafetyHierarchically(selectedComponent);
updateSafetyLeveltoAllSubComponents(selectedComponent, currentSafetyLevel);
} else {
createSafetySpecForComponent(selectedComponent, currentSafetyLevel);
setPropagatedSafetyLevel(selectedComponent, currentSafetyLevel);
updateSafetyLeveltoAllSubComponents(selectedComponent, currentSafetyLevel);
}
}
}
/** dispose the given {@link Binding} array */
......@@ -633,7 +700,9 @@ public class ExternalRelationSection {
/** matching by the target requirements column */
TARGET(4),
/** matching by the comment column */
COMMENT(5);
COMMENT(5),
/** matching by the comment safety */
SAFETY(6);
/** level code for comparison */
private int columnIndex;
......
......@@ -37,10 +37,10 @@ Export-Package: org.fortiss.af3.mira,
org.fortiss.af3.mira.utils,
org.fortiss.af3.mira.verification,
test.org.fortiss.af3.mira
Require-Bundle: org.fortiss.af3.component;bundle-version="2.4.0";visibility:=reexport,
org.fortiss.af3.msc;bundle-version="2.4.0";visibility:=reexport,
org.fortiss.af3.state;bundle-version="2.4.0";visibility:=reexport,
org.fortiss.af3.mode;bundle-version="2.4.0";visibility:=reexport,
Require-Bundle: org.fortiss.af3.component;bundle-version="2.3.0";visibility:=reexport,
org.fortiss.af3.msc;bundle-version="2.3.0";visibility:=reexport,
org.fortiss.af3.state;bundle-version="2.3.0";visibility:=reexport,
org.fortiss.af3.mode;bundle-version="2.3.0";visibility:=reexport,
org.fortiss.af3.table;bundle-version="1.0.0";visibility:=reexport
Bundle-ActivationPolicy: lazy
Bundle-NativeCode: lib/com4j-x86.dll; lib/com4j-amd64.dll
......
......@@ -94,6 +94,10 @@
eType="#//ExternalRelation" eOpposite="#//ExternalRelation/sourceRequirement"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="document" eType="#//DocumentReference"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="safetyLevel" eType="#//SafetyLevel"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="safetyStandards" eType="#//SafetyStandards"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="safetyRequirementType"
eType="#//SafetyRequirementType"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RequirementConnector" eSuperTypes="platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IConnector"/>
<eClassifiers xsi:type="ecore:EEnum" name="RequirementStatus">
......@@ -214,6 +218,7 @@
eOpposite="#//Requirement/externalRelation"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="externalRelationSpecification"
eType="#//ExternalRelationSpecification" eOpposite="#//ExternalRelationSpecification/externalRelation"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="safetyRelatedTrace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExternalRelationSpecification" eSuperTypes="#//RequirementSpecification">
<eStructuralFeatures xsi:type="ecore:EReference" name="externalRelation" eType="#//ExternalRelation"
......@@ -223,6 +228,24 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="document" eType="#//requirementSource/FileItem"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="page" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="SafetyStandards">
<eLiterals name="ISO26262" literal="ISO 26262"/>
<eLiterals name="IEC61508" value="1" literal="IEC 61508"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="SafetyLevel">
<eLiterals name="notassigned" literal="N/A"/>
<eLiterals name="SIL1" value="1" literal="SIL 1"/>
<eLiterals name="SIL2" value="2" literal="SIL 2"/>
<eLiterals name="SIL3" value="3" literal="SIL 3"/>
<eLiterals name="ASILA" value="4" literal="ASIL A"/>
<eLiterals name="ASILB" value="5" literal="ASIL B"/>
<eLiterals name="ASILC" value="6" literal="ASIL C"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="SafetyRequirementType">
<eLiterals name="Software" literal="Software"/>
<eLiterals name="Functional"/>
<eLiterals name="Hardware" literal="Hardware"/>
</eClassifiers>
<eSubpackages name="usecase" nsURI="http://www.fortiss.org/af3/mira/usecase" nsPrefix="org-fortiss-af3-mira-usecase">
<eClassifiers xsi:type="ecore:EClass" name="UseCase" eSuperTypes="#//Requirement platform:/resource/org.fortiss.tooling.base/model/base.ecore#//element/IHierarchicElementContainer">
<eOperations name="getScenariosList">
......
......@@ -27,6 +27,24 @@
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//ContextElementStatus/InConsolidation"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//ContextElementStatus/Consolidated"/>
</genEnums>
<genEnums typeSafeEnumCompatible="false" ecoreEnum="mira.ecore#//SafetyStandards">
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyStandards/ISO26262"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyStandards/IEC61508"/>
</genEnums>
<genEnums typeSafeEnumCompatible="false" ecoreEnum="mira.ecore#//SafetyLevel">
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyLevel/notassigned"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyLevel/SIL1"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyLevel/SIL2"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyLevel/SIL3"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyLevel/ASILA"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyLevel/ASILB"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyLevel/ASILC"/>
</genEnums>
<genEnums typeSafeEnumCompatible="false" ecoreEnum="mira.ecore#//SafetyRequirementType">
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyRequirementType/Software"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyRequirementType/Functional"/>
<genEnumLiterals ecoreEnumLiteral="mira.ecore#//SafetyRequirementType/Hardware"/>
</genEnums>
<genClasses ecoreClass="mira.ecore#//Analysis">
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mira.ecore#//Analysis/requirementRelation"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mira.ecore#//Analysis/requirementRelationStatus"/>
......@@ -50,6 +68,9 @@
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mira.ecore#//Requirement/incomingRequirementRelation"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mira.ecore#//Requirement/externalRelation"/>
<genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference mira.ecore#//Requirement/document"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//Requirement/safetyLevel"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//Requirement/safetyStandards"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//Requirement/safetyRequirementType"/>
<genOperations ecoreOperation="mira.ecore#//Requirement/getAnalysis"/>
<genOperations ecoreOperation="mira.ecore#//Requirement/getFormalSpecifications"/>
<genOperations ecoreOperation="mira.ecore#//Requirement/getRequirementsContainer"/>
......@@ -99,6 +120,7 @@
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mira.ecore#//ExternalRelation/externalRelationStatus"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mira.ecore#//ExternalRelation/sourceRequirement"/>
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mira.ecore#//ExternalRelation/externalRelationSpecification"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute mira.ecore#//ExternalRelation/safetyRelatedTrace"/>
</genClasses>
<genClasses ecoreClass="mira.ecore#//ExternalRelationSpecification">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference mira.ecore#//ExternalRelationSpecification/externalRelation"/>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment