Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update calc_data_object.js #209

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 67 additions & 60 deletions practice_team/lib/calc_data_object.js
Original file line number Diff line number Diff line change
@@ -1,106 +1,113 @@
class CalcData {

constructor() {
this.resultFPA = new Map();
this.resultCOCOMO = new Map();
this.resultFPA = new Map();
this.resultCOCOMO = new Map();
}


/* START FPA IFPUG METHOD */
/* START FPA IFPUG METHOD */

//VAF function
getVAF(array){
let sum = 0;
for (var i = 0; i < array.length; i++) {
sum += array[i];
}
getVAF(array) {
let sum = 0;
for (var i = 0; i < array.length; i++) {
sum += array[i];
}

return (sum * 0.01) + 0.65;
return (sum * 0.01) + 0.65;
}

//AFP function
getAFP(UFP, VAF){
return UFP*VAF;
getAFP(UFP, VAF) {
return UFP * VAF;
}

//AFP function
getAFP(UFP, VAF){
return UFP*VAF;
getAFP(UFP, VAF) {
return UFP * VAF;
}

//DFP function
//CFP - функциональные точки, подсчитанные для дополнительной функциональности,
//которая потребуется при установке продукта, например, миграции данных.
getDFP(UFP, CFP = 0, VAF){
return (UFP + CFP) * VAF;
getDFP(UFP, CFP = 0, VAF) {
return (UFP + CFP) * VAF;
}

//SLOC function
getSLOC(language, DFP){
return language*DFP;
getSLOC(language, DFP) {
let languages = [["Assembly", 320], ["C++", 55], ["Java", 53]];

for (let index = 0; index < languages.length; index++) {
let value = languages[index];
if (value[0] == language) {
language = value[1] * 1;
}
}
return language * DFP;
}

/* END - FPA IFPUG METHOD */
/* END - FPA IFPUG METHOD */

/* START - COCOMO II METHOD */
/* START - COCOMO II METHOD */

//SF function
getSF(array){
let SF = 0;
for (let i = 0; i < array.length; i++) {
SF += array[i];
}
return SF;
getSF(array) {
let SF = 0;
for (let i = 0; i < array.length; i++) {
SF += array[i];
}
return SF;
}

//E function
getE(SF){
return 0.91+0.01*SF;
getE(SF) {
return 0.91 + 0.01 * SF;
}

//EM function
getEM(array){
let EM = 1;
for (let i = 0; i < array.length; i++) {
EM *= array[i];
}
return EM;
getEM(array) {
let EM = 1;
for (let i = 0; i < array.length; i++) {
EM *= array[i];
}
return EM;
}

//PM function
getPM(SLOC, E, EM){
return 2.94 * Math.pow(Math.round(SLOC / 1000), E) * EM;
}
getPM(SLOC, E, EM) {
return 2.94 * Math.pow(Math.round(SLOC / 1000), E) * EM;
}

//TDEV function
getTDEV(PM, SF){
return 3.67 * Math.pow(PM, 0.28+0.02*0.01*SF);
getTDEV(PM, SF) {
return 3.67 * Math.pow(PM, 0.28 + 0.02 * 0.01 * SF);
}

/* END - COCOMO II METHOD */
/* END - COCOMO II METHOD */

// MAIN BODY
// MAIN BODY
calcFPA(array, language) {
let VAF = this.getVAF(array);
//What is UFP???
let UFP = 14;
let AFP = this.getAFP(UFP, VAF);
let DFP = this.getDFP(UFP, 0, VAF);
let SLOC = this.getSLOC(language, DFP);
let KLOC = Math.round(SLOC/1000);
this.resultFPA = ([
["VAF", VAF], ["UFP", UFP], ["AFP", AFP], ["DFP", DFP], ["SLOC", SLOC], ["KLOC", KLOC]
]);
let VAF = this.getVAF(array);
//What is UFP???
let UFP = 14;
let AFP = this.getAFP(UFP, VAF);
let DFP = this.getDFP(UFP, 0, VAF);
let SLOC = this.getSLOC(language, DFP);
let KLOC = Math.round(SLOC / 1000);
this.resultFPA = ([
["VAF", VAF], ["UFP", UFP], ["AFP", AFP], ["DFP", DFP], ["SLOC", SLOC], ["KLOC", KLOC]
]);
}

calcCOCOMO2(array1, array2) {
let SF = this.getSF(array1);
let E = this.getE(SF);
let EM = this.getEM(array2);
let PM = this.getPM(2, E, EM);
let TDEV = this.getTDEV(PM, SF);
this.resultCOCOMO = ([
["SF", SF], ["E", E], ["EM", EM], ["PM", PM], ["TDEV", TDEV]
]);
calcCOCOMO2(array1, array2, SLOC) {
let SF = this.getSF(array1);
let E = this.getE(SF);
let EM = this.getEM(array2);
let PM = this.getPM(SLOC, E, EM);
let TDEV = this.getTDEV(PM, SF);
this.resultCOCOMO = ([
["SF", SF], ["E", E], ["EM", EM], ["PM", PM.toFixed(1)], ["TDEV", TDEV.toFixed(1)]
]);
}
}