Chương I đã giới thiệu lý do chon dé tài, mục tiêu và ý nghĩa nghiên cứu. Tiếp theo, chương này giới thiệu tổng quan về ước lượng công số thực hiện dự án phần mềm va độ lớn hay kích thước phần mềm. Độ lớn phan mềm là tham số dau vào quan trọng của nhiều mô hình ước lượng công số do vậy một số phương pháp phô biến xác định kích thước phần mềm được giới thiệu trong chương này. Tiếp theo đó là những phương pháp ước lượng công số truyền thống và mô hình COCOMO II rất phô bién hiện nay cùng với các mô hình ứng dụng máy học gan đây.1 TONG QUAN VE UOC LUONG DỰ N PHAN MEM Dự toán dự án phần mém là quá trình xác định chi phi dé sản xuất một phần mềm.
Chi phí sản xuất này gồm nhiều loại chi phí khác nhau gồm chi phí nhân công tham gia phát triển phần mềm và các chi phí hoạt động khác của doanh nghiệp như chi phí mua các công cụ phát triển, chi phí tư van pháp luật, chi phí ngoại giao, chi phí thuê văn phòng, chi phí điện nước,. Các loại chi phí hoạt động này phụ thuộc vào mỗi doanh nghiệp và biến động theo môi trường kinh tế xã hội mà doanh nghiệp hoạt động và không thuộc phạm vi sản xuất phần mém. Do vậy dé đơn giản, các nghiên cứu về ước lượng chi phí phần mềm tập trung vào ước lượng số giờ/ngày công can thiết dé phát triển một phan mềm bởi vì số giờ/ngày công nay là cơ sở quan trong dé tính chi phí của phần mềm. Đâu vào của quá trình ước là các yêu tô ảnh hưởng công sô.
Các yêu tô này thường được gọi là cost drivers và được chia thành 3 nhóm [5]: - Nhóm yếu tố liên quan phan mềm (Product Factors): Đây là những yếu tố liên quan đặc tính của phan mềm như: độ lớn, độ phức tạp của phần mềm, lĩnh vực nghiệp vụ. - Nhóm yếu tố liên quan môi trường phát triển (Environment Factors): Đây là những yếu tố liên quan môi trường phát triển sản phẩm như quy trình, công cụ, trang thiết bị và tài nguyên hỗ trợ. - Nhóm yếu tố liên quan đội ngũ tham gia dự án (People Factors): Day là những yếu tô liên quan con người như trình độ, kỹ nang, năng suất của đội ngũ tham gia dự án,,. Kết quả của quá trình ước lượng là công can thiết dé sản xuất phần mềm.
Nó thê hiện công sức bỏ ra của đội ngũ tham gia dự án. Don vi thường được sử dụng đo công sô là person-hour hoặc person-month. Person-hour: là số giờ cần thiết một người cần bỏ ra để phát triển phần mềm. Person-month: là số tháng cân thiết một người cần bỏ ra để phát triển phân mềm.
Ước lượng công số không chỉ thực hiện ở giai đoạn đầu của dự án mà nó được thực hiện xuyên suốt qua quá trình thực hiện dự án. Ước lượng ở những giai đoạn dau dự án là cơ sở dé doanh nghiệp quyết định đầu tư, hoạch định ngân sách, phân bố nguồn lực hoặc tham gia đấu thầu. Khi dự án được vận hành, ước lượng ở các giai đoạn nay là cơ sở điều chỉnh kế hoạch, phân bố lại nguồn lực cũng như quản trị dự án cho các giai đoạn tiếp theo. Độ chính xác của ước lượng phụ thuộc vào từng giai đoạn của dự án.
Giai đoạn dau hình thành dự án, các đặc tả về chức năng của phần mềm thường chưa rõ ràng do vậy ước lượng công số thực hiện trong giai đoạn này có độ chính xác không cao. Càng về các giai đoạn sau, chỉ tiết đặc tả của phân mềm càng rõ ràng khi đó độ chính xác của ước lượng càng cao. Thông tin ước lượng này giúp điều chỉnh kế hoạch và phân bổ nguồn lực cho các giai đoạn tiếp sau cho đến khi dự án hoàn thành. 4x 2X Ma) + 95 lx SB |1.25x €3 =E X co YL ay, <u: > 0.25x     A A Hìnhthành Kéhoach Thiétké Thiétké Viếtcode tinh nang va dac ta so bộ chi tiét va kiém thtr Cac giai doan trong chu trinh phat trién phan mém Hình H-1; Độ chính xác của óc lượng theo từng giai đoạn [6] H.2 K CH THƯỚC PHAN MEM Độ lớn hay kích thước phần mềm là đại lượng dùng dé chi mức độ lớn/nhỏ hay quy mô của phân mêm.
Kích thước phần mềm là tham số đâu vào quan trọng của nhiều mô hình ước lượng chi phí phố biến hiện nay. Có thể hiểu nôm na nó là khối lượng công việc mà các mô hình ước lượng cân tìm ra số lượng nhân công để giải quyết khối lượng công việc nay. Độ lớn phan mềm là yếu tổ gan liền với các đặc tính, chức năng cụ thê của phân mêm và độc lập với môi trường phát triên phân mêm. Don vị đo độ lớn phố biến hiện nay là số dòng mã lệnh SLOC (Source Line Of Code) của phần mềm hoặc số điểm chức năng FP (Function Point) , hoặc số điểm đối tượng OP (Object Poin0).
Đây là đại lượng được sử dụng dau tiên trong lich sử công nghiệp phan mém dé đo kích thước phần mềm [7]. Đối với dự án đã hoàn thành thì việc xác định kích thước theo SLOC khá dễ dàng. Tuy nhiên để xác định SLOC ở giai đoạn đầu của dự án khi mà các đặc tả của phân mềm chưa rõ rang, phan mém chưa đến giai đoạn viết code là việc khó khăn. Trường hợp này SLOC thường được ước lượng bằng phương pháp WBS (Work Breakdown Structure) cách chia phần mềm thành những module nhỏ va kết hợp với phương pháp tương tự hoặc phương pháp chuyên gia.
Với những dự án đã hoàn thành trong quá khứ ta có thé xác định chính xác SLOC và so sánh phần mềm mới hoặc module của nó với dữ liệu lịch sử của các dự án này đề đưa ra ước lượng kích thước. Ngoài ra phương pháp tính độ lớn theo điểm chức năng Function Point cũng có thé sử dụng thay thé để khắc phục hạn chế trong việc xác định SLOC ở giai đoạn đâu của dự án.22 PHAN TÍCH DIEM CHỨC NĂNG [8] Phân tích điểm chức năng (Function Point Analysis) là phương pháp do độ lớn của phần mềm được Allan Albrecht dé xuất vào năm 1970 với những kế thừa từ “IBM CIS & A Guideline 313, AD/M Productivity Measurement and Estimate Validation” của công ty IBM. Nam 1988, tổ chức International Function Point Users Group (IFPUG) giới thiệu phiên ban 2.0 cua phương pháp này và đến năm 1999 cải tiến lên phiên bản 4.1 gồm những cải tiễn tương thích với chuẩn ISO. 10 Với phương pháp này, kích thước phan mém được xác định thông qua phân tích các tính năng, chức năng nghiệp vu thé hiện qua đơn vị đo là điểm chức năng FP (Function Point).
Đây là độ đo độc lập với công nghệ phát triển, ngôn ngữ lập trình, khả năng và năng suất của đội ngũ phát triển. Function Point được tính dựa trên chức năng mà ứng dụng cung cấp cho người dùng, mức độ xử lý thông tin với các luồng dit liệu trong hệ thống cũng như các giao tác với nguồn dữ liệu bên ngoài. Công thức tính độ lớn của phần mềm như sau: FP = UFP*VAF (II-1) Trong đó: - FP là độ lớn của phan mềm tính theo đơn vị điểm chức năng (Function Point). - UFP (Unadjusted Function Point) là số điểm chức năng chưa hiệu chỉnh.
- WAF (Value Adjustment Factor) là hệ số hiệu chỉnh gồm 14 yếu tổ liên quan những đặc tính của phần mềm.1 Xác định điểm chức năng chưa hiệu chỉnh UFP Điểm chức năng chưa hiệu chỉnh UFP có 5 thành phân chính được chia thành 2 nhóm là nhóm chức năng liên quan đến dữ liệu (data functions) và nhóm chức năng liên quan đến giao tác (transactional functions). II mx Nhóm dữ liệu — j (data functions) | Điểm chức năng! chưa hiệu chỉnh + ` Nhập từ ngoài sx | (External inputs) Két xuât ngoài (External outputs) r^”~———=—=—=—==—=—”>x~~~~”~~—~t1 Hình II-2: Các thành phân của điểm chức năng chưa hiệu chỉnh (UFP) a. Nhóm chức năng liên quan đến dit liệu (data functions) gồm có: e Internal logical files (ILF): là dữ liệu có thé nhận biết bởi người sử dụng và được quản lý bên trong ứng dụng. e External logical files (ELF): là dữ liệu có thé nhận biết bởi người sử dụng và được ứng dụng truy xuất đến nhưng được quản lý bởi ứng dụng khác.
Mỗi ILF và ELF gồm 2 thành phan để đánh giá độ phức là: - DET (Data Element Type): là những trường (field) dữ liệu ma người dùng có thé nhận biết. - RET (Record Element Type): là những nhóm thành phân dữ liệu con trong một ILF hoặc ELF. 12 Độ phức tap của ILF va ELF phụ thuộc vào số lượng DET va RET và được đánh giá qua bảng sau: Bang II-1: Bang đánh giả độ phức tạp cua ILF và ELF 1-19 DET 20 - 50 DET Lớn hơn 50 DET IRET Thấp Thấp Trung bình 2-5 RET Thap Trung binh Cao Nhiéu hon 6 Trung binh Cao Cao Vi du - Giả sử ILF có 1 RET va 70 DET, tra bảng trên ta thay độ phức tap cua ILF là Trung bình (giá tri tai dong 2 cột 4). - Giasu ELF có 7 RET va 25 DET, tra bang trên ta được độ phức tap cua ELF là Cao (giá tri tại dong 4, cột 3).
Sau khi xác định được độ phức tạp cua ILF va ELF, bước tiếp theo là tính điểm chức năng chưa hiệu chỉnh UFP (Unadjusted Function Points) dựa trên bảng sau: Bảng II-2: Bang tra điểm chức năng chưa hiệu chỉnh UFP của ILF Độ phức tạp Số điểm chức năng chưa hiệu chỉnh (UFP) Thấp 7 Trung bình 10 Cao 15 Vi du từ bang trên: nếu một ILF có độ phức tap là Trung bình thì số điểm chức năng chưa hiệu chỉnh UFP là 10. Tương tự cho cách tính điểm chức năng chưa hiệu chỉnh UFP cho ELF theo bảng dưới đây. 13 Bảng II-3: Bảng tra điểm chức năng chưa hiệu chỉnh UFP của ELF Độ phức tạp Số điểm chức năng chưa hiệu chỉnh (UFP) Thấp 5 Trung bình 7 Cao 10 b. Nhóm chức năng liên quan đến giao tác (transactional functions) gồm có: e External Inputs (EI): là những giao tác từ hệ thống bên ngoài vào ứng dụng có tương tác với ít nhất một ILF.
e External Outputs (EO): là những giao tác kết xuất dữ liệu ra ngoài ứng dụng hoặc truy xuất thông tin ngoài ứng dụng. Những giao tác này phải gồm những tính toán, tạo dữ liệu dẫn xuất từ ít nhất một ILF. e External Inquiries (EQ): là những giao tác kết xuất thông tin ra ngoài hệ thống cho người dùng. Những giao tác này truy vấn thông tin từ ILF hoặc EIF.
Mỗi giao tac EI, EO, EQ đều có 2 phan là DET va FTR. Độ phức tap của mỗi giao tac được đánh giá thông qua số lượng DET và FTR.