|
Abstract
We have developed a Petri-net based project
simulator for predicting development effort and residual fault
content. The simulator requires customization based on four parameters
to reflect project characteristics. In this paper, we propose
a new method for determining these parameters and validate the
effectiveness of the method in two industrial experiments.
1 Project Simulator
The software project simulator consists of
Project model and Process model. Project model specifies three
key components: activities, products and developers. Process
model defines a set of Activity models that are described by
an extended GSPN(Generalized Stochastic Petri-Net).
1.1 Activity Model. Figure 1(a) shows
an example of the description of the design activity. In the
extended GSPN, a token has three attributes: product size s,
the number of faults f and consumed workload w(We
define the term ``workload'' of an activity as the total time
needed for a developer who has the standard capability to complete
the activity[2].), as shown in Fig. 1(b).
Figure 1. Activity model
Transitions used here are timed transitions. The firing delay
of each transition is exponentially distributed and the average
firing delay of a transition is specified by a firing rate assigned
to it. In Fig. 1(a), the firing rate rcm of
transition t1 means that the average firing
delay of transition t1 is 1/rcm.
Each transition has a function (called an execution function)
to be evaluated on its firing, as shown in Fig. 1(c). The execution
of the function updates the attribute values of the token.
- 1.2 Customization using parameters. The
firing rates rcm, rth and
rwr of the transitions are formulated by functions
fcm, fth and fwr,
respectively[2]. Additionally, fault injections
are interpreted as the stochastic events whose occurrences depend
on the fault injection rate pin. In general,
pin is formulated by function fin.
In the previous study[2], we define concrete
functions for all of these formulas. Since, we consider only
design and coding activities in this paper, we present concrete
functions for rcm, rth, rwr
and pin as follows:
-
- (1) Communicating rate: rcm = Kcm
x (M2/(Sigma L) x R)
- (2) Thinking rate: rth = Kth
x ((Sigma L) / M) x M = Kth
x (Sigma L)
- (3) Writing rate: rwr = Kwr
x ((Sigma L) / M) x M = Kwr
x (Sigma L)
- (4) Fault injection rate: pin = Kin
x (M / (Sigma L)xRxD) x M
Here, M is the number of the developers engaged in
the activity, (Sigma L) is the sum of each developer's
experience level, R is the completion rate of the input
products, D is the number of the days from the current
date to the deadline of the activity. Before simulating a certain
project, we must customize the simulator by tuning up the values
of parameters so that each activity in the project can simulate
actual situation. But, it is generally very hard to determine
parameters, since these are tightly related each other. Therefore,
in the previous studies, we used heuristic values shown in Table
1.
|
Kcm |
Kth |
Kwr |
Kin |
|
Design |
0.10 |
0.20 |
0.20 |
15.5 |
|
Coding |
0.10 |
0.20 |
0.20 |
17.0 |
Table 1. Old values of parameters[2]
2 Proposed Algorithm
For customization of the simulator, we assume
that an actual project data, for which the data on the amount
of efforts and the number of faults are collected, is given.
Based on the lessons learned from the previous
studies, we consider the following algorithm with two phases:
Phase 1 is to determine Kcm, Kth
and Kwr, and Phase 2 is to determine Kin
with the values of Kcm, Kth
and Kwr obtained at Phase 1.
|
|
|
|
|
|
|
|
|
|
|
/* Phase 1 */ |
|
for i := 0.02 to 0.30 step 0.02 do
begin |
|
for j := 0.05 to 0.30 step 0.05 do
begin |
|
|
for k := 0.05 to 0.30 step 0.05 do
begin |
|
|
|
#Effort := (the amount of effort obtained |
|
|
|
|
by simulation under (Kcm,Kth,Kwr)=(i,j,k)); |
|
|
|
if (#Effort is within ±5% of Effortactual)
then |
|
|
|
|
Store (i,j,k) as a candidate; |
|
|
end; |
|
end; |
|
end; |
|
Choose the best candidate (Kcm,Kth,Kwr)best. |
|
/* Phase 2 */ |
|
lo := 1.0 ; hi := 100 ; |
|
while lo <= hi do begin |
|
Kin := (lo+hi)/2 |
|
#Fault := (the number of faults obtained |
|
|
by simulation under Kin and (Kcm,Kth,Kwr)best; |
|
if #Fault is within ±5% of Faultactual)
then break; |
|
if Faultactual <= #Fault)
then hi := Kin else lo:=Kin; |
|
end; |
Figure 2. Algorithm for determining parameters
The outline of the algorithm is shown in Fig.2. In Fig.2,
variables Effortactual and Faultactual
are the target values for the simulation and are obtained from
the actual project data.
3 Experimental Evaluation
In order to confirm the effectiveness of proposed
method, we have performed two experimental evaluations. In Experiments
1 and 2, we use two actual project data PR1
and PR2 offered from a certain company. Both
projects are the development of the embedded software, and for
almost the same application. The sizes of PR1
and PR2 are 12.3 Kstep and 9.6 Kstep, respectively.
In Experiment 1, we determine the value of
firing parameters from the data of PR1. Successively,
in Experiment 2, we execute the simulation of PR2
and evaluate the efforts and residual faults in PR2.
3.1 Experiment 1. By applying the data
of the project PR1 to the algorithm shown in
Fig.2, we determine the values of parameters for the design and
coding activities. The values of parameters obtained are shown
in Table 2.
|
Kcm |
Kth |
Kwr |
Kin |
|
Design |
0.05 |
0.26 |
0.22 |
18.6 |
|
Coding |
0.04 |
0.20 |
0.15 |
43.8 |
Table 2. New values of parameters
Comparing the values in Table 1 and Table 2, the values of
Kcm, Kth, Kwr
are almost the same. But the values of Kin
are quite different each other.
3.2 Experiment 2. In order to evaluate
the validity of the proposed algorithm, we estimate the number
of faults in another project PR2 by the project
simulator using the values of parameters in Table 2.
|
Effort
(person-days) |
Residual Faults
(# of faults) |
|
Actual project data |
41.7 |
17.0 |
|
New Estimation |
38.6 |
17.9 |
|
Old Estimation |
37.1 |
13.2 |
Table 3. Simulated result of PR2
Table 3 shows the simulated result of the project PR2(For
comparison, we also show the simulation result in [2]).
From Table 3, the simulated effort is 38.6 (person-days) and
the actual effort is 41.7 (person-days). The simulated value
of residual faults is 17.9 and the actual value is 17. Thus,
the new estimations of both effort and the residual faults for
PR2 are very close to the actual data. Furthermore,
with respect to estimation accuracy, the new estimation by the
proposed method is superior to the one in [2].
As a result, we can say that the values of parameters obtained
from the project PR2 are applicable to the
estimation of the software quality in another project PR2.
Unfortunately, we don't have any more generalized data yet.
4 Future Work
In this study, we have discussed only the
design and coding activities. Thus, determining the values of
parameters in the test and debug activities is an important future
research work. Additionally, we should contrast our approach
for simulation and prediction with other approach[1].
References
[1]
L. C. Briand, K. E. Emam, B. Freimut and O. Laitenberger: ``Quantitative
evaluation of capture-recapture models to control software inspections,''
Proc. 8th International Symposium on Software Reliability
Engineering, pp.234--244, 1997.
[2]
S. Kusumoto, O. Mizuno, Y. Hirayama, T. Kikuno, Y. Takagi and
K. Sakamoto: ``A new software project simulator based on generalized
stochastic petri-net,'' Proc. 19th International Conference
on Software Engineering, pp.293--302, 1997.
Author contact: Department of
Informatics and Mathematical Science, Osaka University., 1-3
Machikaneyama, Toyonaka-city, Osaka 560-8531, JAPAN. Phone +81-6-850-6567.
Fax: +81-6-850-6569. E-mail: o-mizuno@ics.es.osaka-u.ac.jp |