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 }
|