BEGIN { string2pairs(Aka, "AM3,Artifact Maturity" \ ",AS2,Asset Safety" \ ",CL3,CMM Level" \ ",CO1,Consequence" \ ",CX3,Complexity" \ ",DI3,Degree of Innovation" \ ",DO3,Development Organization" \ ",DT3,Use of Defect Tracking System" \ ",DV2,Development" \ ",EP1,Error Potential" \ ",EX3,Experience" \ ",FR3,Use of Formal Reviews" \ ",HS2,Human Safety" \ ",PF2,Performance" \ ",PR2,Process" \ ",RA3,Re-use Approach" \ ",RM3,Use of Risk Management System" \ ",SC2,Software Characteristic" \ ",SS3,Size of System" \ ",UC3,Use of CM" \ ",US3,Use of Standards"); } function CO1( tmp) { tmp = L(AS2) + L(PF2) return value("HS2") > tmp ? value("HS2") : tmp; } function EP1() { return C(DV2) + C(PR2) + C(SC2) } function SC2() { return L(CX3) + L(DI3) + L(SS3) } function DV2() { return L(EX3) + L(DO3) } function PR2() { return L(RA3) + formality() + L(AM3) } function formality() { return L(US3)+L(UC3)+L(CL3)+L(FR3)+L(DT3)+L(RM3) } BEGIN { string2pairs(Weight, "HS2,0,AS2,0.35,PF2,0.65,DV2,0.579,EX3,0.828,DO3,0.172,PR2,0.249"\ ",US3,0.0955,UC3,0.0962,CL3,0.0764,FR3,0.1119,DT3,0.0873,RM3,0.0647"\ ",RA3,0.226,AM3,0.242,SC2,0.172,CX3,0.547,DI3,0.351,SS3,0.102"); } function value(x, n,c) { if (x in Names) { n = Names[x]; if (n in Cache) { c = Cache[n]; return c }}; bad(x " not found in Cache"); } function dump( roundp) { print "CO1 " sprintf("%5.3f",CO1()) " " round(CO1()); print "AS2 " sprintf("%5.3f",L(AS2)) " " round(L(AS2)); print "PF2 " sprintf("%5.3f",L(PF2)) " " round(L(PF2)); print "HS2 " sprintf("%5.3f",value("HS2")) " " round(value("HS2")); print "EP1 " sprintf("%5.3f",EP1() ) " " round(EP1()); print "DV2 " sprintf("%5.3f",C(DV2)) " " round(C(DV2)); print "PR2 " sprintf("%5.3f",C(PR2)) " " round(C(PR2)); print "SC2 " sprintf("%5.3f",C(SC2)) " " round(C(SC2)); print "CX3 " sprintf("%5.3f",L(CX3)) " " round(L(CX3)); print "DI3 " sprintf("%5.3f",L(DI3)) " " round(L(DI3)); print "SS3 " sprintf("%5.3f",L(SS3)) " " round(L(SS3)); print "DV2 " sprintf("%5.3f",L(EX3)) " " round(L(EX3)); print "DO3 " sprintf("%5.3f",L(DO3)) " " round(L(DO3)); print "RA3 " sprintf("%5.3f",L(RA3)) " " round(L(RA3)); print "AM3 " sprintf("%5.3f",L(AM3)) " " round(L(AM3)); print "US3 " sprintf("%5.3f",L(US3)) " " round(L(US3)); print "CL3 " sprintf("%5.3f",L(CL3)) " " round(L(CL3)); print "FR3 " sprintf("%5.3f",L(FR3)) " " round(L(FR3)); print "DT3 " sprintf("%5.3f",L(DT3)) " " round(L(DT3)); print "RM3 " sprintf("%5.3f",L(RM3)) " " round(L(RM3)); print "formality " sprintf("%5.3f",formality()) " " round(formality()); }