1
Lecture 12 การประมาณการตนทนของซอฟตแวร
การประมาณการตนทนของซอฟตแวร (Software Cost Estimation) เปนกจกรรมหนงทส าคญทสดในการวางแผนโครงการ (Project Planning) ทมงานจะตองประมาณการคาใชจายทเกดขนทงหมดจกการผลตซอฟตแวร เพอน ามาคดเปนตนทนของซอฟตแวร และน าไปใชประเมนราคาของซอฟตแวรตอไป ตนทนหรอคาใชจายทเกดขนจากการผลตซอฟตแวรมหลายรายการ ไมวาจะเปนคาใชจายทเกดจากการซอวตถดบทวไป คาใชจายในการเดนทาง หรอคาใชจายเบดเตลด แตคาใชจายทส าคญทสด คอ “คาแรง (Effort)” ซงผบรหารโครงการจะตองก าหนดจ านวนของแรงงาน (ทมงาน) ทตองใชในแตละวน (หรอเดอน) เพอการผลตซอฟตแวรจนแลวเสรจ (จงเรยกไดอกอยางหนงวา “ความเพยรพยายาม”) คาใชจายดานแรงงาน เปนองคประกอบหนงของตนทนทมความไมแนนอนสงมาก เนองจากปจจยหลายประการ เชน ประสบการณของทมงาน โครงสรางของโครงการ ความสามารถของแตละบคคล เปนตน ปจจยดงกลาวสงผลใหตองใชเวลาในการด าเนนงานมากขน และท าใหตนทนเพมสงขนตามไปดวย นอกจากน ตนทนทเกดขนบางครงอาจมตนทนแฝง ซงอาจเปนคาใชจายทไมชดเจนเปนสวนประกอบดวย อกทงสภาพแวดลอมในการผลตซอฟตแวรยงมการเปลยนแปลงตลอดระยะเวลาของโครงการ ท าใหตนทนทประมาณการไวในตอนตนมการเปลยนแปลง ผบรหารโครงการตองปรบตนทนอยเสมอ การประมาณการตนทนจงเปนเรองยาก และจ าเปนตองอาศยเทคนคในการประมาณการตาง ๆ เขามาชวย
12.1 การประมาณการตนทนของซอฟตแวร Software Cost Estimation จดท าขนเพอน าไปประเมนราคาซอฟตแวร ซงเปนสงจ าเปนส าหรบการรเรมโครงการ ส าหรบโครงการทตองเขารวมประมล หากบรษทผผลตซอฟตแวรตองการใหชนะการประมล จะตองเสนอราคาซอฟตแวรหรอราคาโครงการทคอนขางต ากวาคแขงขน แตการเสนอราคาทต ากวานนจะตองไมท าใหบรษทขาดทนเมอเทยบกบตนทนทตองจายจรง ในอดต การประเมนราคาซอฟตแวรใชสตรแบบงาย ๆ คอ ใชตนทนบวกดวยก าไรทตองการ แตไมสามารถใชไดกบภาวะเศรษฐกจในปจจบนทมปจจยหลายประการสงผลกระทบตอการก าหนดราคา ท าใหการประเมนราคาแบบเดมคลาดเคลอน โดยอาจประเมนต าหรอสงเกนไป การประเมนราคาซอฟตแวรนนเปนสงส าคญส าหรบทกโครงการ หากประเมนราคาต าท าใหบรษทขาดทน แตหากประเมนสงเกนไปกไมสามารถชนะการประมล หรอไมถกเลอกใหด าเนนงานตอไปได
สงส าคญในการประเมนราคากคอ “ตนทนของโครงการ (Project Cost)” ทไมไดหมายถงเพยงตนทนทใชในการผลตซอฟตแวรหรอตนทนทางตรงเทานน แตยงหมายรวมถงตนทนอน ๆ ดวย โดยตนทนรวมของโครงการผลตซอฟตแวร ประกอบไปดวย 1. คาใชจายดานฮารดแวร ซอฟตแวร และการบ ารงรกษา (Hardware, Software and Maintenance Cost) 2. คาใชจายจากการเดนทาง และการฝกอบรม (Travel and Training Cost) 3. คาใชจายในความเพยรพยายาม (Effort Cost: หรอคาใชจายแรงงาน) ส าหรบคาใชจายทเกดจาก Effort ทใชในการผลตนน นอกจากจะหมายถงคาแรงหรอเงนเดอนบคลากรในโครงการแลว ยงรวมถงคาใชจายอน ๆ เปนสวนประกอบดวย ซงกคอ คาใชจายเบดเตลด (Overhead) เชน คาใชจายในการเตรยมงาน คาใชจายในการบรหารงาน การตดตอสอสาร และสวสดการ เปนตน เมอโครงการเรมด าเนนการ ผบรหารโครงการจะตองมการปรบตนทนและตารางงานอยางสม าเสมอ เพอจดสรรการใชทรพยากรใหเหมาะสมทสด
2
ปจจยทสงผลกระทบตอการก าหนดราคาซอฟตแวร (Software Pricing) ในภาวะปจจบน ไดแก โอกาสในดานการตลาด (Market Opportunity) ขอก าหนดในสญญา (Contractual Term) ความตองการของซอฟตแวรทเปลยนแปลงได (Requirement Volatile) ฐานะทางการเงน (Financial Health) และทส าคญทสดคอ การประมาณการตนทน (Cost Estimation) ซงหากไมมความชดเจนในตวเลขตนทนทประมาณการได จะท าใหราคาซอฟตแวรสงเกนไป อาจท าใหเสยโอกาสในการประมลได
12.2 การประมาณขนาดของซอฟตแวร ส าหรบบางโครงการ ผบรหารโครงการอาจตองใชคาทไดจากการวดประสทธผลในการท างาน (Productivity) ซงหมายถงผลทไดจากการผลตงานของบคลากรในโครงการ ไปค านวณหาตนทนหรอจดตารางด าเนนงาน ตลอดจนอาจน าไปใชในการตดสนใจประเมนกระบวนการหรอการน าเทคโนโลยเขามาใชดวย โดย Productivity วดไดจากจ านวนหนวยของงานทผลตได หารดวยจ านวนเวลาทตองการใชในการผลต (หรอ Effort นนเอง) อาจมหนวยเปน Person-Hours หรอ Man-Day หรอ Man-Month กไดตามตองการ
หากเปนการผลตสนคาทจบตองไดทวไป จ านวนหนวยของงานจะเปนรปธรรมคอจ านวนสนคาทผลตได แตส าหรบการผลตซอฟตแวรทจบตองไมได จ าเปนตองวดจากขนาดของซอฟตแวร (Software Size) ดงนน จงสามารถค านวณ Productivity ในการผลตซอฟตแวรของบคลากร ไดดงน
Productivity = Size / Effort ส าหรบกรรมวธในการวดขนาดของซอฟตแวรนน ม 2 ประเภท คอ วดจากจ านวนบรรทดของซอรสโคด (Line of Code: LoC) และวดจากจ านวนฟงกชนทใชงานได (Function Point: FP) ดงรายละเอยดตอไปน
12.2.1 การนบจ านวนบรรทดของซอรสโคด (Line of Code) เปนวธวดขนาดซอฟตแวรวธแรกทน ามาใชในยคกอน เนองจากภาษาโปรแกรมมงในยคนน มลกษณะการเขยนแบบล าดบเปนบรรทดตอเนองกนไป เชน COBOL, ASSEMBLY, FORTRAN เปนตน การนบจ านวนบรรทดของโคด จงเปนวธวดขนาดซอฟตแวรทงายและใหผลชดเจนทสด แตเนองจากใน 1 โปรแกรมนน นอกจากจะมบรรทดทเปนชดค าสงใหคอมพวเตอรท างานจรง ๆ แลว (Source Line Code) ยงประกอบไปดวยบรรทดทเปน Comment โปรแกรม การประกาศตวแปรและฟงกชน วธการนบจ านวนบรรทดจงแบงออกเปนหลายวธ ดงน
Simple Line Count เปนวธการนบโคดทงายทสด เนองจากนบทกบรรทดทอยใน Source File โดยจะนบรวมบรรทดวางหรอบรรทดทเปน Comment โปรแกรมดวย Physical Lines (LINES) เปนวธการนบจ านวนบรรทดของโคดทยงคงใชกนอยในการบรหารโครงการผลตซอฟตแวร โดยจะนบโคดทกบรรทด (ยกเวนบรรทดทเปนการนยามตวแปรของโคดทเขยนดวย) Physical Line Of Code เปนวธนบจ านวนบรรทด แตไมนบรวมบรรทดวางและบรรทดทเปน Comment โปรแกรม บางครงจงเรยกวธแบบนวา “Source Line Code (sLOC)” Logical Lines of Code (LLOC) วธการนบแบบ Logical มลกษณะคลายกบ Physical แตกตางกนคอ Logical Lines นน จะนบบรรทดทมการเชอมตอกนดวยอกขระ “_” รวมเปนบรรทดเดยว
3
Statements (STMT) วธการนไมใชการนบจ านวนบรรทด แตเปนการนบจ านวนประโยคค าสง โดยภาษาโปรแกรมมงสวนใหญจะมเพยง 1 ประโยคค าสงตอ 1 บรรทด
การวดขนาดซอฟตแวรดวยวธการนบจ านวนบรรทด ปจจบนพบวายงคงถกน ามาใชเปนดชนชวดโครงการ (Project Metric) อย แตดวยวธการนบจ านวนบรรทดในยคกอนนนยงมขอจ ากดอยบาง หากตองเปรยบเทยบโคดทเขยนดวยภาษาโปรแกรมมงทแตกตางกน ดงนน จงพบวามการแบงแยกวธการนบออกเปนหลายแบบขางตน อยางไรกตาม วธการนบจ านวนบรรทดยงแตกตางออกไป ขนอยกบผคดคนวธนบเหลานน ทงน กเพอใหผลทไดจากการนบ สามารถอธบายขนาดของซอฟตแวรไดถกตองและชดเจนทสด (วธนบจ านวนบรรทดขางตน ในทนอางองมาจากเครองมอชวยวดทชอวา “Project Analyzer 7.1” ซงเปนเครองมอจดท าดชนวดโครงการผลตซอฟตแวร) ปจจบน ถงแมวาจะมการพฒนาเครองมอนบจ านวนบรรทดแบบอตโนมตขนมาหลายผลตภณฑกตาม แตทกผลตภณฑไมสามารถรองรบภาษาโปรแกรมมงไดครบถวน หรอบางผลตภณฑสามารถใชไดกบภาษาโปรแกรมมงเพยงภาษาเดยวเทานน (คนหาเครองมอนบจ านวนบรรทดส าหรบระบบปฎบตการ UNIX ไดท http://sarovar.org/projects/kloc สวนระบบปฏบตการ Windows คนทไดท http://www.anologx.com/contents/download/program/kloc.htm สวนเครองมออน ๆ ทใชนบจ านวนบรรทดแบบ Physical และสนบสนนภาษาโปรแกรมมงทหลายหลายเชน C, Java, COBL, Fortran และ C# คนหาไดท http://www.geronesoft.com)
ขอเสยของการประมาณการขนาดของซอฟตแวรดวยการนบจ านวนบรรทด คอ จ านวนบรรทดทนบได ขนอยกบภาษาโปรแกรมมงทใชและคณภาพในการออกแบบโปรแกรม หากภาษาโปรแกรมมงทใชแตกตางกนจะไมสามารถเปรยบเทยบกนได บางภาษาตองเขยนโคดหลายบรรทดในการสรางฟงกชนงานเดยว กบภาษาโปรแกรมมงอนทเขยนเพยงไมกบรรทด หากออกแบบโปรแกรมไดด อาจท าใหจ านวนบรรทดของโคดนอยกวาการออกแบบโปรแกรมในลกษณะอนได ดงนนคาทไดจากการนบจ านวนบรรทด จงไมสามารถน ามาใชประมาณขนาดของซอฟตแวรไดอยางสมบรณ ยกตวอยางโปรแกรม “Hello World” ทเขยนจากภาษาโปรแกรมมงทแตกตางกน ดงน
C Programming Language COBOL Programming Language #include<stdio.h> #include<conio.h> void main() { printf(“Hello, World”); getch(); }
100 IDENTIFICATION DIVISION. 200 PROGRAM-ID. EXAMHELLO. 300 ENVIRONMENT DIVISION. 400 CONFIGURATION SECTION. 500 SOURCE-COMPUTER. KTP. 600 OBJECT-COMPUTER. KTP. 700 DATA DIVISION. 800 FILE SECTION. 900 PROCEDURE DIVISION. 1000 MAIN-DISPLAY SECTION. 2000 BEGIN. 3000 DISPLAY “Hello World” LINE 10 POSITION 10 4000 STOP RUN.
4
เมอประมาณการขนาดของซอฟตแวรไดแลว กสามารถน ามาค านวณหาประสทธผลในการผลตซอฟตแวรได โดยน าขนาดของซอฟตแวร (ในทนคอจ านวนบรรทดของโคดทนบได) มาหารดวย Effort ยกตวอยางดงน
ตวอยางท 12.1 แสดงการค านวณหา Productivity ของโปรแกรมเมอร
วเคราะห ออกแบบ เขยนโปรแกรม ทดสอบ จดท าเอกสาร โคด Assembly 4 สปดาห 6 สปดาห 10 สปดาห 12 สปดาห 2 สปดาห โคดภาษาระดบสง 4 สปดาห 6 สปดาห 5 สปดาห 7 สปดาห 2 สปดาห
Size Effort Productivity โคด Assembly 6,000 บรรทด 34 สปดาห 705 บรรทด/เดอน โคดภาษาระดบสง 2,500 บรรทด 24 สปดาห 416 บรรทด/เดอน
Effort ตองหารดวย 4 กอน เพอท าใหหนวยเปนเดอน
LoC ถกคดคนขนในยคแรกของภาษาระดบสง เชน COBOL, FORTRAN เปนตน แตปจจบน ภาษาโปรแกรมมงถกพฒนาไปอยางมาก ท าใหเกดปญหาความไมเทาเทยมกนของผลจากการวดประสทธผลการผลตงานซอฟตแวร เนองจากภาษาโปรแกรมมงทโปรแกรมเมอรใชแตกตางกนมาก ในงานเดยวกนทใหผลลพธเหมอนกน เมอเขยนดวยภาษาโปรแกรมมงทแตกตางกน จ านวนบรรทดจะแตกตางกนมาก ดงตวอยางท 12.1 ท าใหตองมการคดคนวธการวดขนาดของซอฟตแวรขนมาใหม นนคอ “นบจ านวนฟงกชน (Function Point: FP)”
12.2.2 การนบจ านวนฟงกชน (Function Point: FP) การนบจ านวนฟงกชน (Function Point: FP) เปนการวดขนาดของซอฟตแวรดวยการนบจ านวนฟงกชนการท างานของโปรแกรมจากขอก าหนดความตองการของซอฟตแวร ดงนน วธการนบจ านวนฟงกชนจงลดปญหาดานความแตกตางของภาษาโปรแกรมมงทใช และความแตกตางในเทคโนโลยดานอน ๆ ดวย วธการนบจ านวนฟงกชนถกปรบปรงโดยคณะกรรมการก าหนดและรวบรวมกรรมวธในการวดขนาดซอฟตแวรดวยฟงกชนพอยท (International Function Point User Group: IFPUG) โดยมสตรการค านวณดงน
FP = UFP * VAF จากสตรการค านวณ จ านวนของฟงกชนจะหาไดจากคา FP ทยงไมไดถกปรบแตง (Unadjusted Function Point: UFP) คณกบคาปจจยคณลกษณะของระบบ (Value Adjustment Factor: VAF) ดงรป
5
การน าคาปจจยคณลกษณะของระบบมาค านวณดวยนน เนองจากคณลกษณะเดนของแตละระบบแตกตางกน ท าใหความยากงายในการผลตซอฟตแวรแตกตางกน หากไมน าปจจยเหลานมาค านวณดวย คา FP ทไดในแตละระบบจะไมเทาเทยมกน ท าใหคา FP ไมสามารถบงบอกถงประสทธผลในการท างานของโปรแกรมเมอรแตละคน ไดอยางแทจรง จากสตรการค านวณ ในทนขอแบงขนตอนการค านวณออกเปน 3 ขนตอน คอ ค านวณหา FP ทยงไมไดปรบแตง (UFP) ค านวณคาปจจยคณลกษณะของระบบ (VAF) และค านวณคา FP ทปรบแตงแลว
1. ค านวณหาคา FP ทยงไมไดปรบแตง (UFP) กอนอนตองแบงประเภทของฟงกชนเสยกอน โดยฟงกชนการท างานทตองนบ แบงเปน 5 ประเภท ไดแก Internal Logical Files (ILF), External Interface Files (EIF), External Inputs (EI), External Outputs (EO) และ External Queries (EQ) แสดงรายละเอยดดงตารางท 12.1
ตารางท 12.1 แสดงรายละเอยดของฟงกชนแตละประเภท
ฟงกชน รายละเอยด External Inputs (EI) ขอมลทรบเขามาในระบบ (อาจเปนขอมลทางธรกจหรอ
ขอมลควบคม) เพอน าไปอพเดทขอมลใน ILF เชน ขอมลในกระบวนการ เพม ลบ แกไข ขอมล เปนตน
External Outputs (EO) ขอมลทเปนผลลพธจากการประมวลผลขอมลทไดรบจากภายในระบบ ใหนบการแสดงผลขอมลทมรปแบบแตกตางกน
External Queries (EQ) กระบวนการดงขอมลและประมวลผลเพอแสดงผลตอผใช (คอ Query ขอมลนนเอง)
Internal Logical Files (ILF) ไฟลทเกยวของกบขอมลทอยในระบบตลอดชวงอายของระบบ และเปนไฟลทมกจะถกบ ารงรกษาหรอปรบปรงดวยขอมลทไดรบจากภายนอก (EI) ใหนบรวมเรคคอรดทท าหนาทเทยบเทากบไฟลดวย
External Interface Files (EIF) ไฟลทเกยวของกบขอมลทใชเพอการอางองเทานน และใชรวมกบระบบอน EIF เปนไฟลทถกเรยกใชโดยระบบทจะพฒนา แตจะบ ารงรกษาหรอถกสรางโดยระบบอน
ฟงกชนแตละประเภทเกดจากการท ารายการขอมล (Transaction) ของผใช จงมความซบซอนแตกตางกนตามจ านวนของขอมล (Data Element Type: DET) เรคคอรด (Record Element Type: RET) และไฟลทเกยวของ (File Type Reference: FTR) ทประกอบขนเปน Transaction แตละรายการ ดงนน การนบฟงกชนแตละประเภท จงตองนบทจ านวนของ DET, RET และ FTR ทเกยวของกบฟงกชนแตละประเภท แลวน ามาเทยบกบตารางเกณฑระดบความซบซอนของฟงกชน ซงแบงเปน 3 ระดบ คอ ระดบต า (Low) ปานกลาง (Average) และสง (High) ในฟงกชนแตละประเภทจะถกวดขนาดความซบซอนออกมาไดหลายระดบ ใหนบวาแตละฟงกชนมระดบ ต า กลาง และสงจ านวนเทาใด แลวน ามาคณกบตวถวงน าหนกของแตละระดบในฟงกชนแตละประเภท ตามตารางตวถวงน าหนก จากนน หาผลรวมฟงกชนทงหมดทนบไดกจะไดคา UFP (คา FP ทยงไมไดปรบแตง)
6
ตารางท 12.2 แสดงตารางเกณฑระดบความซบซอนของฟงกชนแตละประเภท ตารางถวงน าหนก และการค านวณหาคา UFP
จากตวอยางในตาราง สมมต ขอมลสนคาทจะน าเขาสระบบ (EI) เกยวของกบไฟล 2 ชนด (FTR) และขอมลสนคานประกอบไปดวยฟลดขอมลไมเกน 15 ฟลด (DET) เมอเทยบกบตาราง EI แลวพบวาฟงกชน EI นมระดบความซบซอนอยท Average แตขอมลทจะน าเขาสระบบทงหมดม 10 ชนด (คอ นอกจากขอมลสนคาแลวยงมขอมลอน ๆ ดวย) เมอประเมนแลวพบวา อยในระดบ “Low” 2 ชนด อยในระดบ “Average” 5 ชนด และระดบ “High” 3 ชนด เมอน าไปคณกบตวถวงน าหนกแลวรวมกนทงหมดไดคาความซบซอนของ EI เทากบ 44 จงด าเนนการหาคาความซบซอนของขอมลชนดตอไปจนครบเพอหาผลรวม UFP ของขอมลทกชนด
2. ค านวณหาคาปจจยคณลกษณะของระบบ (VAF) กอนค านวณหาคา FP สดทาย ใหค านวณคาปจจยทสงผลตอความแตกตางกนของแตละระบบ ปจจยดงกลาวคอ คณลกษณะเดนของระบบทงหมด 14 ดานตามขอก าหนดความตองการทลกคาตองการ โดยใหก าหนดระดบอทธพลของคณลกษณะในแตละดานวามความเกยวของกบระบบมากนอยเพยงใด โดยมคาตงแต 0 (ไมเกยวของ) ถง 5 (เกยวของมาก)
7
ตารางท 12.3 คณลกษณะเดนของระบบทง 14 ดาน คาทประเมนตงแต 0 (ไมเกยวของ) ถง 5 (เกยวของมาก)
คณลกษณะ คา คณลกษณะ คา 1 การตดตอสอสารขอมล (Data
Communication) 8 การปรบปรงขอมลแบบออนไลน (Online
Update)
2 การประมวลผลขอมลแบบกระจาย (Distribution Data Processing)
9 ความซบซอนของการประมวลผล (Complex Processing
3 ประสทธภาพของระบบ (Performance) 10 การน าไปใชซ าได (Reusability) 4 การแกไขคาของระบบ (Configuration) 11 ความงายในการตดตง (Installation
Ease)
5 ปรมาณรายการขอมล (Transaction) 12 ความงายในการด าเนนงาน (Operational Ease)
6 การปอนขอมลเขาสระบบแบบออนไลน (Online Data Entry)
13 การใชงานไดหลายไซต (Multiple Sites)
7 ประสทธภาพการใชงานของผใช (End-user Effciency)
14 รองรบการเปลยนแปลงความตองการของผใช (Change Requirement)
จากนน ใหรวมระดบอทธพลทง 14 ดานเขาดวยกน แลวน ามาค านวณหา VAF ตามสตรค านวณ ดงน
VAF = 0.65 + [0.01 * ผลรวมคาคณลกษณะ 14 ดาน]
3. ค านวณหาคา FP ทปรบแตงแลว เมอค านวณหา UFP และ VAF แลว น ามาคณกน จะไดผลลพธเปนคา FP ทปรบแตงตามคณลกษณะเดนของระบบ ตามสตร FP = UFP * VAF
ทง LoC และ FP คอ วธวดขนาดของซอฟตแวร โดยสามารถน าไปค านวณหา Productivity และ Effort ตอไปได อยางไรกตาม สตรค านวณเพอประมาณการ Effort นนบางครงอาจตองการใชขนาดของซอฟตแวรทเปน LoC ดงนน คา FP ทหาได อาจตองแปลงไปเปน LoC ซงมตารางเปรยบเทยบ ดงน
ตารางท 12.4 ตารางเปรยบเทยบคา FP เพอแปลงไปเปน LoC ตามมาตรฐานของ QSM (Quantitiative Software Management: www.qsm.com)
ภาษาโปรแกรมมง LoC ตอ 1 FP Average Medium Low High
Access 35 38 15 47 Ada 154 - 104 205 ASP 59 62 32 127 C 148 104 9 704 C++ 60 53 29 178 C# 59 59 51 66 Clipper 38 39 27 70
8
COBOL 73 77 8 400 FoxPro 32 35 25 35 HTML 43 42 35 53 Informix 42 31 24 57 J2EE 61 50 50 100 Java 60 59 14 97 JavaScript 56 54 44 65 JSP 59 - - - Oracle 38 29 4 122 Perl 60 - - - PL/1 59 59 22 92 PL/SQL 46 31 14 110 Powerbuilder 30 24 7 105 SQL 39 35 15 143 VBScript 45 34 27 50 Visual Basic 50 42 14 276
12.3 เทคนคการประมาณการตนทนและ Effort การประมาณการตนทน และ Effort ทดจะตองใกลเคยงกบความเปนจรง แตการประมาณการใหใกลเคยงกบคาจรงนนเปนสงทท าไดยาก จงไดมการคดคนเทคนคในการประมาณการตนทนและ Effort ขนมาหลายเทคนค ดงตวอยางตอไปน
ตารางท 12.5 ตารางแสดงตวอยางเทคนคในการประมาณการตนทนและ Effort
เทคนค รายละเอยด Algorithm Cost Modeling การใชแบบจ าลองทางคณตศาสตรเพอการประมาณการ โดยแบบจ าลองนนถกพฒนา
จากการรวบรวมขอมลตนทนทใชจรงในอดตทมความสมพนธกบหนวยวดบางอยางของซอฟตแวร เชน ขนาดของซอฟตแวร เพอใชเปนตวแปรทสงผลตอการประมาณการตนทน
Expert Judgment การใชผเชยวชาญประมาณการ โดยใชความเหนของผเชยวชาญ เปรยบเทยบกบขอมลในอดต ปรกษา และตกลงก าหนดตนทนรวมกน
Estimation by Analogy การประมาณการดวยการวเคราะห โดยอาศยขอมลจากโครงการในธรกจเดยวกนทด าเนนการประสบความส าเรจแลวมาเปนขอมลหลกในการวเคราะห
Parkinson’s Law กฎของพารคนสน คอ การกระจายงานใหกบบคลากรตามระยะเวลาทมอย เชน ถาตองสงมอบซอฟตแวรภายใน 12 เดอน และมบคลากรอยเพยง 5 คน จะตองจดสรรบคลากรทง 5 ใหท างานไดเทากบ 60 Person-Month
Pricing to Win การประมาณการเพอใหชนะการประมล กลาวคอ ตองประมาณการตนทนใหต าทสด เพอจะไดก าหนดราคาซอฟตแวรใหต ากวาคแขงขน โดยไมสนใจวาการประมาณการนจะถกตองหรอไม
ตวอยางเทคนคในตารางขางตน เปนเทคนคทอาศยความรและประสบการณหรอขอมลในอดตเปนสวนใหญ แตโครงการในปจจบนนนมความแตกตางจากในอดตเปนอยางมาก วธการดงกลาวจงคลาดเคลอนสง ในทนจงขอ
9
กลาวถงการประมาณการดวยแบบจ าลอง หรอสตรทางคณตศาสตรทเรยกวา “COCOMO Model” ซงมการน าปจจยทสงผลตอตนทนหลายประการมาค านวณดวย
12.4 เทคนคการประมาณการแบบ COCOMO COCOMO (Constructive Cost Model) เปนแบบจ าลองประมาณการ Effort ตนทน และจดตารางการท างาน ทคดคนโดย Dr. Barry Boehm ในป ค.ศ. 1981 โดยการพจารณาจากขนาดของซอฟตแวรและคณลกษณะของซอฟตแวรทผใชตองการ เนองจากความซบซอนและคณลกษณะของซอฟตแวรเรมมมากขน อนเปนผลมาจากแนวทาง เครองมอ และเทคโนโลยทใชผลตซอฟตแวรนนถกพฒนาขดความสามารถมากขน ไมวาจะเปนเทคโนโลยการออกแบบเชงวตถ (Object-oriented Design: OOD) การผลตซอฟตแวรเปนคอมโพเนนท รวมถงเครองมอทดสอบโปรแกรมแบบอตโนมต การประมาณการตนทนและ Effort ดวยแบบจ าลอง COCOMO นน เปนการค านวณจากขนาดของซอฟตแวร รวมกบปจจยแวดลอมอน ๆ ทเกยวของ เชน ความแนนอนของกระบวนการ และความสามารถในการผลตซอฟตแวรของทมงาน ความยดหยน ความเสยง และวธจดการกบความเสยง เปนตน นอกจากน แบบจ าลอง COCOMO ยงมการค านวณแบบเอกซโปเนนเชยล (Exponential) เนองจาก Dr.Barry Boehm พบวา Effort กบขนาดของซอฟตแวรมความสมพนธกนแบบไมเปนเสนตรง กลาวคอ Effort แปรผนตามขนาดของซอฟทแวรแบบยกก าลง เชน หากเพมขนาดของซอฟตแวร นอกจากจะท าใหจ านวนบคลากรในทมงานเพมขนแลว ยงอาจท าใหคาใชจายอน ๆ เพมขนตามไปดวย ไมวาจะเปนคาใชจายในการตดตอสอสาร คาใชจายในการบรหาร ตลอดจนคาใชจายในการรวมระบบ (เรยกคาใชจายเหลานวา “Overhead”) เปนตน นอกจากขนาดของซอฟตแวรและปจจยแวดลอม ทสงผลตอ Effort ทงการเพมขนหรอลดลงของ Effort แลว ยงมปจจยอนทตองพจารณาเพมเตม เชน คณลกษณะของซอฟตแวร คณลกษณะของ Platform คณลกษณะของทมงาน และคณลกษณะของการบรหารโครงการ เปนตน แลวใหน าหนกกบคณลกษณะดงกลาวเพอปรบคาจ านวน Effort ทเหมาะสมทสด แบบจ าลอง COCOMO ถกพฒนาเปนเวอรชน 2 คอ COCOMO II ตงแตป ค.ศ. 1997 โดยรวบรวมขอมลจากโครงการทงหมด 161 โครงการ จ าแนกตามขนาดของโครงการ และใชหลกการวเคราะหทางสถต (Bayesian Statistical Analysis) วเคราะหขอมลของโครงการทประสบความส าเรจเหลานน รวมทงความคดเหนของผเชยวชาญตาง ๆ ดวย COCOMO II แบงแบบจ าลองออกเปน 3 ชนด เพอใชประมาณการในระยะตาง ๆ ของกระบวนการพฒนาซอฟตแวร 1. Application-composition Model เหมาะกบการผลตซอฟตแวรตามแนวทางคอมโพเนนท (Component-based Development) และอยในระยะสรป Concept ในการด าเนนงาน ใช Object Point แทนขนาดของซอฟตแวร 2. Early Design Model ใชประมาณการในระยะกอนการออกแบบซอฟตแวร แตหลงจากการก าหนดความตองการเรยบรอยแลว ใชคา FP แทนขนาดของซอฟตแวร 3. Post-architecture Model ใชประมาณการในระยะหลงการออกแบบซอฟตแวร เปนการประมาณการอกครงเพอความถกตองของคาประมาณการทได
10
อยางไรกตาม ในระบบงานหรอโครงการขนาดใหญ อาจแบงการประมาณการออกเปนสวนยอย โดยในแตละสวนสามารถใชเทคนคในการประมาณการทแตกตางกนได จากนนจงน าผลทไดในแตละสวนมารวมกน โดยทผบรหารโครงการไมจ าเปนตองประเมนทกสวนกได ขนอยกบความเหมาะสมและขอตกลง
Application-composition Model Application-composition Model เปนแบบจ าลอง COCOMO II ทเหมาะกบการผลตซอฟตแวรดวยแนวทางคอมโพเนนท โดยแตละคอมโพเนนทสามารถอธบายแทนดวย Object Point ได นนคอ ขนาดของซอฟตแวรจะตองนบเปนออบเจกพอยท เปนการนบจ านวนออบเจกต ทหมายถงคอมโพเนนท 3 สวน ไดแก หนาจอ (Screen) รายงาน (Report) และโมดลทเขยนดวยภาษาโปรแกรมมงในยค 3GL (Third Generation Language) ขนไป ดงนน ออบเจกตในทนจงตางจากออบเจกตตามการนยามของเทคโนโลยเชงวตถ (Object-oriented Technology) ออบเจกตคอมโพเนนทเหลาน จะมจ านวนออบเจกตพอยทแตกตางกน ขนอยกบระดบความซบซอน โดยแบงออกเปน 3 ระดบ แตละระดบมคะแนนความซบซอน ดงตารางตอไปน
ตารางท 12.6 แสดงระดบความซบซอนของออบเจกตพอยท
งาย (Simple) ซบซอน (Complex) ซบซอนมาก (Very Complex) Screen 1 2 3 Reports 2 5 6 3GL Modules 4 10 -
กรณคอมโพเนนทของซอฟตแวรถกออกแบบใหมการน ากลบมาใชใหม และมการใชงานไลบรารดวย จะตองน าอตราการน าไปใชใหมมาลบออกจากจ านวนออบเจกตพอยททนบไดทงหมด ผลลพธทไดคอ คาของออบเจกตพอยททถกปรบลดแลว หรอเรยกวา “Revised Object Point (ROP)” มสตรค านวณ ดงน
Revised Object Point (ROP) = Object Point x [(100 - %reuse)/100] จากนนใหน า ROP ทไดไปค านวณหา Effort ดงน
MME (Man Month Effort) = [ROP / Productivity Constant] โดย Effort ทได จะมหนวยเปน Man-Month หาไดจากอตราสวนระหวาง ROP กบคาคงทของประสทธผลในการผลตซอฟตแวร (Productivity Constant) ซงคดจากประสบการณและความสามารถของทมงาน มคาคงทดงตารางตอไปน
ตารางท 12.7 แสดงคาคงทของประสทธผลในการผลตซอฟตแวร โดยพจารณาจากระดบประสบการณและความสามารถของทมงาน
ระดบประสบการณและความสามารถ
ต ามาก (Very Low)
ต า (Low)
ปานกลาง (Nominal)
สง (High)
สงมาก (Very High)
Productivity Constant (NOP per Month)
4 7 13 25 50
11
ประสทธผลในการผลตซอฟตแวร จะมหนวยเปนจ านวนของออบเจกตพอยทตอเดอน (Number of Object Point per Month) ยกตวอยางเชน ในระยะการกอนการด าเนนงาน โครงการ ก นบจ านวนออบเจกตพอยทได 40 OP มอตราการน าโคดไปใชใหม 10% และเมอประเมนประสบการณและความสามารถของทมงานแลว พบวาอยในระดบปานกลาง(Nominal/Normal) สามารถค านวณหา Effort ทตองการใชในโครงการได ดงน
𝑅𝑂𝑃 = 40 × 100 − 10
100= 40 × 0.90 = 36
𝑀𝑀𝐸 𝑀𝑎𝑛𝑀𝑜𝑛𝑡𝐸𝑓𝑓𝑜𝑟𝑡 = 36
13= 3 𝑀𝑎𝑛 𝑀𝑜𝑛𝑡𝑠
การประมาณการ Effort ดวยแบบจ าลองชนดน นอกจากจะใชในระยะการหา Concept ในการด าเนนงานแลว ยงสามารถใชประมาณการจ านวนแรงงานจากโปรโตไทปทสรางขนมา เพอเสนอลกคา ในกรณทขอมลความตองการของลกคายงไมชดเจนไดอกดวย
Early Design Model เปนแบบจ าลอง COCOMO II ทใชในระยะกอนการออกแบบซอฟตแวร โดยมสตรค านวณพนฐาน ดงน
𝑀𝑀𝐸 = 𝐴 × (𝑆𝑖𝑧𝑒)𝐵
โดยท MME คอ Effort ทมหนวยเปน Man-Month (Man Month Effort) A คอ คาคงทของประสทธผลในการผลตซอฟตแวร คดทระดบปานกลาง (Nominal) B คอ คาของปจจยทสงผลกระทบให Effort และขนาดแปรผนตรงตอกนแบบไมเปน เสนตรง (Exponential) เรยกปจจยเหลานวา “Scaling Factor” หรอ “Economics Scale” หรอ “Cost Driver” ในทนขอเรยกวา “ปจจยขบ” Size คอ ขนาดของซอฟตแวร มหนวยเปน KLoC (Kilo of Line of Code = Loc x 1000)
ตามทเคยกลาวไปแลววา COCOMO II ไดน าปจจยอน ๆ มาค านวณดวย เนองจากพบวา ปจจยดงกลาวท าใหขนาดและ Effort แปรผนตอกนแบบไมเปนเสนตรง ปจจยดงกลาวเรยกวา “Scaling Factor” หรอ คาของปจจยขบ แสดงแทนดวย B จากสตรค านวณ จะสงเกตวา B เปนเลขชก าลงของขนาดซอฟตแวร ดงนน B จะสงผลให Size of Software เปลยนแปลง โดยจะสงผลให Effort เปลยนแปลงไปดวย ดงน - ถา B = 1 หมายถง Scaling Factor ไมสงผลกระทบตอขนาดซอฟตแวร (ไมท าใหขนาดซอฟตแวรเปลยนแปลง) - ถา B > 1 หรอ B < 1 หมายถง Scaling Factor สงผลกระทบใหขนาดของซอฟตแวรเปลยนแปลงขนหรอลง ปจจยขบทน ามาใชใน Early Design Model มทงหมด 5 ปจจย โดยเบองตนจะตองประเมนระดบและใหคะแนนแตละปจจย (Rating) จากนนหาผลรวมของคะแนนทประเมนไดในปจจยทงหมด แลวน ามาค านวณหาคาของปจจยทแทนดวย B จากสตรค านวณ ดงน
12
𝐵 = 0.91 + 0.01( 𝑅𝑎𝑡𝑖𝑛𝑔𝑠)
5
1
ระดบในการประเมนปจจยทง 5 ม 4 ระดบ ไดแก ต ามาก(Very Low) ต า (Low) ปานกลาง (Nominal) และสง (High) แตละระดบมคะแนน ดงตารางตอไปน
ตารางท 12.8 แสดงคะแนนของปจจยแตละระดบ (Value of Rating for Scaling Factor)
Factor Code ต ามาก (Very Low)
ต า (Low)
ปานกลาง (Nominal)
สง (High)
Factor Name
PREC 6.20 4.96 3.72 2.48 Precedentness FLEX 5.07 4.05 3.04 2.03 Flexibility
RESL 7.07 5.65 4.24 2.83 Risk Resolution TEAM 5.48 4.38 3.29 2.19 Team Cohesion PMAT 7.80 6.24 4.68 3.12 Process Maturity
ส าหรบความหมายของ ปจจยขบ ทง 5 มดงน
ตารางท 12.9 แสดงปจจยขบส าหรบ COCOMO II ในระยะ Early Design
ปจจย รายละเอยด PREC ความเหมอนของซอฟตแวรใหมกบซอฟตแวรเดมทเคยพฒนามาแลว (เหมอนมาก คะแนนนอยอยในระดบสง แปลวา
ผลกระทบนอย แตถาเหมอนนอย อยในระดบต า คะแนนสง เพราะสงผลกระทบมาก) FLEX การวดระดบความยดหยนในการบรหารจดการและด าเนนโครงการ (เชน การใชเครองมอ) RESL การวดระดบความสามารถในการจดการหรอควบคมความเสยงขององคกรหรอทมงานของโครงการ TEAM การวดระดบของการท างานเปนทมขององคกรหรอทมงานโครงการ PMAT การวดระดบวฒภาวะความสามารถขององคกร หรอทมงานโครงการ ตงแตระดบต าสดคอ 1 จนถงระดบสงสดคอ 5
ตวอยางท 12.2 สมมตวา ปจจยขบทง 5 ขอ ถกจดอนดบใหอยในระดบต ามาก (Very Low) ทงหมด และก าหนดใหขนาดของซอฟตแวรทนบแบบฟงกชนพอยทและแปลงมาเปน LoC แลวมคาเทากบ 10 KLoC สามารถค านวณหาแรงงานโดยประมาณ บนพนฐานของคาคงทของประสทธผลในการผลตทระดบปกต (Nominal) ไดดงน หาคาระดบคะแนนรวมของปจจยขบ หรอคา B กอน ดงน
B = 0.91 + 0.01 x (6.20 + 5.07 + 7.07 +5.48 + 7.80) = 0.91 + 0.01 x 31.62 = 1.2262
สงเกต B มคามากกวา 1 ท าใหทราบในเบองตนวา ปจจยขบสงผลกระทบตอขนาดของซอฟตแวรและ Effort แนนอน ตอไปค านวณหา Effort โดยประมาณ ดงน
MME = A x (Size)B = 13 x (10)1.2262 ** A = 13 เทยบจากตารางท 12.7 ** = 13 x 16.8344 = 218.84 หรอ ประมาณ 219 Man Month
13
ตวอยางท 12.3 ในทางตรงกนขามกบตวอยางท 12.2 สมมต ปจจยขบทง 5 ขอ ถกจดอนดบใหอยในระดบสง (High) ทงหมด และก าหนดใหขนาดของซอฟตแวรทนบแบบฟงกชนพอยทมคาเทาเดม สามารถค านวณหาแรงงานโดยประมาณ บนพนฐานของคาคงทของประสทธผลในการผลตทระดบปกต (Nominal) ไดดงน
B = 0.91 + 0.01 x (2.48 + 2.03 + 2.83 + 2.19 + 3.12) = 0.91 + 0.01 x 12.65 = 1.0365 หรอประมาณ 1.04
MME = A x (Size)B = 13 x (10)1.04 ** A = 13 เทยบจากตารางท 12.7 ** = 13 x 10.9647 = 142.54 หรอ ประมาณ 143 Man Month
จะเหนวา คา B มากกวา 1 เชนกน แตมากกวาเพยงเลกนอยเทานน ดงนน จงสงผลใหขนาดของซอฟตแวรเพมขน เพยงเลกนอย กลาวคอ เพมจาก 10 เปน 10.9647 ท าใหใชแรงงานหรอความพยายามโดยประมาณเพยง 143 Man Month
Post Architecture Model ในระยะหลงการออกแบบ จะพบวานอกจากปจจยขบทง 5 ในระยะกอนออกแบบ ทมผลตอ Effort ทตองใชโดยประมาณแลว ยงมปจจยทมผลกระทบรวมดวย ทงในดานคณลกษณะของผลตภณฑหรอซอฟตแวร (Product Factor) ดาน Platform (Platform Factor) ดานบคลากร (Personnel Factor) และดานโครงการ (Project Factor) รวมทงสน 16 ปจจย เรยกปจจยเหลานวา “Effort Multiplier” ดงนน จงตองปรบคา Effort โดยประมาณทค านวณไดจากระยะกอนออกแบบใหมเปน MME (Modified) ดวยการประเมนระดบการสงผลกระทบตอ Effort ของทง 16 ปจจย ออกมาเปนคาคะแนนในแตละระดบ ไดแก ต ามาก (Very Low) ต า (Low) ปานกลาง (Nominal) และสง (High) น าคะแนนระดบทประเมนไดทง 16 มาคณกน เพอใหไดเปน Effort Multiplier คอ Effort ตามสตรค านวณตอไปน
MME (Modified) = MME x (EM) โดย EM คอ Effort Multiplier เปนผลคณของปจจยทสงผลใหจ านวน Effort เปลยนแปลงไป นนคอ EM1 x EM2 x Em3 x ….. x EM16 ส าหรบปจจยในระยะหลงการออกแบบ ทง 16 ปจจย จะแบงออกเปน 4 กลม ดงน
14
ตารางท 12.10 แสดงปจจยส าหรบ COCOMO II ในระยะ Post Architecture
กลมปจจย ปจจย รายละเอยด ผลตภณฑซอฟตแวร (Product)
RELY: Software Reliability ระดบความนาเชอถอและไววางใจไดของซอฟตแวรทตองการ DATA: Database Size ขนาดของฐานขอมล CPLX: Software Complexity ระดบความซบซอนของซอฟตแวร RUSE: Required Reusability ความตองการในการน าโคดไปใชซ า DOCU: Documentation ระดบมาตรฐานของเอกสาร
แพลตฟอรม (Platform)
TIME: Time Constraint on Execution ขอจ ากดดานเวลาในการรนซอฟตแวร STOR: Main Storage Constraint ขอจ ากดดานเนอทการเกบขอมล PVOL: Platform Volatility ความถในการเปลยนแพลทฟอรมหรอระบบปฏบตการ
บคลากร (Personnel)
ACAP: Analyst Capability ความสามารถของนกวเคราะหระบบ PCAP: Programmer Capability ความสามารถของโปรแกรมเมอร PCON: Personnel Continuity ความถในการเปลยนแปลงพนกงานหรอทมงาน AEXP: Analyst Experience ประสบการณของนกวเคราะหระบบ PEXP: Programmer Experience ประสบการณของโปรแกรมเมอร LTEX: Language and Tools Experience
ประสบการณในการใชภาษาโปรแกรมมงและเครองมอ
โครงการ (Project)
TOOL: Use of Software Tools การใชเครองมอในการบรหารโครงการ SITE: Site Environment จ านวนของไซตงาน
เมอประเมนระดบการสงผลกระทบตอ Effort ของทง 16 ปจจยจนครบแลว ใหน าระดบทประเมนได มาเทยบเปนคะแนน ตามเกณฑในตารางตอไปน
ตารางท 12.11 แสดงระดบการสงผลกระทบตอ Effort ของปจจยทง 16 ประการในระยะ Post Architecture
Factor Levels and Ratings ต ามาก (Very Low) ต า (Low) ปานกลาง (Nominal) สง (High)
Product Factor 1. RELY 0.82 0.92 1.00 1.10 2. DATA 0.80 0.90 1.00 1.14 3. CPLX 0.73 0.87 1.00 1.17 4. RUSE 0.85 0.95 1.00 1.07 5. DOCU 0.81 0.91 1.00 1.11 Platform Factors 1. TIME - - 1.00 1.11 2. STOR - - 1.00 1.05 3. PVOL - - 1.00 1.15 Personnel Factors 1. ACAP 1.42 1.19 1.00 0.85 2. PCAP 1.34 1.15 1.00 0.88 3. AEXP 1.22 1.10 1.00 0.88 4. PEXP 1.19 1.09 1.00 0.91 5. LTXP 1.20 1.09 1.00 0.91
15
6. PCON 1.29 1.12 1.00 0.90 Project Factors 1. TOOL 1.17 1.09 1.00 0.90 2. SITE 1.22 1.09 1.00 093 ตวอยางท 12.4 จากตวอยางท 12.2 และ 12.3 เปนการหาคา MME (Effort) โดยประมาณในระยะกอนการออกแบบ เมอมาถงระยะหลงการออกแบบ ตองน าคา Effort ทไดมาปรบคาใหมตามปจจยเพมเตม 16 ปจจย โดยยงคงใหขนาดของซอฟตแวรมคาเทากบ 10 KLoC เชนเดม แตในตวอยางน จะค านวณหา MME ใน 2 กรณ คอ กรณท 1 ปจจยขบทง 16 ประการอยในระดบ “Very Low” และกรณท 2 คอ ปจจยขบทง 16 ประการอยในระดบ “High” กรณท 1 ปจจยขบทง 16 ประการ ถกจดใหอยในระดบ “Very Low” ทงหมด Effort Multiplier กรณท 1 = EM1 x EM2 x ….. EM16 = 0.82 x 0.80 x 0.73 x 0.85 x 0.81 x 1.42 x 1.34 x 1.22 x 1.19 x 1.20 x 1.29 x 1.17 x 1.22 = 2.01
กรณท 2 ปจจยขบทง 16ประการ ถกจดใหอยในระดบ “High” ทงหมด Effort Multiplier กรณท 2 = EM1 x EM2 x ….. EM16 = 1.10 x 1.14 x 1 17 x 1.07 x 1.11 x 1.11 x 1.05 x 1.15 x 0.85 x = 0.88 x 0.88 x 0.91 x 0.91 x 0.90 x 0.90 x 0.93 = 0.96 ดงนน MME (Modified) ของทง 2 กรณ ค านวณได ดงน
MME (Modified) = MME x (EM)
MME (จากตวอยางท 12.2) = 219 x 2.01 440 Man Month
MME (จากตวอยางท 12.3) = 143 x 0.96 137 Man Month
หากตองการค านวณคาใชจายของ Effort (Man Month Cost) โดยประมาณ ใหน า MME โดยประมาณคณดวยอตราคาแรงตอคน (Man Month Rate)
สรป การประมาณการตนทนของซอฟตแวร (Software Cost Estimation) จดท าขนเพอน าตนทนทประมาณการไดมาประเมนราคาโครงการหรอประเมนราคาของซอฟตแวร การประมาณการตนทนซอฟตแวรจงเปนอกกจกรรมหนงทส าคญเทยบเทากบกจกรรมอน เนองจากหากตนทนทประมาณการไดน าไปสการประมาณราคาของซอฟตแวรไมถกตองอาจท าใหองคกรตองขาดทนหรอก าไรทไดไมคมคา หรออาจไมชนะการแขงขนประมลโครงการ ในระหวางการประมาณการตนทน ยอมตองมปจจยทท าใหตนทนเปลยนแปลง ผบรหารโครงการมหนาทในการปรบคาตนทนใหเหมาะสมกบปจจยทเปลยนแปลงไปดวย เพอใหตนทนโดยประมาณใกลเคยงกบตนทนจรงมากทสด และจะสงผลให
16
การประมาณราคาซอฟตแวรถกตองทสดดวย ตนทนของโครงการผลตซอฟตแวรประกอบไปดวยคาใชจายหลายประเภท เชน คาเดนทาง คาฝกอบรม คาฮารดแวร ซอฟตแวร และแรงงาน เปนตน แตการประมาณการแรงงาน (Effort) เพอใหไดประสทธผลการท างานทตองการ (Productivity) นน จ าเปนตองอาศย “ขนาด (Size)” ของซอฟตแวรในการประมาณการ ดงนน จงตองมการคดคนวธการวดขนาดของซอฟตแวรขนมา โดยนยมใชวธ “นบจ านวนบรรทด (Line of Code: LoC)” และวธ “นบฟงกชน (Function Point: FP)” โดยวธนบจ านวนบรรทดเปนวธทงายและชดเจนมากกวา แตขอเสยคอ ไมสามารถน ามาใชวดประสทธผลการผลตซอฟตแวรของโปรแกรมเมอรทใชภาษาโปรแกรมมงทแตกตางกนได เนองจากภาษาโปรแกรมมงทแตกตางกน จะใชจ านวนบรรทดทไมเทากน เมอตองเขยนฟงกชนงานเดยวกน ดงนนจงตองใชวธ FP แทน เนองจากเปนการนบทจ านวนฟงกชนงาน และยงมการน าคาคณลกษณะของซอฟตแวรมาค านวณรวมดวย ท าใหลดปญหาความแตกตางของภาษาโปรแกรมมงได เทคนคในการค านวณหาตนทนและแรงงานทนยมใชกนมากในปจจบน คอ “COCOMO (Constructive Cost Model)” เนองจากเปนวธทมการเกบขอมลทางสถตในการผลตซอฟตแวรของโครงการทงสน 161 โครงการ แลวน ามาสรางเปนสตรค านวณหาตนทน ท าใหไดคาทนาเชอถอมากขน