package NFP.Algorithms; import java.util.List; import seg.jUCMNav.nfp.generated.*; public class AggregateReliability { private List Reliabilities; private CompositionType composition; private Reliability aggregatedReliability; public Reliability getAggregateReliability (List Reliabilities,CompositionType composition){ this.Reliabilities=Reliabilities; this.composition=composition; initialize(); if(this.composition == CompositionType.Sequence || this.composition == CompositionType.Loop || this.composition == CompositionType.Concurrency){ for (Reliability RE : this.Reliabilities) { aggregatedReliability.setReliabilityLevel (aggregatedReliability.getReliabilityLevel()*RE.getReliabilityLevel()); } } if(this.composition == CompositionType.ConditionalBranching){ for (Reliability RE : this.Reliabilities) { aggregatedReliability.setReliabilityLevel (Math.min(aggregatedReliability.getReliabilityLevel(),RE.getReliabilityLevel())); } } if(this.composition == CompositionType.Discriminator){ for (Reliability RE : this.Reliabilities) { aggregatedReliability.setReliabilityLevel (1-(aggregatedReliability.getReliabilityLevel()*(1-RE.getReliabilityLevel()))); } } return aggregatedReliability; } private void initialize() { aggregatedReliability= new Reliability(); aggregatedReliability.setReliabilityLevel(1); } }