
1
1
Chương 4. ƯỚC LƯỢNG GIÁ
PHẦN MỀM
NỘI DUNG CHÍNH
Giới thiệu
Ước lượng kích thước phần mềm
Ước lượng chi phí phần mềm
2
1. Giới thiệu
Các yếu tố cần ước lượng
Kích thước phần mềm
Công sức phát triển
Thời gian thực hiện
Nguyên tắc ước lượng
Phân rã dự án theo các chức năng chính và ước
lượng theo từng chức năng
Dựa trên kinh nghiệm, dữ liệu quá khứ
3
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Ước lượng kích thước phần mềm
Qua dòng lệnh: Ước lượng trực tiếp với từng
module
Qua điểm chức năng: Ước lượng gián tiếp
thông qua số lượng input/output, yêu cầu,…
4

2
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua dòng lệnh
Qua dòng lệnh
Theo đơn vị một dòng lệnh LOC (Lines Of
Code)
Theo đơn vị một ngàn dòng lệnh KDSI /
KLOC (Thousand Delivered Source of Code /
Kilo Lines of Code)
Phụ thuộc ngôn ngữ lập trình
5
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua dòng lệnh
Các vấn đề gặp phải với các phương pháp LOC và KDSI
Tính toán kích thước tại các giai đoạn khác nhau:
phân tích yêu cầu, …
Cài đặt trên các ngôn ngữ lập trình khác nhau: C, Java,
Lisp,…
Cách tính sử dụng mã lệnh: mã lệnh thực thi, định
nghĩa dữ liệu,…
Sinh mã tự động, thiết kế giao diện trực tiếp (GUI)
Giá thành của sản phẩm phụ thuộc vào ước lượng
LOC
6
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua điểm chức năng (FP - Functional Points)
FPA là một phương pháp được ISO chấp nhận, dùng để
xác định kích thước về mặt chức năng (functional size)
của một hệ thống thông tin.
Functional size phản ánh số lượng chức năng liên quan
tới và được chấp nhận bởi người dùng trong doanh
nghiệp.
Độc lập với công nghệ
7
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM
Qua điểm chức năng (FP - Functional Points)
Quy trình
Xác định kiểu đo lường (ước lượng cho dự án mới,
nâng cấp dự án hay chỉ đánh giá một dự án đã có)
Xác định phạm vi của dự án.
Xác định số lượng Function Points thô (Unadjusted
Function Points)
Xác định hệ số cân đối (Value Adjusted Factors) và
số lượng Function Points cân đối (Adjusted Function
Points).
8

3
Step 1: Xác định kiểu đo lường (Type of Count)
Xác định số lượng FPs của một dự án hoàn toàn mới
(Development Project FP Count),
Xác định số lượng FPs của việc nâng cấp một dự án
(Enhancement Project FP Count)
Xác định đánh giá lại một dự án hoàn thành (Application
FP Count).
9
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM
Qua điểm chức năng (FP - Functional Points)
Step 2: Xác định đường biên (boundary) của ứng dụng
ứng dụng độc lập (standalone) hay chỉ là một phần trong
một gói (suite) ứng dụng
Đường biên của ứng dụng là rất quan trọng, nó ảnh hưởng
trực tiếp lên độ phức tạp của ứng dụng. 10
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM
Qua điểm chức năng (FP - Functional Points)
SinhVien(MaSV, HoTen, MaLop)
MonHoc(MaMH, TenMH, SoTinChi)
KetQua(MaSV, MaMH, Diem)
SinhVien(MaSV, HoTen, NgaySinh, DiaChiNha,
PhuongXa, QuanHuyen, TinhThanhPho)
Step 3a: Xác định FP thô (UFP)
UFP là công việc xác định số FPs của dữ liệu (Data Function
Points) và số FPs của xử lý (Transaction Function Point).
11
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM
Qua điểm chức năng (FP - Functional Points)
Chức năng dữ liệu (Data Functions): có 02 loại
Một ILF (Internal Logical Files) là một nhóm các dữ
liệu được lưu trữ và bảo trì trong phạm vi hệ thống
(bên trong boundary). Thông thường nó là một bảng
(table) trong cơ sở dữ liệu của ứng dụng.
Một EIF(External Interface Files) là một nhóm dữ liệu
nhưng được lưu trữ và bảo trì bởi một ứng dụng khác
(bên ngoài boundary). một EIF này có thể là một ILF
của một ứng dụng khác. Chẳng hạn như các services
chứng khoán, bảng ngoại tệ, thời tiết…
12
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM
Qua điểm chức năng (FP - Functional Points)

4
Chức năng nghiệp vụ xử lý (Transaction Functions)
EI (External Inputs): dữ liệu được truyền từ bên ngoài
vào bên trong của boundary.
VD: them, xóa, sửa
EO (External Outputs): dữ liệu phát sinh (derived
data) được truyền từ bên trong ra bên ngoài
boundary.
VD: Báo cáo, thông báo
External Inquiries (EQ): có hai chiều nhập dữ liệu
(input) và xuất dữ liệu (output) nhằm truy xuất dữ liệu
từ một hay nhiều ILF/EIF
VD: tìm kiếm, truy vấn
13
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM
Qua điểm chức năng (FP - Functional Points)
14
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM
Qua điểm chức năng (FP - Functional Points)
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua điểm chức năng (FP - Functional Points)
Cách tính UFP:
Xác định độ phức tạp cho các ILF và EIF
DETs (Data Element Type): các cột (field) dữ liệu
RETs (Record Element Type): là nhóm các cột dữ
liệu (có quan hệ phụ thuộc vào nhau, được cập nhập
cùng nhau)
15
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua điểm chức năng (FP - Functional Points)
Cách tính UFP:
Xác định độ phức tạp cho các EI
FTR (File Types Referenced): mỗi FTR phải là một
ILF hoặc một EIF mà EI đó tương tác
DET (Data Element Types): là mỗi dòng dữ liệu nhập
(Data Input Field), thông báo lỗi(error message),
thông báo xác nhận (confirm message), buttons, mỗi
nhóm radio buttons, check boxes, listbox…được tính
là một DET
16

5
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua điểm chức năng (FP - Functional Points)
Cách tính UFP:
Xác định độ phức tạp cho các EO: Hoàn toàn tương
tự như cách xác định FP cho EI
Mỗi cột dữ liệu đọc được từ ILF, EIF được tính là 1 DET.
Mỗi dữ liệu phát sinh (derived data) được tính là 1 DET.
Các error message được tính là 1 DET.
Các Confirm message được tính là 1 DET.
KHÔNG TÍNH tiêu đề (heading) của cột, ngày tháng ngày lập
báo cáo. Chỉ tính ngày tháng là một DET nếu nó là dữ liệu có
ý nghĩa trong kinh doanh (như lập hóa đơn, ngày đăng ký…
17
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua điểm chức năng (FP - Functional Points)
Cách tính UFP:
Xác định độ phức tạp cho các EQ: Như đã biết, mỗi
EQ là một tiến trình xử lý gồm hai chiều (thể hiểu như
gồm EI và EO). Do đó số lượng FTRs và DETs cuối
cùng là sự kết hợp giữa FTRs và DÉTs phía EI và
EO. Điều này có nghĩa là nếu cả phía EI và EO cùng
sử dụng một FTR thì FTR đó chỉ được tính là MỘT.
Tương tự như đối với DET.
18
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua điểm chức năng (FP - Functional Points)
Bảng giá trị các điểm chức năng theo độ phức tạp từ
thấp, trung bình đến cao
19
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN
MỀM
Qua điểm chức năng (FP - Functional Points)
20

