Configuration.java
001 /*
002  * Created on Sept 21, 2007
003  *
004  */
005 package com.x8ing.mc;
006 
007 import java.io.Serializable;
008 
009 /**
010  * Central holder for relevant properties that control the whole simulation.
011  
012  @author Patrick Heusser
013  */
014 
015 public class Configuration implements Serializable {
016 
017   private static final long serialVersionUID = 2375960255535864843L;
018 
019   /**
020    * G002.
021    * the theoretical value of the process. might be reduced by bugs that are discovered.
022    */
023   private double pannedProcessGain = 2100;
024 
025   /**
026    * P006.
027    * chance for a successful deployment of the software.
028    */
029   private int chanceDeployAndRealeaseDeploymentSuccess = 70;
030 
031   /**
032    * P004.
033    * change that the developer fixed a bug seccessfully.
034    */
035   private int chanceFixBugWithSuccess = 75;
036 
037   /**
038    * P003.
039    * chance that we discover a new bug in production.
040    */
041   private int chanceForFindingANewBugInProduction = 60;
042 
043   /**
044    * P002.
045    * chance that the production support team can resolve a failure.
046    */
047   private int chanceOperationDownResolvingWithSuccess = 90;
048 
049   /**
050    * chance that the production support team can resolve a failure.
051    */
052   private int chanceOperationHasOutage = 20;
053 
054   /**
055    * P005.
056    * chance for testing a bug sucessfully.
057    */
058   private int chanceTestingBugWithSuccess = 80;
059 
060   /**
061    * T003.
062    * defines how many business contexts are collected (due to huge memory consumption).
063    
064    @see MonteCarloControler#partialCollectedBusinessContextHistory
065    */
066   private int collectMaxNumberOfBusinessContext = 3;
067 
068   /**
069    * F005.
070    * cost for action: adding the bug to fix later buglist.
071    */
072   private double costActionAddBugToFixList = 170;
073 
074   /**
075    * F004.
076    * cost for action: analyze bug loss.
077    */
078   private double costActionAnalyzeCostLoss = 200;
079 
080   /**
081    * F003.
082    * cost for action: for production deployment.
083    */
084   private double costActionDeployAndRelease = 2400;
085 
086   /**
087    * F002.
088    * cost for action: document and finish the process.
089    */
090   private double costActionDocumentAndFinishProcess = 380;
091 
092   /**
093    * F001.
094    * cost for action: testing.
095    */
096   private double costActionTesting = 2500;
097 
098   /**
099    * G012.
100    * for gauss distribution: analyzeCostLossAction
101    */
102   private double distributionBugFixingCostMax = 500;
103 
104   /**
105    * G011.
106    * for gauss distribution: analyzeCostLossAction
107    */
108   private double distributionBugFixingCostMin = 100;
109 
110   /**
111    * G010.
112    * for gauss distribution: analyzeCostLossAction
113    */
114   private int distributionBugFixingCostStdDev = 2;
115 
116   /**
117    * T002.
118    * how many loops in MC will be executed.
119    */
120   private int numberCompleteSimulationLoops = 1000;
121 
122   /**
123    * One simulation loop should have this duration in days.
124    */
125   private int numberOfSimulationDays = 120;
126 
127   /**
128    * G004.
129    * outage is a constant cost factor per day
130    */
131   private double operationCostForOutagePerDay = 1000;
132 
133   /**
134    * G003.
135    * when it's worth to start with fixing of bugs. condition value.
136    */
137   private double processCostLossTriggerForBugFixing = 300;
138 
139   /**
140    * G001.
141    * This is our MAJOR number, and actually the cost caused by not nonconformity of the software. this means, how many
142    * bugs we delivered.
143    */
144   private double softwareInitialNoncCnformityCost = 500;
145 
146   public int getChanceDeployAndRealeaseDeploymentSuccess() {
147     return chanceDeployAndRealeaseDeploymentSuccess;
148   }
149 
150   public int getChanceFixBugWithSuccess() {
151     return chanceFixBugWithSuccess;
152   }
153 
154   public int getChanceForFindingANewBugInProduction() {
155     return chanceForFindingANewBugInProduction;
156   }
157 
158   public int getChanceOperationDownResolvingWithSuccess() {
159     return chanceOperationDownResolvingWithSuccess;
160   }
161 
162   public int getChanceOperationHasOutage() {
163     return chanceOperationHasOutage;
164   }
165 
166   public int getChanceTestingBugWithSuccess() {
167     return chanceTestingBugWithSuccess;
168   }
169 
170   public int getCollectMaxNumberOfBusinessContext() {
171     return collectMaxNumberOfBusinessContext;
172   }
173 
174   public double getCostActionAddBugToFixList() {
175     return costActionAddBugToFixList;
176   }
177 
178   public double getCostActionAnalyzeCostLoss() {
179     return costActionAnalyzeCostLoss;
180   }
181 
182   public double getCostActionDeployAndRelease() {
183     return costActionDeployAndRelease;
184   }
185 
186   public double getCostActionDocumentAndFinishProcess() {
187     return costActionDocumentAndFinishProcess;
188   }
189 
190   public double getCostActionTesting() {
191     return costActionTesting;
192   }
193 
194   public double getDistributionBugFixingCostMax() {
195     return distributionBugFixingCostMax;
196   }
197 
198   public double getDistributionBugFixingCostMin() {
199     return distributionBugFixingCostMin;
200   }
201 
202   public int getDistributionBugFixingCostStdDev() {
203     return distributionBugFixingCostStdDev;
204   }
205 
206   public int getNumberCompleteSimulationLoops() {
207     return numberCompleteSimulationLoops;
208   }
209 
210   public double getOperationCostForOutagePerDay() {
211     return operationCostForOutagePerDay;
212   }
213 
214   public double getProcessCostLossTriggerForBugFixing() {
215     return processCostLossTriggerForBugFixing;
216   }
217 
218   public double getSoftwareInitialNoncCnformityCost() {
219     return softwareInitialNoncCnformityCost;
220   }
221 
222   public void setChanceDeployAndRealeaseDeploymentSuccess(int chanceDeployAndRealeaseDeploymentSuccess) {
223     this.chanceDeployAndRealeaseDeploymentSuccess = chanceDeployAndRealeaseDeploymentSuccess;
224   }
225 
226   public void setChanceFixBugWithSuccess(int chanceFixBugWithSuccess) {
227     this.chanceFixBugWithSuccess = chanceFixBugWithSuccess;
228   }
229 
230   public void setChanceForFindingANewBugInProduction(int chanceForFindingANewBugInProduction) {
231     this.chanceForFindingANewBugInProduction = chanceForFindingANewBugInProduction;
232   }
233 
234   public void setChanceOperationDownResolvingWithSuccess(int chanceOperationDownResolvingWithSuccess) {
235     this.chanceOperationDownResolvingWithSuccess = chanceOperationDownResolvingWithSuccess;
236   }
237 
238   public void setChanceOperationHasOutage(int chanceOperationHasOutage) {
239     this.chanceOperationHasOutage = chanceOperationHasOutage;
240   }
241 
242   public void setChanceTestingBugWithSuccess(int chanceTestingBugWithSuccess) {
243     this.chanceTestingBugWithSuccess = chanceTestingBugWithSuccess;
244   }
245 
246   public void setCollectMaxNumberOfBusinessContext(int collectMaxNumberOfBusinessContext) {
247     this.collectMaxNumberOfBusinessContext = collectMaxNumberOfBusinessContext;
248   }
249 
250   public void setCostActionAddBugToFixList(double costActionAddBugToFixList) {
251     this.costActionAddBugToFixList = costActionAddBugToFixList;
252   }
253 
254   public void setCostActionAnalyzeCostLoss(double costActionAnalyzeCostLossAction) {
255     this.costActionAnalyzeCostLoss = costActionAnalyzeCostLossAction;
256   }
257 
258   public void setCostActionDeployAndRelease(double costActionDeployAndRelease) {
259     this.costActionDeployAndRelease = costActionDeployAndRelease;
260   }
261 
262   public void setCostActionDocumentAndFinishProcess(double costActionDocumentAndFinishProcess) {
263     this.costActionDocumentAndFinishProcess = costActionDocumentAndFinishProcess;
264   }
265 
266   public void setCostActionTesting(double costActionTesting) {
267     this.costActionTesting = costActionTesting;
268   }
269 
270   public void setDistributionBugFixingCostMax(double distributionBugFixingCostMax) {
271     this.distributionBugFixingCostMax = distributionBugFixingCostMax;
272   }
273 
274   public void setDistributionBugFixingCostMin(double distributionBugFixingCostMin) {
275     this.distributionBugFixingCostMin = distributionBugFixingCostMin;
276   }
277 
278   public void setDistributionBugFixingCostStdDev(int distributionBugFixingCostStdDev) {
279     this.distributionBugFixingCostStdDev = distributionBugFixingCostStdDev;
280   }
281 
282   public void setNumberCompleteSimulationLoops(int numberCompleteSimulationLoops) {
283     this.numberCompleteSimulationLoops = numberCompleteSimulationLoops;
284   }
285 
286   public void setOperationCostForOutagePerDay(double operationCostForOutagePerDay) {
287     this.operationCostForOutagePerDay = operationCostForOutagePerDay;
288   }
289 
290   public void setProcessCostLossTriggerForBugFixing(double processCostLossTriggerForBugFixing) {
291     this.processCostLossTriggerForBugFixing = processCostLossTriggerForBugFixing;
292   }
293 
294   public void setSoftwareInitialNoncCnformityCost(double softwareInitialNoncCnformityCost) {
295     this.softwareInitialNoncCnformityCost = softwareInitialNoncCnformityCost;
296   }
297 
298   public int getNumberOfSimulationDays() {
299     return numberOfSimulationDays;
300   }
301 
302   public void setNumberOfSimulationDays(int numberOfSimulationDays) {
303     this.numberOfSimulationDays = numberOfSimulationDays;
304   }
305 
306   public double getPannedProcessGain() {
307     return pannedProcessGain;
308   }
309 
310   public void setPannedProcessGain(double pannedProcessGain) {
311     this.pannedProcessGain = pannedProcessGain;
312   }
313 
314   public String toString() {
315 
316     StringBuffer sb = new StringBuffer();
317 
318     sb.append(" pannedProcessGain=");
319     sb.append(pannedProcessGain);
320 
321     sb.append(" chanceDeployAndRealeaseDeploymentSuccess=");
322     sb.append(chanceDeployAndRealeaseDeploymentSuccess);
323 
324     sb.append(" chanceFixBugWithSuccess=");
325     sb.append(chanceFixBugWithSuccess);
326 
327     sb.append(" chanceForFindingANewBugInProduction=");
328     sb.append(chanceForFindingANewBugInProduction);
329 
330     sb.append(" chanceOperationHasOutage=");
331     sb.append(chanceOperationHasOutage);
332 
333     sb.append(" chanceTestingBugWithSuccess=");
334     sb.append(chanceTestingBugWithSuccess);
335 
336     sb.append(" collectMaxNumberOfBusinessContext=");
337     sb.append(collectMaxNumberOfBusinessContext);
338 
339     sb.append(" costActionAddBugToFixList=");
340     sb.append(costActionAddBugToFixList);
341 
342     sb.append(" costActionAnalyzeCostLoss=");
343     sb.append(costActionAnalyzeCostLoss);
344 
345     sb.append(" costActionDeployAndRelease=");
346     sb.append(costActionDeployAndRelease);
347 
348     sb.append(" costActionDocumentAndFinishProcess=");
349     sb.append(costActionDocumentAndFinishProcess);
350 
351     sb.append(" costActionTesting=");
352     sb.append(costActionTesting);
353 
354     sb.append(" distributionBugFixingCostMax=");
355     sb.append(distributionBugFixingCostMax);
356 
357     sb.append(" distributionBugFixingCostMin=");
358     sb.append(distributionBugFixingCostMin);
359 
360     sb.append(" distributionBugFixingCostStdDev=");
361     sb.append(distributionBugFixingCostStdDev);
362 
363     sb.append(" numberCompleteSimulationLoops=");
364     sb.append(numberCompleteSimulationLoops);
365 
366     sb.append(" numberOfSimulationDays=");
367     sb.append(numberOfSimulationDays);
368 
369     sb.append(" operationCostForOutagePerDay=");
370     sb.append(operationCostForOutagePerDay);
371 
372     sb.append(" processCostLossTriggerForBugFixing=");
373     sb.append(processCostLossTriggerForBugFixing);
374 
375     sb.append(" softwareInitialNoncCnformityCost=");
376     sb.append(softwareInitialNoncCnformityCost);
377 
378     return sb.toString();
379 
380   }
381 
382 }