From 5d7f9317d874928aed062758ae24c542c5f9bff7 Mon Sep 17 00:00:00 2001
From: Alexander Diewald <diewald@fortiss.org>
Date: Thu, 18 Jan 2018 16:32:54 +0000
Subject: [PATCH] Safety: Prepare for unused code removal.

* Remove the SFF value provider. An "equivalent Safety Level" will be introduced for hardware elements later.
* Keep the ProbabilityFailuresDemand- and ProbabilityFailuresHourValueProvider(s) for use in a more complex safety analysis.
* Keep the HwComplexityValueProvider for describing simple HW voters (useful for safety analysis).
refs 3240
---
 .../trunk/plugin.xml                          |  6 ----
 .../opt4j/encoding/partitionmapping/.ratings  |  2 +-
 .../encoding/partitionmapping/Partition.java  |  6 ----
 .../alg/dse/evaluator/constraint/.ratings     |  2 +-
 ...fetyIntegrityLevelConstraintEvaluator.java | 28 ++++++++++---------
 .../alg/dse/sysmodel/arch/.ratings            |  2 +-
 .../sysmodel/arch/IExecutionUnitAdapter.java  |  6 +---
 .../alg/dse/sysmodel/arch/af3/.ratings        |  2 +-
 .../arch/af3/AF3ExecutionUnitAdapter.java     | 19 ++-----------
 9 files changed, 22 insertions(+), 51 deletions(-)

diff --git a/org.fortiss.af3.exploration.alg/trunk/plugin.xml b/org.fortiss.af3.exploration.alg/trunk/plugin.xml
index 0dc1ed11..7e8bc43f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/plugin.xml
+++ b/org.fortiss.af3.exploration.alg/trunk/plugin.xml
@@ -11,12 +11,6 @@
    <!-- Value providers for the annotation classes -->
    <extension
          point="org.fortiss.tooling.base.annotation">
-      <annotation
-            binding="org.fortiss.af3.safety.annotation.valueprovider.SafeFailureFractionValueProvider">
-         <modelElementClass
-               modelElementClass="org.fortiss.af3.platform.model.ExecutionUnit">
-         </modelElementClass>
-      </annotation>
       <annotation binding="org.fortiss.af3.exploration.alg.annotation.valueprovider.ComponentImplDiversityRefValueProvider">
          <modelElementClass modelElementClass="org.fortiss.af3.component.model.Component"/>
       </annotation>
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
index 09929aba..d9a7bac0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
@@ -1,3 +1,3 @@
-Partition.java 3f643bea0eb26cb7528b7dbcae6b957cac081125 RED
+Partition.java b870fdd306818d8195b662daee9546feebb28e18 RED
 PartitionMappingEncoding.java 91d0233fc1e2301b40cc955defa82dafadc724df RED
 PartitionMappingEntry.java 16130a3bd2f157c4f5f5ef6cb91d1b72137f0acd RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java
index 3de4054f..ef6399fc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java
@@ -52,10 +52,4 @@ public class Partition implements IExecutionUnitAdapter<Partition>, IRequestAdap
 		// TODO No associated Object with a name at the moment.
 		return null;
 	}
-
-	/** {@inheritDoc} */
-	@Override
-	public double getSafeFailureFraction() {
-		return 0.0;
-	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
index 39a274fa..643e5530 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
@@ -5,4 +5,4 @@ DeadlineConstraintEvaluator.java a023d233a2ee768cef573a67e06ae1fe0b53ddbe RED
 IConstraintEvaluator.java bca49bbdea5e089b0d045fc356ceedcb466df55e RED
 MappingEvaluatorConstraint.java fec8cf995cbafa433235f8f6715bc5183c2f8ba3 RED
 PeriodConstraintEvaluator.java 52dc75180579f154a514816223461e27cb9ca84d RED
-SafetyIntegrityLevelConstraintEvaluator.java 74260b0b2b1c5a2f4a0de41d24a993a8e0dca65d RED
+SafetyIntegrityLevelConstraintEvaluator.java 34018532882a83860e35aa5bb102735c5be5772b RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java
index 1f7e60ef..9f373511 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java
@@ -140,19 +140,21 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM
 		// an execution unit, according to the tables given in IEC 61508-2.
 		List<SIL> parallelSILs = new ArrayList<SIL>();
 		for(IExecutionUnitAdapter<?> ecu : hwReplica) {
-			double sff = ecu.getSafeFailureFraction();
-			if(sff >= 0.0 && sff < 0.6) {
-				parallelSILs.add(SIL.SIL0);
-			} else if(sff < 0.9) {
-				parallelSILs.add(SIL.SIL1);
-			} else if(sff < 0.99) {
-				parallelSILs.add(SIL.SIL2);
-			} else if(sff <= 1.0) {
-				parallelSILs.add(SIL.SIL3);
-			} else {
-				throw new RuntimeException(
-						"An invalid value for the safe failure fraction has been given to the optimization. The allowed range is 0 to 1.");
-			}
+			// TODO: Update the SafetyAnalysis Evaluator with comparable SILs.
+			// double sff = ecu.getSafeFailureFraction();
+			// if(sff >= 0.0 && sff < 0.6) {
+			// parallelSILs.add(SIL.SIL0);
+			// } else if(sff < 0.9) {
+			// parallelSILs.add(SIL.SIL1);
+			// } else if(sff < 0.99) {
+			// parallelSILs.add(SIL.SIL2);
+			// } else if(sff <= 1.0) {
+			// parallelSILs.add(SIL.SIL3);
+			// } else {
+			// throw new RuntimeException(
+			// "An invalid value for the safe failure fraction has been given to the optimization.
+			// The allowed range is 0 to 1.");
+			// }
 		}
 
 		// Determine the overall SIL of the safety function considering the hardware replication.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings
index 506edb9e..c6b7235f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings
@@ -1,6 +1,6 @@
 ICommunicationResourceAdapter.java 54dd128bfa04c5cfd16551eec8983e712636f86a RED
 IDeployableComponentAdapter.java 68b34853bd6f88201f68eb369d70be41e8870266 RED
-IExecutionUnitAdapter.java 580a75672bfc7cbd72b008ee6a73b6ba17eb4dec RED
+IExecutionUnitAdapter.java bdef41e1f32b3e4940af175609d789d25472bc0e RED
 IGatewayUnitAdapter.java 5f806d2907ee461938eea14238572311572ecf81 RED
 ILogicalArchitectureAdapter.java 7570a2adab987260e74bc255fcf21862a820226e RED
 IMemoryUnitAdapter.java 588840b8237bd23a048a69961ffe985caf3b425b RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java
index 5eb4413d..e7ea6bfc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java
@@ -22,9 +22,5 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author barner
  */
 public interface IExecutionUnitAdapter<T> extends IResourceAdapter<T> {
-	/**
-	 * Returns the SafeFailureFraction of an execution unit. This value is required for calculating
-	 * the safety level of a task for a given allocation.
-	 */
-	double getSafeFailureFraction();
+	// Marker interface.
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings
index 9675ff74..2b38cc69 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings
@@ -1,5 +1,5 @@
 AF3DeployableComponentAdapter.java 12703eb580d9c8e09e2c4660db114f38e3b12c20 RED
-AF3ExecutionUnitAdapter.java dec17015851a49c65aa9518722d73f00f1e6d442 RED
+AF3ExecutionUnitAdapter.java 95b1d4b3e933372e5e45e41ecd4e2730f823bcc5 RED
 AF3GatewayAdapter.java f61ab5ff2fa58f561ea6720ba1add06c0d1f437e RED
 AF3LogicalArchitectureAdapter.java b129b15fefcd1864df1d2584f2ca0820ef6600c4 RED
 AF3MemoryUnitAdapter.java 4737c88556ab6274f19c8b31196870063e800b9d RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java
index ca03dcc7..e6442bb5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java
@@ -15,12 +15,9 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.sysmodel.arch.af3;
 
-import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf;
-
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.platform.model.ExecutionUnit;
-import org.fortiss.af3.safety.model.annotation.SafeFailureFraction;
 
 /**
  * Adapter between AF3 {@link ExecutionUnit} (=deployment target of
@@ -28,11 +25,8 @@ import org.fortiss.af3.safety.model.annotation.SafeFailureFraction;
  * 
  * @author barner
  */
-public class AF3ExecutionUnitAdapter extends AF3ResourceAdapter<ExecutionUnit> implements
-		IExecutionUnitAdapter<ExecutionUnit> {
-	/** Execution unit safe failure fraction annotation. */
-	private SafeFailureFraction safeFailureFraction;
-
+public class AF3ExecutionUnitAdapter extends AF3ResourceAdapter<ExecutionUnit>
+		implements IExecutionUnitAdapter<ExecutionUnit> {
 	/**
 	 * Creates a {@link IExecutionUnitAdapter} for an {@link ExecutionUnit}.
 	 * 
@@ -45,14 +39,5 @@ public class AF3ExecutionUnitAdapter extends AF3ResourceAdapter<ExecutionUnit> i
 	public AF3ExecutionUnitAdapter(ExecutionUnit executionUnit, Double failureProb)
 			throws Exception {
 		super(executionUnit, failureProb);
-
-		safeFailureFraction =
-				pickFirstInstanceOf(SafeFailureFraction.class, executionUnit.getSpecifications());
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public double getSafeFailureFraction() {
-		return safeFailureFraction.getValue();
 	}
 }
-- 
GitLab