Newer
Older
Discussion_Papers / Papers / 1999 / 99-20 / GrayPap.ps
%!PS-Adobe-2.0
%%Creator: dvips 5.83 (MiKTeX 1.11d) Copyright 1998 Radical Eye Software
%%Title: gray.dvi
%%CreationDate: Wed Apr 07 14:35:45 1999
%%Pages: 5
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%DocumentFonts: Times-Bold Times-Roman Times-Italic Helvetica-Bold
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips gray.dvi -o gray.ps
%DVIPSParameters: dpi=600
%DVIPSSource:  TeX output 1999.04.07:1435
%%BeginProcSet: tex.pro
%!
/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
{}B /RV statusdict begin /product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{dup length product length le{dup length product
exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}
ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}
imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false
RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round
exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto
rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{
-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B
/w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}
B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B
/bos{/SS save N}B /eos{SS restore}B end

%%EndProcSet
%%BeginProcSet: pstricks.pro
%!
% PostScript prologue for pstricks.tex.
% Created 1994/6/23. Source file was pstricks.doc
% Version 0.93a, 93/03/12.
% For use with Rokicki's dvips.
/tx@Dict 200 dict def tx@Dict begin
/ADict 25 dict def
/CM { matrix currentmatrix } bind def
/SLW /setlinewidth load def
/CLW /currentlinewidth load def
/CP /currentpoint load def
/ED { exch def } bind def
/L /lineto load def
/T /translate load def
/TMatrix { } def
/RAngle { 0 } def
/Atan { /atan load stopped { pop pop 0 } if } def
/Div { dup 0 eq { pop } { div } ifelse } def
/NET { neg exch neg exch T } def
/Pyth { dup mul exch dup mul add sqrt } def
/PtoC { 2 copy cos mul 3 1 roll sin mul } def
/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
def
/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
/pathforall load stopped { pop pop pop pop } if z } def
/STP { .996264 dup scale } def
/STV { SDict begin normalscale end STP  } def
/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
0 } ifelse setdash stroke } def
/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
setlinecap stroke } def
/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
def
/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
exch 3 index sub exch Atan rotate newpath } def
/EndArrow { @mtrx setmatrix CP grestore end } def
/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
grestore } def
/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
CLW moveto } def
/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
CLW moveto } def
/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
def
/SD { 0 360 arc fill } def
/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
load } if ] cvx newpath 3 1 roll T exec } def
/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
cvi def } def
/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
ifelse { pop } repeat a } def
/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
and { pop pop /n n 1 sub def } if } def
/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
Lineto pop pop closepath } ifelse } def
/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
setmatrix } def
%  Modification Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr> - 15 Jan. 1997
% /Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
% pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
% div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
% d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
% setmatrix } def
/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
setmatrix } def
/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
def } def
/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
def } def
/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
m mul neg def } def
/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
def
/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
/NC { CC x1 y1 x2 y2 x y curveto } def
/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
/NAC { x2 y2 x y curveto CC x1 y1 } def
/EAC { x2 y2 x y ArrowB curveto pop pop } def
/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
n { NC } repeat EOC } ifelse } def
/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
repeat closepath pop pop } ifelse } def
/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
def
/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
rotate matrix concatmatrix exch findfont exch makefont setfont } def
/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
x1 y1 lineto closepath } def
/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
ifelse } def
/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
pop pop Rect } { OvalFrame } ifelse } def
/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
ifelse } def
/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
def
/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
y0 x0 2 mul x1 sub y1 ] def } def
/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
w add def } repeat grestore gsave n 0 gt { 1 setlinecap [ 0 dx n div ]
dy n div 2 div setdash } { 2 setlinecap } ifelse /i y1 def /f x1 dx mul
n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
exch t L stroke /i i h add def } repeat grestore } def
/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
mul neg d } def
/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
/Rot { CP CP translate 3 -1 roll neg rotate NET  } def
/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
dup a add ] cvx def } def
/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
cvx def } def
/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
h1 abs h sub dup s mul abs } ifelse } def
/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
exch } def
/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
} if } ifelse } def
/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
/IfVisible true def } def
end

%%EndProcSet
%%BeginProcSet: pst-dots.pro
%!PS-Adobe-2.0
%%Title: Dot Font for PSTricks
%%Creator: Timothy Van Zandt <tvz@Princeton.EDU>
%%Creation Date: May 7, 1993
10 dict dup begin
  /FontType 3 def
  /FontMatrix [ .001 0 0 .001 0 0 ] def
  /FontBBox [ 0 0 0 0 ] def
  /Encoding 256 array def
  0 1 255 { Encoding exch /.notdef put } for
  Encoding
    dup (b) 0 get /Bullet put
    dup (c) 0 get /Circle put
    dup (C) 0 get /BoldCircle put
    dup (u) 0 get /SolidTriangle put
    dup (t) 0 get /Triangle put
    dup (T) 0 get /BoldTriangle put
    dup (r) 0 get /SolidSquare put
    dup (s) 0 get /Square put
    dup (S) 0 get /BoldSquare put
    dup (q) 0 get /SolidPentagon put
    dup (p) 0 get /Pentagon put
    (P) 0 get /BoldPentagon put
  /Metrics 13 dict def
  Metrics begin
    /Bullet 1000 def
    /Circle 1000 def
    /BoldCircle 1000 def
    /SolidTriangle 1344 def
    /Triangle 1344 def
    /BoldTriangle 1344 def
    /SolidSquare 886 def
    /Square 886 def
    /BoldSquare 886 def
    /SolidPentagon 1093.2 def
    /Pentagon 1093.2 def
    /BoldPentagon 1093.2 def
    /.notdef 0 def
  end
  /BBoxes 13 dict def
  BBoxes begin
    /Circle { -550 -550 550 550 } def
    /BoldCircle /Circle load def
    /Bullet /Circle load def
    /Triangle { -571.5 -330 571.5 660 } def
    /BoldTriangle /Triangle load def
    /SolidTriangle /Triangle load def
    /Square { -450 -450 450 450 } def
    /BoldSquare /Square load def
    /SolidSquare /Square load def
    /Pentagon { -546.6 -465 546.6 574.7 } def
    /BoldPentagon /Pentagon load def
    /SolidPentagon /Pentagon load def
    /.notdef { 0 0 0 0 } def
  end
  /CharProcs 20 dict def
  CharProcs begin
    /Adjust {
      2 copy dtransform floor .5 add exch floor .5 add exch idtransform
      3 -1 roll div 3 1 roll exch div exch scale
    } def
    /CirclePath { 0 0 500 0 360 arc closepath } def
    /Bullet { 500 500 Adjust CirclePath fill } def
    /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
    /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
    /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
    /TrianglePath {
      0  660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
    } def
    /SolidTriangle { TrianglePath fill } def
    /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
    /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
    /SquarePath {
      -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
      closepath
    } def
    /SolidSquare { SquarePath fill } def
    /Square { SquarePath .89 .89 scale SquarePath eofill } def
    /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
    /PentagonPath {
      -337.8 -465   moveto
       337.8 -465   lineto
       546.6  177.6 lineto
         0    574.7 lineto
      -546.6  177.6 lineto
      closepath
    } def
    /SolidPentagon { PentagonPath fill } def
    /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
    /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
    /.notdef { } def
  end
  /BuildGlyph {
    exch
    begin
      Metrics 1 index get exec 0
      BBoxes 3 index get exec
      setcachedevice
      CharProcs begin load exec end
    end
  } def
  /BuildChar {
    1 index /Encoding get exch get
    1 index /BuildGlyph get exec
  } bind def
end
/PSTricksDotFont exch definefont pop

%%EndProcSet
%%BeginProcSet: pst-node.pro
%!
% PostScript prologue for pst-node.tex.
% Created 1994/6/7. Source file was pst-node.doc
% Version 0.93a/b-97 patch 1, 97/05/09.
% For use with Rokicki's dvips.
/tx@NodeDict 400 dict def tx@NodeDict begin
tx@Dict begin /T /translate load def end
/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end
grestore } def
/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
} def
/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
Sin mul } def } def
/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
dup Sin mul Cos Div } ifelse } def
/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
/u ED /NodePos { GetRnodePos } def } def
/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
Cos mul exch Sin mul } def
/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
} ifelse } def
/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
sin def /NodePos { TriNodePos } def } def
/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
hh mul Atan dup cos ww mul exch sin hh mul } def
/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
{ 0 Dist Sin mul } ifelse } ifelse Do } def
/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
XYPos } ifelse } def
/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
roll sin mul sub exch } ifelse } def
/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
AddOffset yA add /yA1 ED xA add /xA1 ED } def
/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
AddOffset yB add /yB1 ED xB add /xB1 ED } def
/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
} ifelse } def
/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
} ifelse } def
/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
/NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b
known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
} repeat LPutLine cleartomark } def
/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
} def
/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
/NAngle yyB yyA sub xxB xxA sub Atan def } def
/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd  } def
/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd 
} def
/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
} def
/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
/NAngle yyB yyA sub xxB xxA sub Atan def } def
/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd  } def
/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
VPosEnd  } def
/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
def grestore exec /LPutVar /SaveLPutVar load def } def
/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
LPutVar VPutLine } def LPutVar } def
/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
end } def
/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos {
LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
ifelse } def
/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict
begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1
yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
VPutLines } def } def
/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict
begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
VPutLines } def } def
/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end
/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
def
/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin
false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
def
/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false
Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
VPutLines } def } def
% DG/SR modification begin - 9 May 1997
%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r
%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r
r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
% DG/SR modification end
} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add
AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r
Div def /y ED /x ED } def
/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
tx@Dict begin false Polygon end } def
/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
LPutPos } def } def
/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin
/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg
exch X sub neg exch moveto setmatrix CP grestore } def
/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
def } ifelse LPutCoor  } def
/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
def
/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
def
end

%%EndProcSet
%%BeginProcSet: 8r.enc
% @@psencodingfile@{
%   author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
%   version = "0.6",
%   date = "22 June 1996",
%   filename = "8r.enc",
%   email = "kb@@mail.tug.org",
%   address = "135 Center Hill Rd. // Plymouth, MA 02360",
%   codetable = "ISO/ASCII",
%   checksum = "119     662    4424",
%   docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX."
% @}
% 
% Idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
% 
% Character code assignments were made as follows:
% 
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
% 
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
% 
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% 
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
% 
% (5) hyphen appears twice for compatibility with both ASCII and Windows.
% 
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
  /.notdef /dotaccent /fi /fl
  /fraction /hungarumlaut /Lslash /lslash
  /ogonek /ring /.notdef
  /breve /minus /.notdef 
% These are the only two remaining unencoded characters, so may as
% well include them.
  /Zcaron /zcaron 
% 0x10
 /caron /dotlessi 
% (unusual TeX characters available in, e.g., Lucida Bright)
 /dotlessj /ff /ffi /ffl 
 /.notdef /.notdef /.notdef /.notdef
 /.notdef /.notdef /.notdef /.notdef
 % very contentious; it's so painful not having quoteleft and quoteright
 % at 96 and 145 that we move the things normally found there down to here.
 /grave /quotesingle 
% 0x20 (ASCII begins)
 /space /exclam /quotedbl /numbersign
 /dollar /percent /ampersand /quoteright
 /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
% 0x30
 /zero /one /two /three /four /five /six /seven
 /eight /nine /colon /semicolon /less /equal /greater /question
% 0x40
 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
% 0x50
 /P /Q /R /S /T /U /V /W
 /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
% 0x60
 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
% 0x70
 /p /q /r /s /t /u /v /w
 /x /y /z /braceleft /bar /braceright /asciitilde
 /.notdef % rubout; ASCII ends
% 0x80
 /.notdef /.notdef /quotesinglbase /florin
 /quotedblbase /ellipsis /dagger /daggerdbl
 /circumflex /perthousand /Scaron /guilsinglleft
 /OE /.notdef /.notdef /.notdef
% 0x90
 /.notdef /.notdef /.notdef /quotedblleft
 /quotedblright /bullet /endash /emdash
 /tilde /trademark /scaron /guilsinglright
 /oe /.notdef /.notdef /Ydieresis
% 0xA0
 /.notdef % nobreakspace
 /exclamdown /cent /sterling
 /currency /yen /brokenbar /section
 /dieresis /copyright /ordfeminine /guillemotleft
 /logicalnot
 /hyphen % Y&Y (also at 45); Windows' softhyphen
 /registered
 /macron
% 0xD0
 /degree /plusminus /twosuperior /threesuperior
 /acute /mu /paragraph /periodcentered
 /cedilla /onesuperior /ordmasculine /guillemotright
 /onequarter /onehalf /threequarters /questiondown
% 0xC0
 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
 /Egrave /Eacute /Ecircumflex /Edieresis
 /Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
 /Eth /Ntilde /Ograve /Oacute
 /Ocircumflex /Otilde /Odieresis /multiply
 /Oslash /Ugrave /Uacute /Ucircumflex
 /Udieresis /Yacute /Thorn /germandbls
% 0xE0
 /agrave /aacute /acircumflex /atilde
 /adieresis /aring /ae /ccedilla
 /egrave /eacute /ecircumflex /edieresis
 /igrave /iacute /icircumflex /idieresis
% 0xF0
 /eth /ntilde /ograve /oacute
 /ocircumflex /otilde /odieresis /divide
 /oslash /ugrave /uacute /ucircumflex
 /udieresis /yacute /thorn /ydieresis
] def

%%EndProcSet
%%BeginProcSet: texps.pro
%!
TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2
index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict
end definefont 3 -1 roll makefont /setfont cvx]cvx def}def /ObliqueSlant
{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1
roll mul exch}def /ReEncodeFont{/Encoding exch def}def end

%%EndProcSet
%%BeginProcSet: special.pro
%!
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
clippath mark{transform{itransform moveto}}{transform{itransform lineto}
}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale true def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end

%%EndProcSet
%%BeginProcSet: color.pro
%!
TeXDict begin /setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse /TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def /TeXcolorgrey{setgray}def /TeXcolorgray{
setgray}def /TeXcolorhsb{sethsbcolor}def /currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse /DC{exch dup userdict exch
known{pop pop}{X}ifelse}B /GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC /Goldenrod{0 0.10 0.84 0 setcmykcolor}
DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC /Apricot{0 0.32 0.52 0
setcmykcolor}DC /Peach{0 0.50 0.70 0 setcmykcolor}DC /Melon{0 0.46 0.50
0 setcmykcolor}DC /YellowOrange{0 0.42 1 0 setcmykcolor}DC /Orange{0
0.61 0.87 0 setcmykcolor}DC /BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC /RedOrange{0 0.77 0.87 0
setcmykcolor}DC /Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC /Maroon{0
0.87 0.68 0.32 setcmykcolor}DC /BrickRed{0 0.89 0.94 0.28 setcmykcolor}
DC /Red{0 1 1 0 setcmykcolor}DC /OrangeRed{0 1 0.50 0 setcmykcolor}DC
/RubineRed{0 1 0.13 0 setcmykcolor}DC /WildStrawberry{0 0.96 0.39 0
setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC /CarnationPink{0
0.63 0 0 setcmykcolor}DC /Magenta{0 1 0 0 setcmykcolor}DC /VioletRed{0
0.81 0 0 setcmykcolor}DC /Rhodamine{0 0.82 0 0 setcmykcolor}DC /Mulberry
{0.34 0.90 0 0.02 setcmykcolor}DC /RedViolet{0.07 0.90 0 0.34
setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC /Lavender{0
0.48 0 0 setcmykcolor}DC /Thistle{0.12 0.59 0 0 setcmykcolor}DC /Orchid{
0.32 0.64 0 0 setcmykcolor}DC /DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}
DC /Purple{0.45 0.86 0 0 setcmykcolor}DC /Plum{0.50 1 0 0 setcmykcolor}
DC /Violet{0.79 0.88 0 0 setcmykcolor}DC /RoyalPurple{0.75 0.90 0 0
setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC /Periwinkle
{0.57 0.55 0 0 setcmykcolor}DC /CadetBlue{0.62 0.57 0.23 0 setcmykcolor}
DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC /MidnightBlue{0.98 0.13
0 0.43 setcmykcolor}DC /NavyBlue{0.94 0.54 0 0 setcmykcolor}DC
/RoyalBlue{1 0.50 0 0 setcmykcolor}DC /Blue{1 1 0 0 setcmykcolor}DC
/Cerulean{0.94 0.11 0 0 setcmykcolor}DC /Cyan{1 0 0 0 setcmykcolor}DC
/ProcessBlue{0.96 0 0 0 setcmykcolor}DC /SkyBlue{0.62 0 0.12 0
setcmykcolor}DC /Turquoise{0.85 0 0.20 0 setcmykcolor}DC /TealBlue{0.86
0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC
/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC /Emerald{1 0 0.50 0
setcmykcolor}DC /JungleGreen{0.99 0 0.52 0 setcmykcolor}DC /SeaGreen{
0.69 0 0.50 0 setcmykcolor}DC /Green{1 0 1 0 setcmykcolor}DC
/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59
0.25 setcmykcolor}DC /LimeGreen{0.50 0 1 0 setcmykcolor}DC /YellowGreen{
0.44 0 0.74 0 setcmykcolor}DC /SpringGreen{0.26 0 0.76 0 setcmykcolor}
DC /OliveGreen{0.64 0 0.95 0.40 setcmykcolor}DC /RawSienna{0 0.72 1 0.45
setcmykcolor}DC /Sepia{0 0.83 1 0.70 setcmykcolor}DC /Brown{0 0.81 1
0.60 setcmykcolor}DC /Tan{0.14 0.42 0.56 0 setcmykcolor}DC /Gray{0 0 0
0.50 setcmykcolor}DC /Black{0 0 0 1 setcmykcolor}DC /White{0 0 0 0
setcmykcolor}DC end

%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600
(d:\Users\argray\work\publications\Papers\1999\Fuzzy logic for management (NAFIPS)/gray.dvi)
@start /Fa 133[29 33 1[50 1[37 21 29 29 1[37 37 37 54
21 2[21 37 37 21 33 37 33 1[37 12[42 37 46 1[46 1[50
62 2[33 25 2[46 46 1[50 1[46 6[25 37 1[37 5[37 3[25 5[25
58 38[{TeXBase1Encoding ReEncodeFont }39 74.7198 /Times-Italic
rf /Fb 105[37 27[33 37 37 54 37 37 21 29 25 37 37 37
37 58 21 37 1[21 37 37 25 33 37 33 37 33 3[25 1[25 1[54
1[71 54 1[46 42 50 1[42 54 54 66 46 54 29 25 54 54 42
46 54 50 1[54 6[21 37 37 37 37 37 37 37 37 37 2[19 25
19 4[25 35[42 3[{TeXBase1Encoding ReEncodeFont }64 74.7198
/Times-Roman rf
%DVIPSBitmapFont: Fc cmsy10 10 1
/Fc 1 121 df<007E0001FFC007C1E00F00701E00383E001C7C000C7C001E7C007EF800
7EF8007EF8007EF8003CF80000F80000F800007C00007C00007C00003E00001E00000F00
0007800003C00000F00000FC0003FF000F87801F01E03E01F03E00F87C007C7C007CFC00
3EF8003EF8001FF8001FF8001FF8001FF8001FF8001F7C001F7C003F3E003E3E003E1F00
7C0F807C0780F801E1F000FFC0003F00000F000003C00001E00000F000007800007C0000
3E00003E00003E00001F00001F00001F3C001F7E001F7E001F7E001F7E003E78003E3000
3E38007C1C00780E00F00783E003FF80007E00184C7ABA25>120
D E
%EndDVIPSBitmapFont
/Fd 134[42 3[46 28 32 2[46 42 46 1[23 2[23 46 42 1[37
46 37 1[42 12[55 3[51 65 1[78 3[32 4[60 60 1[60 65[{
TeXBase1Encoding ReEncodeFont }23 83.022 /Times-Bold
rf /Fe 82[28 51[46 1[65 46 51 28 46 32 1[51 51 51 74
23 2[23 51 51 28 46 51 46 51 46 12[51 55 12[51 1[60 17[46
46 2[23 46[{TeXBase1Encoding ReEncodeFont }29 83.022
/Helvetica-Bold rf /Ff 82[30 50[41 46 3[51 30 36 41 51
51 46 51 76 25 2[25 1[46 1[41 51 41 51 46 12[61 1[66
2[71 1[86 8[66 66 1[66 11[46 46 46 46 46 2[23 46[{
TeXBase1Encoding ReEncodeFont }33 91.3242 /Times-Bold
rf /Fg 107[37 37 24[37 42 42 60 42 42 23 32 28 42 42
42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 3[28 1[28
51 2[78 60 60 51 46 55 1[46 60 60 74 3[28 60 60 46 51
60 55 55 60 3[47 1[23 1[42 42 42 42 42 42 42 42 42 42
1[21 28 21 2[28 28 28 1[69 33[46 46 2[{TeXBase1Encoding ReEncodeFont }
71 83.022 /Times-Roman rf /Fh 133[32 37 37 55 37 42 23
32 32 42 42 42 42 60 23 37 23 23 42 42 23 37 42 37 42
42 12[46 42 51 2[60 5[28 3[51 60 55 10[42 42 42 42 42
42 42 42 42 1[21 28 21 4[28 36[42 2[{TeXBase1Encoding ReEncodeFont }48
83.022 /Times-Italic rf /Fi 133[44 50 1[72 50 55 33 39
44 1[55 50 55 83 28 2[28 55 50 33 44 55 44 55 50 12[66
1[72 8[39 2[61 2[72 1[72 11[50 50 50 50 50 2[25 33 45[{
TeXBase1Encoding ReEncodeFont }35 99.6264 /Times-Bold
rf
%DVIPSBitmapFont: Fj cmsy10 12 2
/Fj 2 104 df<0000000FE0000000FFE0000003FC0000000FE00000003FC00000007F80
000000FF00000000FE00000001FC00000001FC00000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000007F000
000007F00000000FE00000001FE00000003FC00000007F80000000FE00000007F8000000
FFE0000000FFE000000007F800000000FE000000007F800000003FC00000001FE0000000
0FE000000007F000000007F000000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000001FC00000001FC000000
00FE00000000FF000000007F800000003FC00000000FE000000003FC00000000FFE00000
000FE0236479CA32>102 D<FE00000000FFE000000007F800000000FE000000007F8000
00003FC00000001FE00000000FE000000007F000000007F000000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000001FC00000001FC00000000FE00000000FF000000007F800000003FC00000000FE000
000003FC00000000FFE0000000FFE0000003FC0000000FE00000003FC00000007F800000
00FF00000000FE00000001FC00000001FC00000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F800000003F800000007F0000000
07F00000000FE00000001FE00000003FC00000007F80000000FE00000007F8000000FFE0
000000FE00000000236479CA32>I E
%EndDVIPSBitmapFont
/Fk 133[44 50 50 72 50 50 28 39 33 1[50 50 50 78 28 2[28
50 50 33 44 50 44 1[44 6[61 4[72 1[55 66 1[55 72 72 89
3[33 1[72 2[72 1[66 72 92 9[50 50 6[25 1[25 44[{
TeXBase1Encoding ReEncodeFont }40 99.6264 /Times-Roman
rf /Fl 133[53 60 1[86 60 66 40 47 53 1[66 60 66 100 33
2[33 66 60 40 53 66 53 1[60 13[66 5[113 80 5[73 1[86
86 21[40 45[{TeXBase1Encoding ReEncodeFont }28 119.552
/Times-Bold rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4

%%EndSetup
%%Page: 1 1
1 0 bop Black Black Black Black Black -178 374 a Fl(Fuzzy)30
b(Logic)g(f)m(or)f(Softwar)n(e)h(Metric)g(Models)g(thr)n(oughout)g(the)
h(De)n(v)o(elopment)f(Life-Cycle)996 690 y Fk(Andre)n(w)24
b(R.)i(Gray)f(and)f(Stephen)h(G.)g(MacDonell)1173 806
y(Department)f(of)h(Information)f(Science)750 922 y(Uni)n(v)o(ersity)f
(of)i(Otago,)f(PO)h(Box)g(56,)g(Dunedin,)f(Ne)n(w)g(Zealand)974
1039 y Fj(f)p Fk(agray)p Fj(gf)p Fk(ste)n(v)o(emac)p
Fj(g)p Fk(@infoscience.otago.ac.nz)p Black 617 1389 a
Fi(Abstract)-83 1588 y Fh(One)j(pr)l(oblem)f(faced)g(by)g(mana)o(g)o
(er)o(s)g(who)h(ar)m(e)g(using)f(pr)l(oject)-182 1688
y(mana)o(g)o(ement)f(models)h(is)i(the)f(elicitation)f(of)h(numerical)g
(inputs.)-182 1788 y(Obtaining)i(these)i(with)g(any)g(de)m(gr)m(ee)e
(of)i(con\002dence)e(early)i(in)g(a)-182 1887 y(pr)l(oject)d(is)i(not)e
(always)h(feasible)o(.)50 b(Related)28 b(to)h(this)g(dif)o(\002culty)e
(is)-182 1987 y(the)e(risk)i(of)f(pr)m(ecisely)f(speci\002ed)g(outputs)
g(fr)l(om)h(models)f(leading)-182 2086 y(to)19 b(o)o(ver)m(commitment.)
24 b(These)19 b(pr)l(oblems)h(can)e(be)i(seen)f(as)h(the)f(col-)-182
2186 y(lective)f(failur)m(e)g(of)g(softwar)m(e)g(measur)m(ements)g(to)g
(r)m(epr)m(esent)g(the)g(in-)-182 2286 y(her)m(ent)25
b(uncertainties)h(in)g(mana)o(g)o(er)o(s')f(knowledg)o(e)g(of)i(the)f
(de)o(vel-)-182 2385 y(opment)e(pr)l(oducts,)j(r)m(esour)m(ces,)g(and)e
(pr)l(ocesses.)42 b(It)26 b(is)h(pr)l(oposed)-182 2485
y(that)i(fuzzy)h(lo)o(gic)g(tec)o(hniques)e(can)h(help)h(to)g(o)o(ver)m
(come)f(some)h(of)-182 2585 y(these)e(dif)o(\002culties)g(by)g(r)m(epr)
m(esenting)g(the)h(impr)m(ecision)f(in)g(inputs)-182
2684 y(and)20 b(outputs,)h(as)h(well)h(as)f(pr)l(o)o(viding)e(a)i(mor)m
(e)g(e)n(xpert-knowledg)o(e)-182 2784 y(based)k(appr)l(oac)o(h)f(to)i
(model)g(b)n(uilding)o(.)44 b(The)28 b(use)f(of)g(fuzzy)h(lo)o(gic)-182
2883 y(for)k(pr)l(oject)g(mana)o(g)o(ement)e(howe)o(ver)h(should)g(not)
h(be)g(the)g(same)-182 2983 y(thr)l(oughout)c(the)i(de)o(velopment)e
(life)j(cycle)o(.)54 b(Dif)o(fer)m(ent)30 b(le)o(vels)h(of)-182
3083 y(available)22 b(information)h(and)g(desir)m(ed)h(pr)m(ecision)g
(sug)o(g)o(est)g(that)g(it)-182 3182 y(can)d(be)h(used)g(dif)o(fer)m
(ently)f(depending)f(on)h(the)h(curr)m(ent)g(phase)o(,)g(al-)-182
3282 y(though)c(a)i(single)g(model)g(can)g(be)g(used)g(for)g
(consistency)-5 b(.)-182 3614 y Fi(1)o(.)25 b(Intr)n(oduction)-83
3831 y Fg(Fuzzy)20 b(logic)f(modeling)f(techniques)h(ha)n(v)o(e)g(been)
g(sho)n(wn)g(to)h(be)-182 3930 y(a)35 b(useful)g(addition)f(to)h(the)h
(e)o(xisting)e(statistical)j(and)d(machine-)-182 4030
y(learning)e(techniques)h(used)g(for)h(modeling)e(softw)o(are)h(de)n(v)
o(elop-)-182 4129 y(ment)27 b([3)o(].)46 b(Aside)28 b(from)e
(theoretical)g(reasons)h(preferring)e(fuzzy)-182 4229
y(logic)19 b(in)h(some)g(circumstances,)e(se)n(v)o(eral)i(papers)f(ha)n
(v)o(e)g(sho)n(wn)g(f)o(a-)-182 4329 y(v)n(orable)g(empirical)g
(comparisons)g(supporting)f(its)k(usefulness)d(by)-182
4428 y(using)30 b(softw)o(are)g(metric)g(data)g(sets)i(to)e(compare)f
(the)i(predicti)n(v)o(e)-182 4528 y(accurac)o(y)21 b(of)h(v)n(arious)g
(techniques)f([2)o(,)i(5,)g(7)o(].)33 b(In)22 b(addition,)g(fuzzy)-182
4628 y(logic)h(modeling)f(softw)o(are)h(has)h(been)f(especially)g(de)n
(v)o(eloped)f(for)-182 4727 y(supporting)c(the)i(project)f(estimation)h
(process)f([6,)h(7].)-83 4827 y(A)f(recent)f(surv)o(e)o(y)g(of)g(Ne)n
(w)h(Zealand)e(project)h(managers)g(found)-182 4926 y(them)e(to)i(ha)n
(v)o(e)e(considerable)f(interest)j(in)f(using)g(fuzzy)f(logic)g(tech-)
-182 5026 y(niques)h([7].)24 b(This)19 b(surv)o(e)o(y)e(found)g(that)h
(31)h(out)f(of)g(the)h(44)f(respond-)-182 5126 y(ing)23
b(information)f(system)j(managers)d(had)i(heard)f(of)h(fuzzy)f(logic)
-182 5225 y(\(70.5\045\).)36 b(F)o(or)24 b(the)g(36)g(managers)f(who)h
(were)g(acti)n(v)o(ely)g(in)m(v)n(olv)o(ed)-182 5325
y(in)33 b(managing)e(de)n(v)o(elopment)f(projects,)35
b(11)d(\(31\045\))g(were)h(inter)n(-)1974 1389 y(ested)24
b(in)f(using)h(fuzzy)e(logic)h(techniques,)g(23)h(\(64\045\))e(stated)i
(that)1974 1489 y(the)o(y)g(w)o(ould)f(need)h(to)h(kno)n(w)e(more)h
(about)f(the)i(technique)e(before)1974 1588 y(making)30
b(a)h(decision,)i(and)e(only)g(tw)o(o)g(\(6\045\))g(did)g(not)g(think)f
(that)1974 1688 y(fuzzy)c(logic)h(techniques)f(w)o(ould)g(be)h(useful)g
(to)g(them)g(as)h(part)e(of)1974 1787 y(their)20 b(management)e(acti)n
(vities.)2073 1887 y(In)h(addition)e(to)i(assessing)g(the)g(managers')e
(perceptions)g(of)h(the)1974 1987 y(w)o(orth)34 b(of)g(fuzzy)f(logic,)k
(the)d(surv)o(e)o(y)f(also)i(in)m(v)o(estigated)d(which)1974
2086 y(adv)n(antages)c(of)h(fuzzy)g(logic)g(were)g(felt)h(to)g(be)f
(important.)52 b(The)1974 2186 y(three)27 b(choices)f(of)h(being)f
(able)i(to)f(use)g(e)o(xpert)f(kno)n(wledge,)h(ha)n(v-)1974
2286 y(ing)22 b(linguistic)f(inputs,)h(and)f(producing)f(linguistic)h
(outputs)g(were)1974 2385 y(all)g(rated)e(roughly)f(the)i(same)h
(\(with)f(19,)f(19,)h(and)f(21)h(respondents)1974 2485
y(citing)g(each)g(as)g(important)f(respecti)n(v)o(ely\).)2073
2585 y(As)32 b(the)f(le)n(v)o(el)f(of)g(commercial)g(interest)g(in)h
(using)f(this)i(tech-)1974 2684 y(nique)i(\223in)h(anger\224)f(gro)n
(ws)g(it)i(becomes)e(necessary)g(to)h(pro)o(vide)1974
2784 y(well-documented)12 b(and)j(replicable)g(standards)f(for)h(its)i
(implemen-)1974 2884 y(tation.)23 b(The)16 b(most)h(successful)f(softw)
o(are)g(metric)g(model)g(for)f(ef)n(fort)1974 2983 y(estimation)i(is)i
(Function)e(Point)h(Analysis)g([1)o(],)h(and)e(a)i(hallmark)d(of)1974
3083 y(this)25 b(has)f(been)f(its)j(carefully)c(documented)g
(procedures)g(\(in)i(both)1974 3182 y(standards)h(and)h(man)o(y)f
(publications\),)g(certi\002cation,)i(and)e(w)o(ork-)1974
3282 y(shops.)h(While)21 b(it)g(w)o(ould)f(be)h(premature)d(to)j
(impose)f(such)g(restric-)1974 3382 y(tions)f(on)h(the)f(use)h(of)f
(fuzzy)g(logic)g(techniques)f(at)i(this)g(early)f(stage)1974
3481 y(of)k(its)h(adoption)d(in)i(this)g(\002eld,)h(it)g(does)e(seem)i
(prudent)d(to)i(outline)1974 3581 y(some)28 b(general)e(sk)o(eleton)i
(guidelines)e(to)j(encourage)c(the,)30 b(some-)1974 3681
y(what)g(inconsistent,)h(goals)f(of)g(e)o(xperimentation)c(and)k(rigor)
-5 b(.)53 b(In)1974 3780 y(this)27 b(paper)m(,)g(the)g(selection)f(of)g
(input)g(and)g(output)g(precision)g(le)n(v-)1974 3880
y(els)f(based)f(on)f(the)h(stage)h(of)f(the)g(de)n(v)o(elopment)d(life)
j(c)o(ycle)g(is)h(dis-)1974 3979 y(cussed.)1974 4212
y Fi(2.)f(The)i(softwar)n(e)g(de)o(v)o(elopment)f(life-cycle)2073
4428 y Fg(Man)o(y)18 b(alternati)n(v)o(e)f(representations)g(ha)n(v)o
(e)h(been)g(proposed)f(for)1974 4528 y(ho)n(w)23 b(softw)o(are)h(is,)i
(and)d(ought)g(to)h(be,)h(de)n(v)o(eloped)c([9].)36 b(Dif)n(ferent)1974
4628 y(models)26 b(e)o(xist)g(for)g(dif)n(ferent)f(types)h(of)h
(system,)h(such)e(as)h(object-)1974 4727 y(oriented)20
b(systems,)j(where)e(the)h(idealized)f(de)n(v)o(elopment)e(process)1974
4827 y(is)e(considered)e(by)h(some)h(to)f(be)h(fundamentally)c(dif)n
(ferent)i(to)i(other)1974 4926 y(types)f(of)h(de)n(v)o(elopment.)k
(Similarly)-5 b(,)16 b(the)h(use)g(of)g(prototypes)d(\(both)1974
5026 y(lo)n(w-)22 b(and)f(high-\002delity\),)f(customer)i(re)n(vie)n
(ws,)g(and)f(other)h(acti)n(vi-)1974 5126 y(ties)f(may)f(dif)n(fer)f
(from)g(one)g(or)o(ganization)e(to)k(the)f(ne)o(xt.)2073
5225 y(Here)h(we)g(consider)f(only)g(the)h(fundamental)d(phases)j(of)f
(de)n(v)o(el-)1974 5325 y(opment)f(that)h(are)h(ubiquitous)d(to)j
(almost)f(all)h(such)f(models)g(found)p Black Black eop
%%Page: 2 2
2 1 bop Black Black -182 83 a Fg(in)22 b(practice)g(and)g(the)g
(literature.)31 b(Namely)-5 b(,)22 b(the)g(analysis,)h(design,)-182
183 y(coding,)36 b(testing,)i(and)c(maintenance)f(phases.)68
b(Each)35 b(phase)f(is)-182 282 y(brie\003y)14 b(de\002ned)h(belo)n(w)g
(\(in)g(deliberately)f(v)n(ague)g(terms)i(to)f(encom-)-182
382 y(pass)27 b(common)f(usage)h(as)h(widely)e(as)i(possible\).)46
b(These)27 b(phases)-182 482 y(can)i(also)h(be)f(sho)n(wn)g
(graphically)f(as)i(in)g(Figure)f(1,)j(which)d(also)-182
581 y(indicates)23 b(the)i(common)d(notion)h(of)h(iteration)f(and)h
(feedback)e(be-)-182 681 y(tween)e(consecuti)n(v)o(e)e(phases.)-182
899 y Ff(2.1)o(.)k(Analysis)-83 1118 y Fg(This)33 b(is)h(the)f(\002rst)
g(stage)g(of)g(the)f(de)n(v)o(elopment)e(process)i(and)-182
1217 y(starts)h(with)f(the)g(problem)f(being)g(de\002ned)g(and)h
(initial)g(user)g(re-)-182 1317 y(quirements)j(being)g(collected.)73
b(This)37 b(phase)f(can)g(include)g(the)-182 1417 y(construction)15
b(of)j(simple)g(prototypes)e(used)h(to)h(determine)f(or)g(\002ne-)-182
1516 y(tune)25 b(the)h(requirements,)f(b)n(ut)h(should)f(not)h(in)m(v)n
(olv)o(e)e(an)o(y)i(detailed)-182 1616 y(design)19 b(or)h(real)g
(coding.)-83 1719 y(V)-9 b(ery)29 b(little)i(information)c(be)o(yond)g
(the)j(high-le)n(v)o(el)d(functions)-182 1819 y(required)17
b(of)j(the)f(system)h(is)h(a)n(v)n(ailable)e(this)h(early)f(in)h(the)f
(project')-5 b(s)-182 1918 y(life-c)o(ycle.)26 b(Unfortunately)-5
b(,)19 b(this)i(is)i(also)e(the)g(phase)g(where)g(plan-)-182
2018 y(ning)27 b(is)i(most)f(crucial)f(in)h(terms)g(of)g(both)f
(time-to-deli)n(v)o(ery)d(and)-182 2118 y(\002nancial)19
b(cost)i(estimation.)j(Such)c(information)d(is)k(necessary)f(for)-182
2217 y(contract)33 b(ne)o(gotiation)f(\(both)i(inter)n(-)g(and)g
(intra-or)o(ganizational\))-182 2317 y(and)19 b(strate)o(gic)h
(planning.)-83 2420 y(In)26 b(this)i(and)e(the)g(ne)o(xt)g(tw)o(o)h
(stages)g(\(design)e(and)h(coding\))f(the)-182 2520 y(main)e(emphasis)g
(of)h(softw)o(are)f(metric)g(models)g(is)i(the)f(prediction)-182
2619 y(of)19 b(de)n(v)o(elopment)e(ef)n(fort,)h(and)h(from)g(this)h
(some)g(estimates)g(of)g(cost)-182 2719 y(and)e(duration.)23
b(While)d(other)e(dependent)f(v)n(ariables)i(can)g(be)g(of)g(in-)-182
2819 y(terest,)d(the)g(focus)f(in)h(this)g(paper)f(is)h(with)g(this)g
(primary)e(application)-182 2918 y(of)19 b(ef)n(fort)f(estimation.)24
b(Similar)c(ideas)f(can)h(be)f(easily)h(generalized)-182
3018 y(for)f(other)h(metric)f(applications.)-182 3236
y Ff(2.2)o(.)j(Design)-83 3455 y Fg(The)29 b(requirements)e(must)i
(then)g(be)g(translated)f(closer)h(to)g(the)-182 3554
y(actual)c(implementation.)37 b(This)26 b(is)g(when)f(the)g(system)g
(speci\002ca-)-182 3654 y(tions)e(are)g(de)n(v)o(eloped)e(\(for)i(e)o
(xample,)f(Entity-Relationship)g(Dia-)-182 3754 y(grams,)i(Data)h(Flo)n
(w)g(Diagrams,)g(Structure)e(Charts,)j(and)e(pseudo)-182
3853 y(code)c(routines\).)28 b(Ideally)-5 b(,)20 b(the)i(system)g
(should)e(be)i(understood)d(to)-182 3953 y(a)k(high)f(de)o(gree)f(at)i
(this)h(stage,)f(with)g(the)g(coding)e(stage)i(in)m(v)n(olving)-182
4053 y(the)d(implementation)e(of)i(the)g(necessary)f(functions.)-182
4271 y Ff(2.3)o(.)j(Coding)-83 4490 y Fg(Actual)31 b(source)f(code)g
(is)i(written)e(during)f(the)i(coding)e(phase)-182 4589
y(\(including)22 b(visually)i(generated)f(code)h(and)h(automatic)e
(template)-182 4689 y(code\).)36 b(This)25 b(may)e(also)i(include)f(e)n
(v)o(er)f(more)h(sophisticated)f(pro-)-182 4788 y(totypes)c(that)h(e)n
(v)n(olv)o(e)g(\(at)g(least)h(partially\))e(into)h(the)g(\002nal)g
(system.)-182 5007 y Ff(2.4)o(.)i(T)-8 b(esting)-83 5225
y Fg(T)i(esting)38 b(can)g(be)g(performed)e(concurrently)f(with)j(de)n
(v)o(elop-)-182 5325 y(ment,)17 b(or)h(may)g(occur)f(after)h(most)g
(code)f(has)i(been)e(written.)24 b(When)p Black Black
Black 2245 88 a
 tx@Dict begin tx@NodeDict begin {10.61989 5.96492 42.59949 21.29974
3.14996 } /N@A true /N@M-1-1-1 16 {InitRnode } NewNode end end
 2245 88 a 32 w @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  0.2 true 3.8 neg 5.96492
neg 38.79948 10.61989 .5 Frame  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end


@endspecial Fg(Analysis)2516 470 y
 tx@Dict begin tx@NodeDict begin {10.61989 5.96492 35.9297 17.96484
3.14996 } /N@B true /N@M-1-2-2 16 {InitRnode } NewNode end end
 2516 470 a 32 w @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  0.2 true 3.8 neg 5.96492
neg 32.1297 10.61989 .5 Frame  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial Fg(Design)2731 853 y
 tx@Dict begin tx@NodeDict begin {10.61989 5.96492 37.04982 18.5249
3.14996 } /N@C true /N@M-1-3-3 16 {InitRnode } NewNode end end
 2731 853
a 32 w @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  0.2 true 3.8 neg 5.96492
neg 33.24982 10.61989 .5 Frame  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial Fg(Coding)2956
1235 y
 tx@Dict begin tx@NodeDict begin {10.61989 5.96492 36.89966 18.44983
3.14996 } /N@D true /N@M-1-4-4 16 {InitRnode } NewNode end end
 2956 1235 a 31 w @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  0.2 true 3.8 neg 5.96492
neg 33.09966 10.61989 .5 Frame  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial
Fg(T)-6 b(esting)3179 1617 y
 tx@Dict begin tx@NodeDict begin {10.61989 3.91994 59.24939 29.6247
3.14996 } /N@E true /N@M-1-5-5 16 {InitRnode } NewNode end end
 3179 1617 a 32 w @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  0.2 true 3.8 neg 3.91994
neg 55.44939 10.61989 .5 Frame  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial Fg(Maintenance)3671 1617 y
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@A /N@B
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
0. def /AngleB 90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0 def
/ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671
1617 a 3671 1617 a
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@B /N@C
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
0. def /AngleB 90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0 def
/ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671 1617 a 3671 1617 a
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@C /N@D
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
0. def /AngleB 90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0 def
/ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671 1617
a 3671 1617 a
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@D /N@E
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
0. def /AngleB 90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0 def
/ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671 1617 a 3671 1617 a
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@B /N@A
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
180. def /AngleB -90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0
def /ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671 1617 a 3671
1617 a
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@C /N@B
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
180. def /AngleB -90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0
def /ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671 1617 a 3671 1617 a
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@D /N@C
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
180. def /AngleB -90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0
def /ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671 1617 a 3671 1617
a
 tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow  EndArrow  }
def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@E /N@D
InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
180. def /AngleB -90. def /ArmA 0.0 def /ArmB 10.0 def /ArmTypeA 0
def /ArmTypeB 0 def NCAngle  } if end gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore  grestore end
 3671 1617 a 2074 1801 a Fe(Figure)22 b(1.)i(Sta)o(g)q(es)f(in)g(a)g
(g)q(eneric)g(lif)o(e\255c)o(yc)n(le)h(model)p Black
1974 2194 a Fg(the)32 b(system)f(is)i(tested)f(metric)f(models)g(may)h
(be)f(used)h(for)f(esti-)1974 2294 y(mating)18 b(testing)g(ef)n(fort)g
(or)g(for)g(predicting)f(the)h(number)f(of)h(defects)1974
2394 y(remaining.)37 b(This)25 b(phase)g(includes)f(functionality)f
(and)i(usability)1974 2493 y(testing)d(and)g(in)g(man)o(y)f(cases)i
(this)g(is)g(the)f(\002rst)h(time)f(the)g(user)g(sees)1974
2593 y(the)f(actual)h(system)g(properly)d(e)o(x)o(ecuting.)27
b(At)22 b(this)g(stage)g(the)g(sys-)1974 2693 y(tem)g(should)e(be)i
(complete)e(in)i(terms)g(of)f(functionality)f(so)i(a)g(lar)o(ge)1974
2792 y(amount)d(of)h(information)d(about)j(it)h(is)g(a)n(v)n(ailable)e
(for)h(modeling.)1974 3064 y Ff(2.5)o(.)j(Maintenance)2073
3336 y Fg(When)30 b(the)g(system)g(is)h(modi\002ed)d(to)i(add)g(ne)n(w)
f(functionality)1974 3436 y(or)22 b(correct)f(defects)g(after)h(it)h
(has)f(been)f(released)h(to)g(the)g(customer)1974 3536
y(some)32 b(estimate)h(of)f(maintenance)f(ef)n(fort)g(may)i(be)f(made.)
62 b(Un-)1974 3635 y(lik)o(e)20 b(the)h(ef)n(fort)e(estimates)h(for)g
(the)g(pre)n(vious)f(four)g(phases,)h(which)1974 3735
y(can)k(all)i(be)e(combined)f(to)i(gi)n(v)o(e)f(the)h(total)g(for)f
(the)g(system,)i(ef)n(fort)1974 3834 y(on)i(maintenance)e(is)k(often)d
(treated)h(separately)-5 b(.)49 b(Estimates)28 b(can)1974
3934 y(be)d(made)f(for)g(the)h(entire)g(maintenance)e(process)i(if)g
(this)g(is)h(suf)n(\002-)1974 4034 y(ciently)e(tri)n(vial,)i(or)f(this)
g(phase)g(can)f(be)h(treated)g(as)g(a)h(ne)n(w)e(de)n(v)o(el-)1974
4133 y(opment)19 b(process)g(itself.)1974 4430 y Fi(3.)29
b(Adv)o(antages)h(of)f(fuzzy)h(logic)f(f)n(or)g(softwar)n(e)h(met-)2123
4547 y(ric)25 b(models)2073 4827 y Fg(Fuzzy)f(logic)g(modeling)f
(techniques)g(of)n(fer)g(se)n(v)o(eral)h(potential)1974
4926 y(adv)n(antages)32 b(o)o(v)o(er)h(more)g(traditional)g(techniques)
g(for)h(softw)o(are)1974 5026 y(metric)24 b(models.)39
b(These)24 b(ha)n(v)o(e)g(already)g(been)g(discussed)h(at)g(con-)1974
5126 y(siderable)15 b(length)g(in)h(the)g(literature)g(and)f(so)i(are)e
(only)h(brie\003y)f(men-)1974 5225 y(tioned)20 b(here)h(for)g
(reference)e(purposes.)27 b(The)21 b(interested)g(reader)f(is)1974
5325 y(referred)e(to)j([2)o(,)f(3,)g(5])g(for)g(more)f(detailed)h
(discussion.)p Black Black eop
%%Page: 3 3
3 2 bop Black Black -182 83 a Ff(3.1)o(.)22 b(Data)h(r)n(equir)n
(ements)-83 284 y Fg(Fuzzy)15 b(logic)h(allo)n(ws)g(model)e(de)n(v)o
(elopment)f(with)j(little)h(or)e(e)n(v)o(en)-182 384
y(no)30 b(data.)57 b(This)31 b(is)h(a)f(considerable)e(boon)h(gi)n(v)o
(en)f(the)i(problems)-182 483 y(with)25 b(data)h(gathering)d(in)j
(softw)o(are)f(metrics)g(research)g(and)g(prac-)-182
583 y(tice.)53 b(The)29 b(collection)g(of)g(homogeneous)d(data)k(sets)h
(is)f(compli-)-182 682 y(cated)18 b(by)h(rapidly)f(changing)f
(technologies)g(and)h(a)i(reluctance)e(for)-182 782 y(inter)n(-or)o
(ganizational)h(sharing)k(of)g(metrics)h(data.)35 b(Ev)o(en)23
b(within)g(a)-182 882 y(single)c(or)o(ganization)d(there)j(can)g(be)h
(considerable)d(pressure)i(from)-182 981 y(programmers)33
b(and)j(managers)f(against)h(measurement)e(collec-)-182
1081 y(tion.)-182 1282 y Ff(3.2)o(.)22 b(Rob)n(ustness)-83
1483 y Fg(Softw)o(are)29 b(metric)g(data)g(sets)h(are)f(lik)o(ely)g(to)
h(contain)e(unusual)-182 1582 y(systems)k(that)h(result)f(from)g(a)g(v)
n(ariety)g(of)g(causes)g(and)g(may)g(re-)-182 1682 y(duce)24
b(the)h(generalisability)f(of)g(an)o(y)h(empirically)e(deri)n(v)o(ed)h
(model)-182 1782 y([8)o(].)k(Some)21 b(of)g(these)g(problems)f(include)
g(dif)n(ferent)g(de)n(v)o(elopment)-182 1881 y(practices,)d(de)n(v)o
(eloper)e(learning,)h(and)h(unmeasured)f(\(and)g(perhaps)-182
1981 y(unmeasurable\))g(in\003uences.)24 b(By)c(de)n(v)o(eloping)d
(models)h(with)i(con-)-182 2081 y(siderable)d(e)o(xpert)g(in)m(v)n(olv)
o(ement,)f(where)h(the)h(model)f(can)h(be)g(inter)n(-)-182
2180 y(preted)26 b(and)i(check)o(ed)e(for)h(reasonableness,)h(some)g
(of)g(the)g(prob-)-182 2280 y(lems)37 b(with)g(non-representati)n(v)o
(e)c(data)k(corrupting)d(empirically)-182 2379 y(tuned)19
b(models)g(can)h(be)h(reduced)d(or)i(perhaps)f(e)n(v)o(en)g(a)n(v)n
(oided.)-182 2580 y Ff(3.3)o(.)f(Or)o(ganizational)e(pr)n(ocess)g(lear)
o(ning)g(and)i(communi\255)23 2680 y(cation)-83 2881
y Fg(The)27 b(use)g(of)f(fuzzy)g(logic)h(models)f(pro)o(vides)f(an)i
(opportunity)-182 2980 y(to)d(learn)g(from)g(the)g(resulting)g(models)g
(that)g(is)i(less)f(e)n(vident)f(with)-182 3080 y(re)o(gression)j(and)h
(\(e)n(v)o(en)f(more)h(so\))h(neural)f(netw)o(ork)f(models.)50
b(A)-182 3180 y(linguistically-based)14 b(model)i(can)h(also)g(be)g
(seen)g(as)g(a)g(useful)g(com-)-182 3279 y(munication)23
b(tool.)41 b(F)o(or)25 b(e)o(xample,)h(a)g(programmer)c(pointing)i(out)
-182 3379 y(that)33 b(comple)o(xity)e(for)i(a)h(particular)e(module)g
(is)i Fh(very)g(high)e Fg(and)-182 3479 y(may)21 b(need)g(re)n(w)o(ork)
f(may)h(be)h(considerably)e(more)g(meaningful)g(to)-182
3578 y(a)27 b(manager)f(than)h(them)f(stating)i(that)f(the)g(module')-5
b(s)26 b(c)o(yclomatic)-182 3678 y(comple)o(xity)i(is)k(55.)56
b(In)30 b(addition,)i(since)f(the)g(models)f(are)g(rela-)-182
3777 y(ti)n(v)o(ely)h(easily)h(understood)e(by)i(management)e(there)h
(is)i(a)g(grater)-182 3877 y(chance)27 b(of)h(management)e(support,)j
(which)e(is)j(essential)e(for)g(the)-182 3977 y(success)20
b(of)g(an)o(y)g(metrics)g(program.)-182 4203 y Fi(4)o(.)29
b(Fuzzy)g(logic)f(models)g(thr)n(oughout)j(the)e(de)o(v)o(elop-)-33
4319 y(ment)d(life-cycle)-83 4528 y Fg(One)19 b(of)g(the)g(important)f
(bene\002ts)h(of)g(fuzzy)f(logic)h(for)f(softw)o(are)-182
4628 y(engineering)j(project)i(management)f(is)j(the)f(\003e)o
(xibility)f(a)n(v)n(ailable)-182 4727 y(in)28 b(terms)g(of)g(the)g
(types)g(of)g(input)f(and)h(output)f(v)n(ariables.)48
b(Input)-182 4827 y(v)n(ariables)26 b(can)g(be)h(e)o(xpressed)f(as)h
(simple)g(fuzzy)f(labels)h(\(a)g Fh(lar)m(g)o(e)-182
4926 y Fg(number)15 b(of)i(entities)g(in)g(the)g(data)g(model\),)f
(fuzzy)g(numbers)g(\()p Fh(about)-182 5026 y(250)28 b
Fg(entities\),)i(or)f(using)f(precise)h(v)n(alues)f(\()p
Fh(265)g Fg(entities\).)51 b(Sim-)-182 5126 y(ilarly)-5
b(,)32 b(the)f(output)e(can)i(be)f(e)o(xpressed)g(in)h(the)f(same)h(w)o
(ay)-5 b(,)33 b(as)e(a)-182 5225 y(label)20 b(\(a)h Fh(short)h
Fg(de)n(v)o(elopment)c(time\),)i(fuzzy)g(number)f(\()p
Fh(about)g(400)-182 5325 y Fg(de)n(v)o(eloper)n(-hours\),)c(or)20
b(precise)g(v)n(alues)g(\()p Fh(378)f Fg(de)n(v)o(eloper)n(-hours\).)p
Black Black Black 2093 3 1731 4 v 2091 103 4 100 v 2143
73 a Fd(Phase)p 2678 103 V 378 w(Inputs)p 3250 103 V
342 w(Outputs)p 3822 103 V 2093 106 1731 4 v 2091 206
4 100 v 2143 176 a Fg(Analysis)p 2678 206 V 295 w(fuzzy)g(label)p
3250 206 V 205 w(fuzzy)g(label)p 3822 206 V 2093 209
1731 4 v 2091 309 4 100 v 2143 279 a(Design)p 2678 309
V 350 w(fuzzy)g(number)p 3250 309 V 111 w(fuzzy)g(number)p
3822 309 V 2093 312 1731 4 v 2091 412 4 100 v 2143 431
a(Coding)p 2678 412 V 2729 382 a(crisp)h(v)n(alue)g(or)p
3250 412 V 3301 431 a(fuzzy)f(number)p 3822 412 V 2091
511 V 2678 511 V 2729 482 a(fuzzy)g(number)p 3250 511
V 3822 511 V 2093 515 1731 4 v 2091 614 4 100 v 2143
584 a(T)-6 b(esting)p 2678 614 V 342 w(crisp)20 b(v)n(alue)p
3250 614 V 211 w(fuzzy)f(number)p 3822 614 V 2093 618
1731 4 v 2091 717 4 100 v 2143 687 a(Maintenance)p 2678
717 V 2729 737 a(crisp)h(v)n(alue)p 3250 717 V 211 w(fuzzy)f(number)p
3822 717 V 2091 817 V 2143 787 a(\(small)h(project\))p
2678 817 V 3250 817 V 3822 817 V 2093 820 1731 4 v Black
Black 2073 972 a Fe(T)-7 b(ab)o(le)21 b(1.)g(Sug)o(g)q(ested)f(le)o
(vels)h(of)f(precision)h(acr)n(oss)2073 1072 y(the)39
b(lif)o(e\255c)o(yc)n(le)g(when)f(estimating)g(de)o(velopment)2073
1171 y(eff)n(or)r(t)p Black 2073 1508 a Fg(Perhaps)16
b(the)h(greatest)f(bene\002t)g(from)g(this)h(approach)d(is)k(that)e
(the)1974 1608 y(same)29 b(model)g(\(the)g(membership)e(functions)h
(and)h(rules\))g(can)g(be)1974 1707 y(used)20 b(throughout)d(the)j(de)n
(v)o(elopment)e(process,)h(simply)h(changing)1974 1807
y(the)j(le)n(v)o(els)g(of)g(precision)f(as)h(required.)32
b(This)23 b(has)g(se)n(v)o(eral)g(adv)n(an-)1974 1906
y(tages)f(o)o(v)o(er)e(multiple)h(model)g(methods)g(including)f(the)i
(impro)o(v)o(ed)1974 2006 y(consistenc)o(y)i(of)h(predictions,)g
(centralized)f(model)h(b)n(uilding)f(and)1974 2106 y(implementation,)35
b(model)d(b)n(uilding)h(ef)n(fort)f(minimization,)k(and)1974
2205 y(kno)n(wledge)18 b(gathering)g(o)o(v)o(er)h(the)h(entire)g(de)n
(v)o(elopment)d(process.)2073 2307 y(The)26 b(follo)n(wing)d
(subsections)i(discuss)h(the)f(representation)e(of)1974
2406 y(independent)35 b(and)h(dependent)g(metric)h(v)n(ariables)f
(using)h(fuzzy)1974 2506 y(logic.)e(T)-7 b(able)23 b(1)h(and)f(Figure)g
(2)h(sho)n(w)f(a)h(summary)e(of)i(these)g(sug-)1974 2605
y(gestions.)2073 2707 y(Where)17 b(a)h(conte)o(xt)e(is)i(necessary)e
(in)i(the)f(discussion)g(belo)n(w)-5 b(,)16 b(the)1974
2806 y(most)27 b(common)e(task)i(for)f(metric)h(models)f(is)i(used.)44
b(That)27 b(is)h(de-)1974 2906 y(v)o(elopment)18 b(ef)n(fort)g
(prediction)h(based)g(on)h(system)g(characteristics)1974
3006 y(\(including)j(the)j(product,)e(process,)j(and)d(associated)i
(resources\).)1974 3105 y(The)h Fh(standar)m(d)h Fg(inputs)e(into)h
(such)g(a)h(model)e(are)h(generally)f(onee)1974 3205
y(or)e(more)f(size)h(and)g(comple)o(xity)d(measures,)k(with)f(perhaps)e
(some)1974 3305 y(de)n(v)o(eloper)14 b(producti)n(vity)g(adjustment.)22
b(De)n(v)o(eloper)15 b(ef)n(fort)g(may)h(be)1974 3404
y(estimated)i(on)f(the)h(basis)h(of)f(the)g(entire)f(system,)i(a)f
(speci\002ed)g(com-)1974 3504 y(ponent)26 b(of)g(the)i(system,)h(for)d
(a)i(particular)e(phase,)i(or)f(for)f(both)h(a)1974 3603
y(component)18 b(and)h(phase)h(together)-5 b(.)2073 3705
y(It)23 b(should)f(also)h(be)g(noted,)f(that)h(as)g(the)g(de)n(v)o
(elopment)d(process)1974 3804 y(is)26 b(enacted,)e(more)g(is)i(kno)n
(wn)e(about)f(the)i Fh(actual)f Fg(ef)n(fort)g(which)g(is)1974
3904 y(generally)30 b(a)i(component)d(of)j(the)f(ef)n(fort)g(being)f
(estimated.)59 b(As)1974 4004 y(such)34 b(the)h(e)o(xpectation)e(is)i
(that)g(model)f(performance)e(will)j(im-)1974 4103 y(pro)o(v)o(e)27
b(roughly)f(monotonically)g(irrespecti)n(v)o(e)i(of)g(the)h(modeling)
1974 4203 y(technique)18 b(used.)1974 4415 y Ff(4.1)o(.)23
b(Analysis)2073 4628 y Fg(The)k(analysis)f(phase)g(is)i(one)e(of)g(the)
h(most)f(dif)n(\002cult)g(times)h(to)1974 4727 y(mak)o(e)d
(predictions.)37 b(This)25 b(is)h(because)e(almost)g(all)h(e)o(xisting)
f(soft-)1974 4827 y(w)o(are)j(metric)g(models)g(assume)h(that)f
(precise)g(v)n(alues)g(relating)g(to)1974 4926 y(the)f(system)h
(speci\002cation)f(are)h(a)n(v)n(ailable)f(as)h(independent)d(v)n(ari-)
1974 5026 y(ables.)41 b(F)o(or)25 b(e)o(xample,)h(Function)e(Point)h
(Analysis)h(assumes)g(that)1974 5126 y(the)16 b(numbers)e(of)h(e)o
(xternal)g(inputs,)h(e)o(xternal)e(outputs,)i(e)o(xternal)e(in-)1974
5225 y(quiries,)i(e)o(xternal)e(\002les,)j(and)e(internal)g(\002les)h
(are)g(all)g(kno)n(wn.)22 b(It)16 b(also)1974 5325 y(requires)j(each)g
(to)h(be)g(indi)n(vidually)e(rated)i(as)g(simple,)g(a)n(v)o(erage,)e
(or)p Black Black eop
%%Page: 4 4
4 3 bop Black Black Black Black Black 345 2244 a @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  0. true 49.7923 234.73512
305.86699 64.01866 .5 Frame  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 56.90549 199.1692 56.90549 227.62195  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 199.1692 56.90549 199.1692  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 78.24504 199.1692 56.90549 227.62195  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 78.24504 227.62195 56.90549 199.1692  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 199.1692 78.24504 227.62195  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 227.62195 78.24504 199.1692  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial 817 678 a Fh(Size)345 2244 y
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 56.90549 142.26372 56.90549 170.71646  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 142.26372 56.90549 142.26372  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 78.24504 142.26372 56.90549 170.71646  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 78.24504 170.71646 56.90549 142.26372  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 142.26372 78.24504 170.71646  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 170.71646 78.24504 142.26372  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial
817 1140 a(Comple)n(xity)345 2244 y @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 56.90549 85.35823 56.90549 113.81097  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end


@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 85.35823 56.90549 85.35823  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 78.24504 85.35823 56.90549 113.81097  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 78.24504 113.81097 56.90549 85.35823  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 85.35823 78.24504 113.81097  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 99.5846 113.81097 78.24504 85.35823  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial 817 1629 a Fg(.)12 b(.)g(.)345
2244 y @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  0. true 113.81097 78.24504
241.84831 220.50876 .5 Frame  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial 1313 524
a(IF)21 b Fh(size)g Fg(is)g Fh(small)1334 632 y Fg(AND)g
Fh(comple)n(xity)e Fg(is)i Fh(low)1334 767 y Fg(AND)g(.)12
b(.)g(.)1334 869 y(THEN)20 b Fh(ef)o(fort)i Fg(is)f Fh(low)1313
997 y Fg(IF)g Fh(size)g Fg(is)g Fh(small)1334 1105 y
Fg(AND)g Fh(comple)n(xity)e Fg(is)i Fh(medium)1334 1239
y Fg(AND)g(.)12 b(.)g(.)1334 1341 y(THEN)20 b Fh(ef)o(fort)i
Fg(is)f Fh(low-medium)1313 1475 y Fg(IF)g(.)12 b(.)g(.)345
2244 y @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 256.07469 142.26372 256.07469 170.71646  /Lineto
/lineto load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 298.7538 142.26372 256.07469 142.26372  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 266.74446 142.26372 256.07469 170.71646  /Lineto
/lineto load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 266.74446 170.71646 256.07469 142.26372  /Lineto
/lineto load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 277.41425 142.26372 266.74446 170.71646  /Lineto
/lineto load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 277.41425 170.71646 266.74446 142.26372  /Lineto
/lineto load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 288.08401 142.26372 277.41425 170.71646  /Lineto
/lineto load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial @beginspecial
@setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 288.08401 170.71646 277.41425 142.26372  /Lineto
/lineto load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap
stroke  grestore end
 
@endspecial @beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 298.7538 142.26372 288.08401 170.71646  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 0.8 SLW 0. setgray  /ArrowA { moveto } def
/ArrowB { } def [ 298.7538 170.71646 288.08401 142.26372  /Lineto /lineto
load def false Line  gsave 0.8 SLW 0. setgray 0 setlinecap stroke 
grestore end
 
@endspecial 2471 1140 a Fh(Ef)o(fort)-128
219 y Fd(Analysis)-10 324 y Fh(size)22 b Fg(=)e(small)-10
424 y(.)12 b(.)g(.)-128 574 y Fd(Design)-10 678 y Fh(size)22
b Fg(=)e(about)f(100)-10 779 y(.)12 b(.)g(.)-128 928
y Fd(Coding)-10 1032 y Fh(size)22 b Fg(=)e(115)-10 1133
y(.)12 b(.)g(.)-128 1282 y Fd(T)-8 b(esting)-10 1387
y Fh(size)22 b Fg(=)e(113)-10 1487 y(.)12 b(.)g(.)-128
1653 y Fd(Maintenance)-10 1741 y Fh(size)22 b Fg(=)e(132)-10
1842 y(.)12 b(.)g(.)3179 219 y Fd(Analysis)3297 313 y
Fh(ef)o(fort)22 b Fg(=)f(v)o(ery)e(lo)n(w)3297 424 y(.)12
b(.)g(.)3179 574 y Fd(Design)3297 668 y Fh(ef)o(fort)22
b Fg(=)f(about)e(275)3297 779 y(.)12 b(.)g(.)3179 928
y Fd(Coding)3297 1022 y Fh(ef)o(fort)22 b Fg(=)f(about)e(263)3297
1133 y(.)12 b(.)g(.)3179 1282 y Fd(T)-8 b(esting)3297
1377 y Fh(ef)o(fort)22 b Fg(=)f(about)e(272)3297 1487
y(.)12 b(.)g(.)3179 1653 y Fd(Maintenance)3297 1731 y
Fh(ef)o(fort)22 b Fg(=)f(about)e(119)3297 1842 y(.)12
b(.)g(.)345 2244 y @beginspecial @setspecial
 tx@Dict begin STP newpath 2.84523 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { /ArrowBc [ 6 2 roll ] cvx def ArrowBc BeginArrow false
0.4 1.4 1.5 2. Arrow  EndArrow  } def [ 42.67911 145.10916 14.22636
145.10916  /Lineto /lineto load def false Line  gsave 2.84523 SLW 0.
setgray 0 setlinecap stroke  grestore gsave 1.42262 SLW 1. setgray
stroke grestore gsave ArrowBc ArrowB pop pop pop pop grestore end
 
@endspecial
@beginspecial @setspecial
 tx@Dict begin STP newpath 2.84523 SLW 0. setgray  /ArrowA { moveto
} def /ArrowB { /ArrowBc [ 6 2 roll ] cvx def ArrowBc BeginArrow false
0.4 1.4 1.5 2. Arrow  EndArrow  } def [ 341.43292 145.10916 312.98018
145.10916  /Lineto /lineto load def false Line  gsave 2.84523 SLW 0.
setgray 0 setlinecap stroke  grestore gsave 1.42262 SLW 1. setgray
stroke grestore gsave ArrowBc ArrowB pop pop pop pop grestore end
 
@endspecial Black Black -83
2072 a Fe(Figure)27 b(2.)h(Diff)o(erent)f(le)o(vels)g(of)g(input)f(and)
h(output)f(precision)h(with)f(the)h(same)h(set)f(of)g(member)o(ship)f
(functions)-83 2172 y(and)d(rules)p Black -182 2505 a
Fg(comple)o(x.)49 b(Optionally)-5 b(,)29 b(some)g(subjecti)n(v)o(e)f
(technical)g(comple)o(x-)-182 2605 y(ity)f(f)o(actors)h(can)f(be)h
(used)f(to)h(further)e(re\002ne)h(the)h(estimated)f(size)-182
2705 y(\(which)d(is)j(usually)e(translated)g(into)h(an)g(ef)n(fort)e
(estimate)i(using)f(a)-182 2804 y(de)n(v)o(eloper)17
b(hour)i(per)h(function)f(point)g(approach\))f([1)o(].)-83
2914 y(Ho)n(we)n(v)o(er)m(,)34 b(in)g(man)o(y)d(cases)j(the)f(numbers)f
(of)h(these)g(system)-182 3014 y(components,)23 b(and)i(e)n(v)o(en)e
(more)i(so)g(their)f(speci\002c)i(comple)o(xities,)-182
3113 y(are)21 b(not)g(kno)n(wn)f(with)i(an)o(y)f(de)o(gree)f(of)h
(certainty)g(until)g(the)h(design)-182 3213 y(phase)d(is)h(almost)g
(\002nished,)f(let)h(alone)f(during)f(the)i(analysis)f(phase)-182
3312 y(itself.)66 b(This)35 b(is)g(one)e(area)h(where)f(the)h(natural)f
(uncertainty)f(of)-182 3412 y(fuzzy)20 b(logic)g(pro)o(vides)g(a)h
(useful)g(means)f(of)h(representing)e(the)i(ap-)-182
3512 y(proximate)i(numbers)g(of)i(components)d(and)j(their)f(a)n(v)o
(erage)g(com-)-182 3611 y(ple)o(xity)j(\(or)g(whate)n(v)o(er)g(other)g
(metrics)i(are)f(used\).)48 b(While)29 b(man-)-182 3711
y(agers)19 b(can)h(try)g(to)g(pro)o(vide)e(precise)i(v)n(alues)f(for)h
(standard)f(models,)-182 3811 y(such)h(results)h(are)g(unlik)o(ely)e
(to)i(be)f(tak)o(en)h(seriously)f(gi)n(v)o(en)f(the)i(ob-)-182
3910 y(vious)c(guessw)o(ork)g(and)h(there)f(is)i(a)g(natural)e
(reluctance)g(to)h(pro)o(vide)-182 4010 y(v)n(alues)25
b(to)h(a)g(le)n(v)o(el)f(of)h(precision)f(be)o(yond)e(the)j(estimator')
-5 b(s)26 b(capa-)-182 4109 y(bilities.)-83 4219 y(Of)c(course,)g(dif)n
(ferent)e(models)i(could)f(be)h(used)g(at)h(each)e(phase)-182
4319 y(of)38 b(de)n(v)o(elopment)d(with)k(re)o(gression)e(or)h(neural)f
(netw)o(ork)g(tech-)-182 4418 y(niques.)g(Earlier)24
b(models)g(could)g(use)h(cate)o(gorical)e(labels)i(for)f(the)-182
4518 y(number)18 b(of)h(functions,)g(for)g(e)o(xample.)k(Ho)n(we)n(v)o
(er)m(,)18 b(this)i(then)g(leads)-182 4618 y(to)c(the)g(problems)f
(with)h(multiple)f(models)h(that)g(ha)n(v)o(e)g(already)f(been)-182
4717 y(discussed)20 b(abo)o(v)o(e)e(in)i Fc(x)p Fg(4.)-83
4827 y(Similarly)-5 b(,)29 b(the)e(outputs)g(from)g(softw)o(are)g
(metric)g(models)g(are)-182 4926 y(usually)34 b(numerical)f(v)n(alues,)
k(such)e(as)g Fh(5251)e Fg(de)n(v)o(eloper)f(hours.)-182
5026 y(This)23 b(can)g(introduce)e(problems)h(with)h(o)o(v)o(er)n
(-commitment)d(where)-182 5126 y(the)i(estimate)h(becomes)e(a)i
Fh(sacr)m(ed)g(number)p Fg(.)31 b(When)22 b(the)h(estimate)-182
5225 y(is)i(later)g(re)n(vised,)g(perhaps)f(due)g(to)h(more)f(kno)n
(wledge)f(becoming)-182 5325 y(a)n(v)n(ailable,)17 b(changes)f(can)i
(be)f(seen)g(as)i(re\003ecting)d(instability)h(in)h(the)1974
2505 y(estimation)k(process)g(or)h(the)f(project)g(itself.)33
b(Increasing)21 b(the)i(esti-)1974 2605 y(mated)j(cost)h(and)f
(duration)e(is)k(often)d(associated)i(with)f(problem-)1974
2705 y(atic)19 b(projects,)f(which)g(could)g(lead)g(to)h(a)g
(politically-moti)n(v)n(ated)c(re-)1974 2804 y(luctance)i(to)h(update)f
(estimates)h(as)h(frequently)c(as)k(may)e(be)h(bene\002-)1974
2904 y(cial)h(to)g(the)g(or)o(ganization.)j(If)c(estimates)i(were)f
(instead)f(e)o(xpressed)1974 3004 y(as)31 b(fuzzy)e(labels,)k(such)d
(as)h(this)g(is)h(a)e Fh(high)g(ef)o(fort)i Fg(project,)g(then)1974
3103 y(commitment)f(to)h(precise)h(v)n(alues)f(can)g(be)g(delayed)g
(until)g(these)1974 3203 y(v)n(alues)23 b(can)h(be)g(estimates)g(with)g
(enough)e(accurac)o(y)g(to)i(be)g(mean-)1974 3302 y(ingful.)2073
3404 y(Of)42 b(course,)k(predictions)40 b(from)g(standard)g(models)h
(can)g(be)1974 3503 y(rounded)29 b(if)i(this)h(is)g(desired.)57
b(Ho)n(we)n(v)o(er)m(,)32 b(rounding)c(a)k(v)n(alue)e(to)1974
3603 y(the)18 b(nearest)g(thousand)f(hours)g(does)h(not)g(guarantee)f
(that)h(it)h(will)g(be)1974 3703 y(seen)h(as)h(an)f(estimate)h(plus)f
(or)g(minus)f(500)h(hours.)2073 3804 y(It)f(is)g(this)g(stage,)f(and)g
(the)g(follo)n(wing)e(design)i(phase,)g(that)g(seem)1974
3904 y(most)30 b(suited)h(to)f(fuzzy)g(logic)g(modeling)f(since)h
(actual)h(numeri-)1974 4003 y(cal)19 b(v)n(alues)g(are)g(generally)f
(not)h(a)n(v)n(ailable)f(and)h(e)o(xact)g(estimates)g(of)1974
4103 y(ef)n(fort)g(can)h(potentially)f(e)n(v)o(en)g(be)h(harmful.)1974
4315 y Ff(4.2)o(.)j(Design)2073 4528 y Fg(During)54 b(design)h(the)g
(system)g(speci\002cations)f(should)g(be)1974 4628 y(drafted)15
b(and)g(re)n(vie)n(wed.)22 b(This)17 b(may)e(include)g
(Entity-Relationship)1974 4727 y(Diagrams)32 b(sho)n(wing)g(the)h
(numbers)e(of)i(entities,)k(relationships,)1974 4827
y(and)49 b(elements;)63 b(Data)50 b(Flo)n(w)f(Diagrams)g(sho)n(wing)f
(the)h(data)1974 4926 y(sources,)17 b(sinks,)g(and)g(\003o)n(ws;)h
(Functional)e(Decomposition)f(Charts)1974 5026 y(sho)n(wing)j(the)i
(breakdo)n(wn)d(of)i(the)g(system)h(into)f(actual)h(functions;)1974
5126 y(and)d(pseudo-code)d(sho)n(wing)j(the)g(algorithms)f(and)h
(program)f(logic)1974 5225 y(from)25 b(a)j(higher)d(le)n(v)o(el)h
(perspecti)n(v)o(e)f([9)o(].)45 b(All)27 b(of)g(these)f(are)h(com-)1974
5325 y(monly)19 b(used)h(as)h(part)f(of)f(softw)o(are)h(metric)g
(models)g([1)o(].)p Black Black eop
%%Page: 5 5
5 4 bop Black Black -83 83 a Fg(Since)22 b(the)f(speci\002cations,)g
(and)g(thus)g(the)g(measurements,)f(are)-182 183 y(not)j(a)n(v)n
(ailable)g(in)h(their)g(\002nal)g(form)f(until)g(the)h(end)g(of)f(this)
i(phase,)-182 282 y(and)18 b(are)i(subject)f(to)g(subsequent)f(changes)
h(due)f(to)i(the)f(dynamism)-182 382 y(of)h(customer)f(requirements)g
(or)h(for)g(technical)g(reasons,)g(it)h(mak)o(es)-182
482 y(sense)27 b(to)h(represent)e(the)i(measures)f(as)h(approximate)d
(v)n(alues.)47 b(It)-182 581 y(is)21 b(suggested)e(that)h(fuzzy)f
(numbers)g(are)h(useful)g(for)f(this)i(purpose,)-182
681 y(allo)n(wing)26 b(both)h(the)g(center)g(\(best)g(estimate\))h(and)
f(the)g(de)o(gree)f(of)-182 780 y(con\002dence)31 b(\(spread\))i(to)g
(be)h(represented.)63 b(F)o(or)34 b(e)o(xample,)h(the)-182
880 y(data)29 b(model)g(comple)o(xity)f(may)h(be)h(assessed)g(as)h
Fh(about)d(50)i Fg(1-m)-182 980 y(relationships)22 b(or)g
Fh(very)i(close)f(to)g(55)g Fg(1-m)f(relationships)g(depend-)-182
1079 y(ing)d(on)h(the)g(manager')-5 b(s)19 b(con\002dence)g(in)h(the)g
(estimate.)-83 1179 y(In)33 b(the)g(same)h(w)o(ay)-5
b(,)36 b(estimates)e(of)f(de)n(v)o(elopment)d(ef)n(fort)i(can)-182
1279 y(be)h(made)f(using)h(fuzzy)f(numbers,)i(with)g(an)o(y)e(desired)g
(le)n(v)o(el)h(of)-182 1379 y(linguistic)43 b(precision.)94
b(F)o(or)43 b(e)o(xample,)k Fh(appr)l(oximately)42 b(5000)-182
1478 y Fg(de)n(v)o(eloper)n(-hours)16 b(or)k Fh(almost)g(e)n(xactly)g
(5125)f Fg(de)n(v)o(eloper)f(hours.)-182 1688 y Ff(4.3)o(.)k(Coding)-83
1897 y Fg(By)e(the)f(coding)e(stage)j(most)f(common)e(metric)i(models)f
(can)h(be)-182 1996 y(used)27 b(with)h(actual)g(v)n(alues)g(from)e(the)
i(system)g(speci\002cation)f(and)-182 2096 y(the)d(use)h(of)f(fuzzy)f
(logic)i(seems)f(less)i(useful.)37 b(At)25 b(this)g(point,)g(us-)-182
2196 y(ing)k(e)o(xact)g(v)n(alues)h(as)g(inputs)g(into)f(the)h(model)f
(seems)h(f)o(ar)g(more)-182 2295 y(sensible)20 b(if)g(the)o(y)g(are)g
(indeed)f(a)n(v)n(ailable.)-83 2395 y(Ho)n(we)n(v)o(er)m(,)24
b(some)g(use)h(of)f(fuzzy)f(logic)i(estimates)g(for)f(subjec-)-182
2495 y(ti)n(v)o(e)18 b(concepts,)g(such)h(as)g(program)e(comple)o(xity)
-5 b(,)17 b(can)h(still)i(be)f(used)-182 2595 y([4)o(].)47
b(Such)28 b(concepts)e(are)i(often)f(captured)f(by)h(a)h(series)g(of)g
(arbi-)-182 2694 y(trary)22 b(measurements)g(that)i(can)f(be)h(dif)n
(\002cult)f(to)g(obtain,)g(whereas)-182 2794 y(human)28
b(e)o(xperts)h(may)g(be)h(able)f(to)h(quickly)f(and)g(accurately)g(as-)
-182 2894 y(cribe)19 b(a)i(fuzzy)e(v)n(alue)h(to)g(them.)-83
2994 y(F)o(ortunately)-5 b(,)19 b(as)k(noted)d(earlier)h(the)h(same)f
(fuzzy)g(logic)g(model)-182 3093 y(can)28 b(still)j(be)d(used)h(here)g
(irrespecti)n(v)o(e)e(of)i(the)g(actual)g(precisions)-182
3193 y(used.)23 b(Fuzzy)16 b(numbers)f(may)h(still)i(be)f(preferred)d
(for)i(outputs)g(e)n(v)o(en)-182 3293 y(though)k(e)o(xact)i(inputs)f
(are)h(being)f(used)h(in)h(order)d(to)j(maintain)e(the)-182
3392 y(appearance)d(of)i(uncertainty)-5 b(.)-182 3601
y Ff(4.4)o(.)22 b(T)-8 b(esting)-83 3811 y Fg(T)i(esting)23
b(ef)n(fort)f(metric)h(models)f(can)h(depend)f(on)g(either)h(spec-)-182
3910 y(i\002cation)j(or)g(code-based)e(measurements,)i(so)h(such)f
(predictions)-182 4010 y(may)f(be)i(performed)c(using)j(either)g(fuzzy)
f(logic)h(or)g(crisp)g(v)n(alues)-182 4110 y(depending)c(on)j(a)n(v)n
(ailability)-5 b(.)38 b(As)26 b(with)f(coding,)g(fuzzy)f(logic)h(es-)
-182 4209 y(timates)32 b(may)f(be)g(superior)g(to)h(numerical)e
(estimates)i(for)f(some)-182 4309 y(concepts,)i(such)e(as)h(comple)o
(xity)-5 b(.)57 b(Again,)33 b(fuzzy)e(numbers)f(for)-182
4408 y(outputs)22 b(may)h(be)g(a)h(useful)f(w)o(ay)h(to)f(k)o(eep)g
(the)h(uncertainty)d(in)j(the)-182 4508 y(estimate)c(clear)-5
b(.)-182 4717 y Ff(4.5)o(.)22 b(Maintenance)-83 4926
y Fg(As)30 b(w)o(as)f(mentioned)d(abo)o(v)o(e,)j(maintenance)e
(projects)h(can)g(be)-182 5026 y(either)f(run)g(as)h(single)g
(entities,)i(or)d(may)g(be)h(treated)f(as)i(ne)n(w)e(de-)-182
5126 y(v)o(elopment)d(projects)i(\(with)g(the)h(other)f(phases)g
(included)f(within)-182 5225 y(them\).)50 b(The)28 b(choice)g(of)g
(precision)g(will)i(ob)o(viously)c(depend)h(on)-182 5325
y(the)20 b(scale)h(of)e(the)i(project.)1974 83 y Fi(5.)j(Conclusions)
2073 293 y Fg(Gi)n(v)o(e)16 b(its)h(ability)e(to)h(represent)e(dif)n
(fering)g(le)n(v)o(els)i(of)f(uncertainty)1974 392 y(for)28
b(inputs)h(and)f(outputs)h(whilst)g(still)i(basing)d(inference)f(on)i
(the)1974 492 y(same)h(model,)g(fuzzy)f(logic)g(is)h(well)g(suited)g
(to)f(a)h(life-c)o(ycle)f(ap-)1974 591 y(proach)d(to)h(softw)o(are)g
(metric)g(modeling.)45 b(This)27 b(is)h(a)g(unique)e(op-)1974
691 y(portunity)i(not)i(pre)n(viously)f(a)n(v)n(ailable)h(from)f
(standard)h(softw)o(are)1974 791 y(metric)22 b(models)f(that)i(are)f
(primarily)f(de)n(v)o(eloped)f(using)h(measure-)1974
890 y(ments)k(from)g(a)h(single)g(phase)f(in)h(a)g(project')-5
b(s)25 b(life.)42 b(The)25 b(ensuing)1974 990 y(consistenc)o(y)-5
b(,)19 b(communicatability)-5 b(,)17 b(and)j(economy)f(mak)o(e)h(this)h
(an)1974 1090 y(attracti)n(v)o(e)16 b(modeling)g(technique)f(for)i
(such)g(applications)f(as)i(ef)n(fort)1974 1189 y(estimation.)2073
1289 y(The)26 b(other)g(adv)n(antages)f(of)h(data-free)f(\(or)g
(data-poor\))f(model)1974 1388 y(b)n(uilding,)30 b(more)f(rob)n(ust)g
(models,)i(and)e(impro)o(v)o(ed)e(communica-)1974 1488
y(tion)39 b(further)e(enhance)g(the)i(opportunities)e(from)h(using)g
(fuzzy)1974 1588 y(logic)e(for)g(softw)o(are)h(metrics.)75
b(W)-7 b(e)38 b(are)e(currently)f(entering)h(a)1974 1687
y(phase)g(of)g(industrial)g(collaboration)f(with)h(se)n(v)o(eral)g(lar)
o(ge)g(Ne)n(w)1974 1787 y(Zealand)42 b(commercial)g(or)o(ganizations)f
(where)i(the)g(ideas)h(dis-)1974 1887 y(cussed)20 b(in)g(this)h(paper)e
(will)i(be)f(trialed)g(and)g(re\002ned.)1974 2113 y Fi(Refer)n(ences)p
Black 1974 2314 a Fb([1])p Black 41 w(N.)c(E.)g(Fenton)g(and)h(S.)f(L.)
f(P\003ee)o(ger)l(.)21 b Fa(Softwar)m(e)c(Metrics:)22
b(A)16 b(Rigor)m(ous)2102 2405 y(&)j(Pr)o(actical)g(Appr)m(oac)o(h)p
Fb(.)28 b(PWS,)17 b(1997.)p Black 1974 2524 a([2])p Black
41 w(A.)28 b(Gray)g(and)h(S.)d(MacDonell.)57 b(Applications)29
b(of)f(fuzzy)g(logic)g(to)2102 2615 y(softw)o(are)21
b(metric)f(models)h(for)f(de)n(v)o(elopment)h(ef)n(fort)f(estimation.)
31 b(In)2102 2706 y Fa(Pr)m(oceedings)25 b(of)e(the)h(1997)h(Annual)f
(meeting)g(of)f(the)h(North)f(Amer)o(-)2102 2798 y(ican)42
b(Fuzzy)f(Information)h(Pr)m(ocessing)g(Society)g(-)e(N)n(AFIPS'97)p
Fb(,)2102 2889 y(pages)20 b(394\226399.)h(IEEE,)c(1997.)p
Black 1974 3007 a([3])p Black 41 w(A.)27 b(Gray)g(and)h(S.)e
(MacDonell.)53 b(A)27 b(comparison)h(of)f(model)h(b)o(uild-)2102
3099 y(ing)j(techniques)g(to)f(de)n(v)o(elop)h(predicti)n(v)o(e)f
(equations)h(for)f(softw)o(are)2102 3190 y(metrics.)41
b Fa(Information)25 b(and)f(Softwar)m(e)g(T)-7 b(ec)o(hnolo)o(gy)p
Fb(,)26 b(39:425\226437,)2102 3281 y(1997.)p Black 1974
3399 a([4])p Black 41 w(R.)h(Kilgour)m(,)j(A.)d(Gray)-5
b(,)30 b(P)-8 b(.)26 b(Sallis,)j(and)f(S.)f(MacDonell.)55
b(A)28 b(fuzzy)2102 3491 y(logic)d(approach)h(to)e(computer)h(softw)o
(are)g(source)g(code)g(authorship)2102 3582 y(analysis.)c(In)16
b Fa(Pr)m(oceedings)g(of)g(the)g(1997)h(International)g(Confer)m(ence)
2102 3673 y(on)g(Neur)o(al)g(Information)h(Pr)m(ocessing)f(and)g
(Intellig)o(ent)g(Information)2102 3765 y(Systems)p Fb(,)i(pages)h
(865\226868.)h(Springer)o(-V)-8 b(erlag,)18 b(1997.)p
Black 1974 3883 a([5])p Black 41 w(S.)j(MacDonell)h(and)g(A.)f(Gray)-5
b(.)35 b(A)21 b(comparison)h(of)g(modeling)g(tech-)2102
3974 y(niques)31 b(for)e(softw)o(are)h(de)n(v)o(elopment)h(ef)n(fort)f
(prediction.)61 b(In)30 b Fa(Pr)m(o-)2102 4066 y(ceedings)39
b(of)f(the)g(1997)h(International)g(Confer)m(ence)g(on)f(Neur)o(al)2102
4157 y(Information)26 b(Pr)m(ocessing)g(and)f(Intellig)o(ent)h
(Information)f(Systems)p Fb(,)2102 4248 y(pages)20 b(869\226872.)h
(Springer)o(-V)-8 b(erlag,)18 b(1997.)p Black 1974 4366
a([6])p Black 41 w(S.)28 b(G.)h(MacDonell)h(and)f(A.)g(R.)f(Gray)-5
b(.)59 b(Fulsome:)44 b(a)28 b(fuzzy)i(logic)2102 4458
y(modeling)20 b(tool)f(for)g(softw)o(are)g(metricians.)27
b(In)19 b(this)g(v)o(olume.)p Black 1974 4576 a([7])p
Black 41 w(S.)27 b(G.)h(MacDonell,)i(A.)e(R.)f(Gray)-5
b(,)30 b(and)f(J.)e(Calv)o(ert.)55 b(Fulsome:)42 b(A)2102
4667 y(fuzzy)26 b(logic)f(toolbox)h(for)f(softw)o(are)g(metric)g
(practitioners)g(and)h(re-)2102 4759 y(searchers.)i(Submitted)19
b(to)g(ICONIP'99.)p Black 1974 4877 a([8])p Black 41
w(Y)-10 b(.)21 b(Miyazaki,)h(M.)f(T)-5 b(erakado,)22
b(K.)e(Ozaki,)i(and)f(N.)f(Nozaki.)34 b(Rob)o(ust)2102
4968 y(re)o(gresison)25 b(for)e(de)n(v)o(eloping)i(softw)o(are)f
(estimation)f(models.)42 b Fa(J)n(our)o(-)2102 5060 y(nal)20
b(of)e(System)i(and)f(Softwar)m(e)p Fb(,)h(27:35\22616,)g(1994.)p
Black 1974 5178 a([9])p Black 41 w(R.)i(S.)g(Pressman.)38
b Fa(Softwar)m(e)24 b(Engineering:)31 b(A)22 b(Pr)o(actitioner')m(s)h
(Ap-)2102 5269 y(pr)m(oac)o(h)p Fb(.)28 b(McGra)o(w-Hill,)18
b(fourth)h(edition,)g(1997.)p Black Black eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF