function table(arr,header,body) { return makeTable(arr,header,body) } function makeTable(arr,header,body, rowName,names,col,row, data,i,j,m,n,key,datum) { m=split(header,names,/,/); for(i=1;i<=m;i++) names[i] = trim(names[i]); key=names[1]; n=split(body,data,/,/); if (n % m) bad("table rows don't hold "m" items"); j=1; for(i=1;i<=n;i++) { datum = trim(data[i]); if (j==1) { rowName=datum } else { col=names[j]; if(datum != "") arr[key,rowName,col]=datum } j= (j==m) ? 1 : j + 1; } } function initTables() { table(Tunings, # 1 2 3 4 5 6 "em , vl, l, n, h, vh, xh ", "time, , , 1.00, 1.11, 1.29, 1.63," "stor, , , 1.00, 1.05, 1.17, 1.46," \ "data, , 0.90, 1.00, 1.14, 1.28, ," \ "pvol, , 0.87, 1.00, 1.15, 1.30, ," \ "ruse, , 0.95, 1.00, 1.07, 1.15, 1.24," \ "rely, 0.82, 0.92, 1.00, 1.10, 1.26, ," \ "docu, 0.81, 0.91, 1.00, 1.11, 1.23, ," \ "acap, 1.42, 1.19, 1.00, 0.85, 0.71, ," \ "pcap, 1.34, 1.15, 1.00, 0.88, 0.76, ," \ "pcon, 1.29, 1.12, 1.00, 0.90, 0.81, ," \ "apex, 1.22, 1.10, 1.00, 0.88, 0.81, ," \ "plex, 1.19, 1.09, 1.00, 0.91, 0.85, ," \ "ltex, 1.20, 1.09, 1.00, 0.91, 0.84, ," \ "tool, 1.17, 1.09, 1.00, 0.90, 0.78, ," \ "sced, 1.43, 1.14, 1.00, 1.00, 1.00, ," \ "cplx, 0.73, 0.87, 1.00, 1.17, 1.34, 1.74," \ "site, 1.22, 1.09, 1.00, 0.93, 0.86, 0.80 " ); table(Tunings, "sf, vl, l, n, h, vh, xh " , "prec, 6.20, 4.96, 3.72, 2.48, 1.24, 0," \ "flex, 5.07, 4.05, 3.04, 2.03, 1.01, 0," \ "resl, 7.07, 5.65, 4.24, 2.83, 1.41, 0," \ "team, 5.48, 4.38, 3.29, 2.19, 1.01, 0," \ "pmat, 7.80, 6.24, 4.68, 3.12, 1.56, 0" ) table(Coqual, "c, prec,flex,resl,team,pmat", "xh,0.81, 1, 0.71,0.86,0.63," \ "vh,0.9, 1, 0.84,0.92,0.79, " \ "h, 0.95, 1, 0.92,0.96,0.9 , " \ "n,1,1,1,1,1, " \ "l,1.12,1,1.21,1.09,1.3, " \ "vl,1.24,1,1.41,1.18,1.58 "); table(Coqual, "c,rely,data,ruse,docu,cplx,time,stor,pvol,acap,pcap,pcon,apex,plex,ltex,tool,site,sced", "xh, , ,1.02, ,1.41,1.2 ,1.15,1.22, , , , , , , ,0.85, ," \ "vh,0.69,1.1,1.01,0.85,1.27,1.13,1.1,1.15,0.9,0.76,0.77,0.88,0.86,0.81,0.8,0.9,0.84,"\ "h, 0.85,1.05,1,0.92,1.13,1.06,1.05,1.08,0.95,0.88,0.88,0.94,0.94,0.91,0.9,0.95,0.92, "\ "n, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,"\ "l, 1.23,0.91,0.98,1.09,0.86,,,0.82,1.05,1.16,1.15,1.07,1.08,1.11,1.13,1.09,1.1,"\ "vl,1.45,,,1.18,0.71,,,,1.11,1.32,1.3,1.13,1.16,1.22,1.25,1.18,1.19"); table(Coqual, "d,prec,flex,resl,team,pmat", "xh,0.75,1,0.7,0.8,0.61,"\ "vh,0.87,1,0.84,0.9,0.78,"\ "h,0.94,1,0.92,0.95,0.89,"\ "n,1,1,1,1,1 ,"\ "l,1.17,1,1.22,1.13,1.33,"\ "vl,1.34,1,1.43,1.26,1.65"); table(Coqual, "d,rely,data,ruse,docu,cplx,time,stor,pvol,acap,pcap,pcon,apex,plex,ltex,tool,site,sced", "xh,,,1.02,,1.41,1.2,1.18,1.2,,,,,,,,0.83,,"\ "vh,0.69,1.1,1.01,0.85,1.27,1.13,1.12,1.13,0.83,0.85,0.8,0.82,0.86,0.88,0.91,0.89,0.84,"\ "h,0.85,1.05,1,0.93,1.13,1.06,1.06,1.06,0.91,0.93,0.9,0.91,0.93,0.91,0.96,0.95,0.92,"\ "n,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,"\ "l,1.23,0.91,0.98,1.09,0.86,,,0.83,1.1,1.09,1.13,1.11,1.09,1.07,1.05,1.1,1.1,"\ "vl,1.45,,,1.18,0.71,,,,1.2,1.17,1.25,1.22,1.17,1.13,1.1,1.2,1.19"); table(Coqual, "r,prec,flex,resl,team,pmat", "xh,0.7,1,0.76,0.75,0.73,"\ "vh,0.84,1,0.87,0.87,0.85,"\ "h,0.92,1,0.94,0.94,0.93,"\ "n,1,1,1,1,1 ,"\ "l,1.22,1,1.16,1.17,1.19,"\ "vl,1.43,1,1.32,1.34,1.38"); table(Coqual, "r,rely,data,ruse,docu,cplx,time,stor,pvol,acap,pcap,pcon,apex,plex,ltex,tool,site,sced", "xh,,,1.05,,1.32,1.08,1.08,1.16,,,,,,,,0.83,,"\ "vh,0.7,1.07,1.03,0.86,1.21,1.05,1.05,1.1,0.75,1,0.82,0.81,0.9,0.93,0.92,0.89,0.85,"\ "h ,0.85,1.04,1.02,0.93,1.1,1.03,1.03,1.05,0.87,1,0.91,0.91,0.95,0.97,0.96,0.95,0.92,"\ "n,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,"\ "l,1.22,0.93,0.95,1.08,0.88,,,0.86,1.17,1,1.11,1.12,1.05,1.04,1.05,1.1,1.09,"\ "vl,1.43,,,1.16,0.76,,,,1.33,1,1.22,1.24,1.11,1.07,1.09,1.2,1.18"); table(Drf, "r ,automated_analysis,peer_reviews,execution_testing_and_tools", "xh ,0.4 ,0.7 ,0.6, "\ "vh ,0.34 ,0.58 ,0.57, "\ "h ,0.27 ,0.5 ,0.5, "\ "n ,0.1 ,0.4 ,0.4, "\ "l ,0 ,0.25 ,0.23, "\ "vl ,0 ,0 ,0"); table(Drf, "d ,automated_analysis,peer_reviews,execution_testing_and_tools", "xh ,0.5 ,0.78 ,0.7, "\ "vh ,0.44 ,0.7 ,0.65, "\ "h ,0.28 ,0.54 ,0.54, "\ "n ,0.13 ,0.4 ,0.43, "\ "l ,0 ,0.28 ,0.23, "\ "vl ,0 ,0 ,0 "); table(Drf, "c ,automated_analysis,peer_reviews,execution_testing_and_tools", "xh ,0.55 ,0.83 ,0.88, "\ "vh ,0.48 ,0.73 ,0.78, "\ "h ,0.3 ,0.6 ,0.69, "\ "n ,0.2 ,0.48 ,0.58, "\ "l ,0.1 ,0.3 ,0.38, "\ "vl ,0 ,0 ,0 "); } function defineRisks() { tr("sced","rely"); Tr("sced","cplx"); Tr("sced","time"); tr("sced","pvol"); tl("sced","tool"); Tl("sced","pexp"); Tl("sced","pcap"); Tl("sced","apex"); Tl("sced","acap"); tl("sced","ltex"); tl("sced","pmat"); Bl("rely","acap"); Bl("rely","pcap"); Bl("cplx","acap"); Bl("cplx","pcap"); Bl("cplx","tool"); Bl("rely","pmat"); tl("pmat","acap"); Bl("stor","acap"); Bl("time","acap"); tl("tool","acap"); tl("tool","pcap"); tl("pmat","pcap"); Bl("stor","pcap"); Bl("time","pcap"); Tl("ltex","pcap"); bl("pvol","pexp"); tl("tool","pmat"); bl("time","tool"); tl("team","apex"); tl("team","sced"); tl("team","site"); }