50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
import array
|
|
import math
|
|
|
|
# estimate based on:
|
|
# P3D1: 240h ( 8 weeks, 30hrs) -> 200
|
|
# P3D2: 300h (10 weeks, 30hrs) -> 250
|
|
# P3D3: 240h ( 8 weeks, 30hrs) -> 200
|
|
# P3D4: 60h ( 2 weeks, 30hrs) -> 50
|
|
|
|
ph_est = 840
|
|
#ph_est = 700 # if 25hrs instead of 30
|
|
|
|
ph_perc = array.array('f', [0.15, 0.28, 0.42, 0.075, 0.175])
|
|
baseline_mh = round(ph_est / ph_perc[2])
|
|
|
|
def calculate_person_months(man_hours):
|
|
person_months = 114
|
|
return man_hours / person_months
|
|
|
|
def ovza(person_months):
|
|
return math.sqrt(person_months) + 1
|
|
|
|
print("Man-Hour baseline: ", baseline_mh)
|
|
|
|
total_mh = 0
|
|
total_pm = 0
|
|
total_ovza = 0
|
|
|
|
man_hours = array.array("I")
|
|
person_months = array.array("f")
|
|
optimal_fte = array.array("f")
|
|
|
|
for i in range(5):
|
|
man_hours.append(round(baseline_mh * ph_perc[i]))
|
|
total_mh += man_hours[i]
|
|
print("Phase", i+1, "Man-Hours: ", man_hours[i])
|
|
|
|
person_months.append(calculate_person_months(baseline_mh * ph_perc[i]))
|
|
total_pm += person_months[i]
|
|
print("Phase", i+1, "Person-Months:", round(person_months[i],2))
|
|
|
|
optimal_fte.append(ovza(person_months[i]))
|
|
total_ovza += optimal_fte[i]
|
|
print("Phase", i+1, "OVZA :", round(optimal_fte[i],1))
|
|
print("Phase", i+1, "WVZA? :", round(ovza(optimal_fte[i]),1))
|
|
|
|
print("Total Man-Hours: ", total_mh)
|
|
print("Total Person-Months: ", round(total_pm,2))
|
|
print("Total OVZA : ", round(total_ovza,1))
|