Interface IAnalysis
- All Known Implementing Classes:
AbstractAnalysis,AbstractLQNAnalysis,AnalysisProxy,CostEvaluator,FeatureEvaluator,LQNSolverAnalysis,LQSimAnalysis,ReliabilityAnalysis,SecurityEvaluator,SimuComAnalysis,SimulizarAnalysis
public interface IAnalysis
Interface for analysis approaches that can be used within PerOpteryx. Can be used to start the analysis (
#analyse()) and retrieve the last result.
Check the methods for detailed call instructions (the protocols are complicated).
TODO: Refactor this (after having refactored DSEWorkflowConfiguration, see there)
and use DSE configuration classes instead of Eclipse ones.
Configuration and execution are now already separated a bit.
However, the analyses need the blackboard before they can determine their objectives.
Thus, now the AnalysisProxy and the other analyses have different protocols, which is bad. Refactor more.
Probably I need to reconsider the whole AnalysisProxy idea...-
Method Summary
Modifier and TypeMethodDescriptionvoidanalyse(PCMPhenotype pheno, org.eclipse.core.runtime.IProgressMonitor monitor) Analyses the current PCM instance from the blackboard.List<org.opt4j.core.Criterion>Can only be called after initialisation (#initialise(MDSDBlackboard, ILaunchConfiguration, ILaunch, IProgressMonitor)).Returns aStringthat represents the quality attribute that this analysis determines.booleanReturns whether this analysis provides one objective per usage scenario.booleanReturns whether this analysis also provides statistics for the objectives.voidinitialise(DSEWorkflowConfiguration configuration) Saves the passed Run Configuration information so that we do not have to pass them as parameters all the time.retrieveResultsFor(PCMPhenotype pheno, org.opt4j.core.Criterion criterion) This method can only be called after calling a#analyse()for this phenotype and the current PCM models of this candidate have to be in theBlackboardpartitionLoadPCMModelsIntoBlackboardJob.PCM_MODELS_PARTITION_ID FIXME: Make this method independent of the blackboard state.voidsetBlackboard(de.uka.ipd.sdq.workflow.mdsd.blackboard.MDSDBlackboard blackboard)
-
Method Details
-
analyse
void analyse(PCMPhenotype pheno, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException, de.uka.ipd.sdq.workflow.jobs.UserCanceledException, de.uka.ipd.sdq.workflow.jobs.JobFailedException, AnalysisFailedException Analyses the current PCM instance from the blackboard. This method can only be called after calling#initialise(MDSDBlackboard, ILaunchConfiguration, ILaunch). The PCM instance for thisPCMPhenotypehas to be copied to the Blackboard into partitionLoadPCMModelsIntoBlackboardJob.PCM_MODELS_PARTITION_ID before callings this. Otherwise, a wrong PCM model is analysed. The Analysis has to store the results for thisPCMPhenotype, so thatretrieveResultsFor(PCMPhenotype, Criterion)can be called on it multiple times. The results should be stored in a memory-efficient way.- Parameters:
pheno- TODOmonitor-- Throws:
org.eclipse.core.runtime.CoreExceptionde.uka.ipd.sdq.workflow.jobs.UserCanceledExceptionde.uka.ipd.sdq.workflow.jobs.JobFailedExceptionAnalysisFailedException
-
initialise
void initialise(DSEWorkflowConfiguration configuration) throws org.eclipse.core.runtime.CoreException Saves the passed Run Configuration information so that we do not have to pass them as parameters all the time. For real analyses, you need to call setBlackboard before this so that the objectives can be determined from the usage model. For theAnalysisProxyit is ok to call this first, you then need to call setBlackboard before callinganalyse(PCMPhenotype, IProgressMonitor),#retrieveLastResultsForObjective(Objective),#getObjectives(), orhasObjectivePerUsageScenario().- Parameters:
configuration-- Throws:
org.eclipse.core.runtime.CoreException
-
retrieveResultsFor
IAnalysisResult retrieveResultsFor(PCMPhenotype pheno, org.opt4j.core.Criterion criterion) throws org.eclipse.core.runtime.CoreException, AnalysisFailedException This method can only be called after calling a#analyse()for this phenotype and the current PCM models of this candidate have to be in theBlackboardpartitionLoadPCMModelsIntoBlackboardJob.PCM_MODELS_PARTITION_ID FIXME: Make this method independent of the blackboard state. Currently, the SimuComAnalysis and the LQN analyses still require the current PCM model to be on the blackboard.- Parameters:
pheno- TODOcriterion-- Returns:
- Throws:
org.eclipse.core.runtime.CoreExceptionAnalysisFailedException
-
getQualityAttribute
DSEConstantsContainer.QualityAttribute getQualityAttribute() throws org.eclipse.core.runtime.CoreExceptionReturns aStringthat represents the quality attribute that this analysis determines. This method can be called without initialization.- Returns:
- Throws:
org.eclipse.core.runtime.CoreException
-
hasStatisticResultsFor
boolean hasStatisticResultsFor() throws org.eclipse.core.runtime.CoreExceptionReturns whether this analysis also provides statistics for the objectives. This method can be called without initialization.- Returns:
- Throws:
org.eclipse.core.runtime.CoreException
-
getCriterions
Can only be called after initialisation (#initialise(MDSDBlackboard, ILaunchConfiguration, ILaunch, IProgressMonitor)).- Returns:
- Throws:
org.eclipse.core.runtime.CoreException
-
hasObjectivePerUsageScenario
boolean hasObjectivePerUsageScenario() throws org.eclipse.core.runtime.CoreExceptionReturns whether this analysis provides one objective per usage scenario. This method can be called before calling#initialise(MDSDBlackboard, ILaunchConfiguration, ILaunch, IProgressMonitor).- Throws:
org.eclipse.core.runtime.CoreException
-
setBlackboard
void setBlackboard(de.uka.ipd.sdq.workflow.mdsd.blackboard.MDSDBlackboard blackboard)
-