All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.puresoltechnologies.purifinity.server.metrics.cocomo.basic.BasicCoCoMoEvaluatorParameter Maven / Gradle / Ivy

package com.puresoltechnologies.purifinity.server.metrics.cocomo.basic;

import java.util.HashSet;
import java.util.Set;

import com.puresoltechnologies.commons.domain.LevelOfMeasurement;
import com.puresoltechnologies.commons.domain.Parameter;
import com.puresoltechnologies.commons.money.Money;
import com.puresoltechnologies.parsers.source.SourceCodeLocation;
import com.puresoltechnologies.purifinity.analysis.domain.CodeRangeType;
import com.puresoltechnologies.purifinity.evaluation.api.CodeRangeNameParameter;
import com.puresoltechnologies.purifinity.evaluation.api.CodeRangeTypeParameter;
import com.puresoltechnologies.purifinity.evaluation.api.SourceCodeLocationParameter;
import com.puresoltechnologies.purifinity.evaluation.domain.metrics.MetricParameter;

public class BasicCoCoMoEvaluatorParameter {

	public static final Parameter SOURCE_CODE_LOCATION = SourceCodeLocationParameter
			.getInstance();
	public static final Parameter CODE_RANGE_TYPE = CodeRangeTypeParameter
			.getInstance();
	public static final Parameter CODE_RANGE_NAME = CodeRangeNameParameter
			.getInstance();

	public static final MetricParameter KSLOC = new MetricParameter(
			"kPhyLOC",
			"kSLOC",
			LevelOfMeasurement.RATIO,
			"Total Physical Source Lines Of Code in thousands:\nkPhyLOC = phyLOC / 1000",
			Double.class);
	public static final MetricParameter PERSON_MONTH = new MetricParameter(
			"Development Effort in Month", "Person-Months",
			LevelOfMeasurement.RATIO,
			"Basic COCOMO model, Person-Months = c1 * (kPhyLOC ^ c2)",
			Double.class);
	public static final MetricParameter PERSON_YEARS = new MetricParameter(
			"Development Effort in Years", "Person-Years",
			LevelOfMeasurement.RATIO,
			"Person-Years = Person-Month / (12 Month / Year)", Double.class);
	public static final MetricParameter SCHEDULED_MONTH = new MetricParameter(
			"Schedule in Months", "Months", LevelOfMeasurement.RATIO,
			"Basic COCOMO model, Months = 2.5 * (Person-Months ^ c3)",
			Double.class);
	public static final MetricParameter SCHEDULED_YEARS = new MetricParameter(
			"Schedule in Years", "Years", LevelOfMeasurement.RATIO,
			"Years = Months / 12", Double.class);
	public static final MetricParameter TEAM_SIZE = new MetricParameter(
			"Team Size", "", LevelOfMeasurement.RATIO, "Effort / Schedule",
			Double.class);
	public static final MetricParameter COSTS = new MetricParameter(
			"Estimated Cost", "kMoney", LevelOfMeasurement.RATIO,
			"cost = Schedule * Team Size * 2.4 / 1000.0 * Salary", Double.class);
	public static final MetricParameter SALARY = new MetricParameter(
			"Salary", "Currency", LevelOfMeasurement.RATIO,
			"Average developer salary.", Money.class);
	public static final MetricParameter C1 = new MetricParameter(
			"c1", "", LevelOfMeasurement.RATIO,
			"CoCoMo equation constant. This constant is set by complexity.",
			Double.class);
	public static final MetricParameter C2 = new MetricParameter(
			"c2", "", LevelOfMeasurement.RATIO,
			"CoCoMo equation constant. This constant is set by complexity.",
			Double.class);
	public static final MetricParameter C3 = new MetricParameter(
			"c3", "", LevelOfMeasurement.RATIO,
			"CoCoMo equation constant. This constant is set by complexity.",
			Double.class);

	public static final Set> ALL = new HashSet<>();
	static {
		ALL.add(KSLOC);
		ALL.add(PERSON_MONTH);
		ALL.add(PERSON_YEARS);
		ALL.add(SCHEDULED_MONTH);
		ALL.add(SCHEDULED_YEARS);
		ALL.add(TEAM_SIZE);
		ALL.add(COSTS);
		ALL.add(SALARY);
		ALL.add(C1);
		ALL.add(C2);
		ALL.add(C3);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy