diff --git a/school/effort-estimation.py b/school/effort-estimation.py new file mode 100644 index 0000000..9c2ff66 --- /dev/null +++ b/school/effort-estimation.py @@ -0,0 +1,49 @@ +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)) diff --git a/school/videos.csv b/school/videos.csv new file mode 100644 index 0000000..9d8ec60 --- /dev/null +++ b/school/videos.csv @@ -0,0 +1,15 @@ +url,title +https://tube.tugraz.at/portal/watch/b4a71a1a-4cfe-49c9-a685-9b788aac2eb3,"S05E05-Requirements in Agile Software Development" +https://tube.tugraz.at/portal/watch/cc47fe98-c3b6-429c-bb0e-9960fe9d0fd9,"S06E00-Introduction, Learning Goals, and Objectives" +https://tube.tugraz.at/portal/watch/0463afe8-62aa-482c-9452-40a31b58fb56,"S06E01-Introduction in Effort Estimation" +https://tube.tugraz.at/portal/watch/011d8ce6-4f26-468c-9bf5-17e31ca5cb51,"S06E01-Exercise: Introduction in Effort Estimation" +https://tube.tugraz.at/portal/watch/676a25c8-f4b6-46c3-b805-6292a99891fa,"S06E02-Size Effort Estimation of Engineering Processes Activities" +https://tube.tugraz.at/portal/watch/942ba69a-239c-4158-86aa-7cf0b212f724,"S06E02-Exercise: Size Effort Estimation of Engineering Processes Activities" +https://tube.tugraz.at/portal/watch/c3f04544-9590-45e3-a947-dd888581a15c,"S06E03-Detailed Effort Estimation of Engineering Processes Activities" +https://tube.tugraz.at/portal/watch/e66062f9-b374-4d12-b80c-c2140d4b48eb,"S06E03-Exercise: Detailed Effort Estimation of Engineering Processes Activities" +https://tube.tugraz.at/portal/watch/4ffbb3d6-8f5a-44a8-9e46-ef3c6887df17,"S06E04-Effort Estimation of Management Process Activities" +https://tube.tugraz.at/portal/watch/e19ad2cc-9958-4e76-a727-a83bc4dcf733,"S06E04-Exercise: Effort Estimation of Management Process Activities" +https://tube.tugraz.at/portal/watch/3ffbdf16-b0e9-43c0-ae6e-c67499cad4bd,"S06E05-Estimation of Project Costs and Costs for Founding a Start-up" +https://tube.tugraz.at/portal/watch/ecdc314c-119e-4fed-8a8d-ee248ff515c3,"S06E05-Exercise: Estimation of Project Costs and Costs for Founding a Start-up" +https://tube.tugraz.at/portal/watch/d6610343-d4e4-45e8-a703-93e664db5fbe,"S06E06-Software-specific Effort Estimation" +https://tube.tugraz.at/portal/watch/f1a52987-0f9f-4a01-bfd8-d5086463716e,"S06E06-Exercise: Software-specific Effort Estimation" \ No newline at end of file