software cost estimation

16
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) เช่น ค่าใช้จ่าย ในการเตรียมงาน ค่าใช้จ่ายในการบริหารงาน การติดต่อสื่อสาร และสวัสดิการ เป็นต้น เมื่อโครงการเริ่มดาเนินการ ผู้บริหารโครงการจะต้องมีการปรับต้นทุนและตารางงานอย่างสมาเสมอ เพื่อจัดสรรการใช้ทรัพยากรให้เหมาะสมที่สุด

Upload: zinefine

Post on 18-Aug-2015

230 views

Category:

Documents


5 download

DESCRIPTION

Software Cost Estimation

TRANSCRIPT

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 LanguageCOBOL Programming Language #include #include 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 Assembly4 6 10 12 2 4 6 5 7 2 SizeEffortProductivity Assembly6,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 AverageMediumLowHigh Access35381547 Ada154-104205 ASP596232127 C1481049704 C++605329178 C#59595166 Clipper38392770 8 COBOL73778400 FoxPro32352535 HTML43423553 Informix42312457 J2EE615050100 Java60591497 JavaScript56544465 JSP59--- Oracle38294122 Perl60--- PL/159592292 PL/SQL463114110 Powerbuilder30247105 SQL393515143 VBScript45342750 Visual Basic504214276 12.3 Effort Effort Effort 12.5 Effort Algorithm Cost Modeling Expert Judgment Estimation by Analogy Parkinsons 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) Screen123 Reports256 3GL Modules410- 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) 47132550 11 (Number of Object Point per Month) 40 OP 10% (Nominal/Normal) Effort = 40 100 10100= 40 0.90 = 36 = 3613= 3 Effort Concept Early Design Model COCOMO II = ()

MMEEffort 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()51 5 4 (Very Low) (Low) (Nominal) (High) 12.8 (Value of Rating for Scaling Factor) Factor Code (Very Low) (Low) (Nominal) (High) Factor Name PREC6.204.963.722.48Precedentness FLEX5.074.053.042.03Flexibility RESL7.075.654.242.83Risk Resolution TEAM5.484.383.292.19Team Cohesion PMAT7.806.244.683.12Process Maturity 5 12.9 COCOMO II Early Design PREC ( )FLEX ( )RESLTEAMPMAT 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 219Man 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 143Man 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) EMEffort Multiplier Effort EM1 x EM2 x Em3 x .. x EM16 16 4 14 12.10 COCOMO II Post Architecture (Product) RELY: Software ReliabilityDATA: Database Size CPLX: Software ComplexityRUSE: Required ReusabilityDOCU: Documentation (Platform) TIME: Time Constraint on ExecutionSTOR: Main Storage Constraint PVOL: Platform Volatility (Personnel) ACAP: Analyst Capability PCAP: Programmer CapabilityPCON: Personnel ContinuityAEXP: Analyst Experience PEXP: Programmer ExperienceLTEX: Language and Tools Experience (Project) TOOL: Use of Software Tools SITE: Site Environment Effort 16 12.11 Effort 16 Post Architecture FactorLevels and Ratings (Very Low) (Low) (Nominal) (High) Product Factor 1. RELY0.820.921.001.10 2. DATA0.800.901.001.14 3. CPLX0.730.871.001.17 4. RUSE0.850.951.001.07 5. DOCU0.810.911.001.11 Platform Factors 1. TIME--1.001.11 2. STOR--1.001.05 3. PVOL--1.001.15 Personnel Factors 1. ACAP1.421.191.000.85 2. PCAP1.341.151.000.88 3. AEXP1.221.101.000.88 4. PEXP1.191.091.000.91 5. LTXP1.201.091.000.91 15 6. PCON1.291.121.000.90 Project Factors 1. TOOL1.171.091.000.90 2. SITE1.221.091.00093 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.01440 Man Month MME ( 12.3)= 143 x 0.96137 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