NỘI DUNG CHÍNH<br />
Giới thiệu<br />
Ước lượng kích thước phần mềm<br />
Ước lượng chi phí phần mềm<br />
<br />
Chương 4. ƯỚC LƯỢNG GIÁ<br />
PHẦN MỀM<br />
<br />
1<br />
<br />
2<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
<br />
1. Giới thiệu<br />
Các yếu tố cần ước lượng<br />
Kích thước phần mềm<br />
Công sức phát triển<br />
Thời gian thực hiện<br />
Nguyên tắc ước lượng<br />
Phân rã dự án theo các chức năng chính và ước<br />
lượng theo từng chức năng<br />
Dựa trên kinh nghiệm, dữ liệu quá khứ<br />
<br />
Ước lượng kích thước phần mềm<br />
<br />
<br />
<br />
<br />
3<br />
<br />
Qua dòng lệnh: Ước lượng trực tiếp với từng<br />
module<br />
Qua điểm chức năng: Ước lượng gián tiếp<br />
thông qua số lượng input/output, yêu cầu,…<br />
<br />
4<br />
<br />
1<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
<br />
Qua dòng lệnh<br />
<br />
Qua dòng lệnh<br />
Các vấn đề gặp phải với các phương pháp LOC và KDSI<br />
Tính toán kích thước tại các giai đoạn khác nhau:<br />
phân tích yêu cầu, …<br />
Cài đặt trên các ngôn ngữ lập trình khác nhau : C, Java,<br />
Lisp,…<br />
Cách tính sử dụng mã lệnh: mã lệnh thực thi, định<br />
nghĩa dữ liệu,…<br />
Sinh mã tự động, thiết kế giao diện trực tiếp (GUI)<br />
Giá thành của sản phẩm phụ thuộc vào ước lượng<br />
LOC<br />
<br />
Qua dòng lệnh<br />
<br />
<br />
<br />
<br />
<br />
<br />
Theo đơn vị một dòng lệnh LOC (Lines Of<br />
Code)<br />
Theo đơn vị một ngàn dòng lệnh KDSI /<br />
KLOC (Thousand Delivered Source of Code /<br />
Kilo Lines of Code)<br />
Phụ thuộc ngôn ngữ lập trình<br />
<br />
5<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
FPA là một phương pháp được ISO chấp nhận, dùng để<br />
xác định kích thước về mặt chức năng (functional size)<br />
của một hệ thống thông tin.<br />
Functional size phản ánh số lượng chức năng liên quan<br />
tới và được chấp nhận bởi người dùng trong doanh<br />
nghiệp.<br />
Độc lập với công nghệ<br />
<br />
6<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
Quy trình<br />
Xác định kiểu đo lường (ước lượng cho dự án mới,<br />
nâng cấp dự án hay chỉ đánh giá một dự án đã có)<br />
Xác định phạm vi của dự án.<br />
Xác định số lượng Function Points thô (Unadjusted<br />
Function Points)<br />
Xác định hệ số cân đối (Value Adjusted Factors) và<br />
số lượng Function Points cân đối (Adjusted Function<br />
Points).<br />
<br />
7<br />
<br />
8<br />
<br />
2<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
Step 1: Xác định kiểu đo lường (Type of Count)<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
Step 2: Xác định đường biên (boundary) của ứng dụng<br />
ứng dụng độc lập (standalone) hay chỉ là một phần trong<br />
một gói (suite) ứng dụng<br />
<br />
Xác định số lượng FPs của một dự án hoàn toàn mới<br />
(Development Project FP Count),<br />
Xác định số lượng FPs của việc nâng cấp một dự án<br />
(Enhancement Project FP Count)<br />
Xác định đánh giá lại một dự án hoàn thành (Application<br />
FP Count).<br />
<br />
<br />
<br />
<br />
<br />
SinhVien(MaSV, HoTen, MaLop)<br />
MonHoc(MaMH, TenMH, SoTinChi)<br />
KetQua(MaSV, MaMH, Diem)<br />
<br />
SinhVien(MaSV, HoTen, NgaySinh, DiaChiNha,<br />
PhuongXa, QuanHuyen, TinhThanhPho)<br />
<br />
9<br />
<br />
Đường biên của ứng dụng là rất quan trọng, nó ảnh hưởng<br />
10<br />
trực tiếp lên độ phức tạp của ứng dụng.<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
Step 3a: Xác định FP thô (UFP)<br />
UFP là công việc xác định số FPs của dữ liệu (Data Function<br />
Points) và số FPs của xử lý (Transaction Function Point).<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
Chức năng dữ liệu (Data Functions): có 02 loại<br />
Một ILF (Internal Logical Files) là một nhóm các dữ<br />
liệu được lưu trữ và bảo trì trong phạm vi hệ thống<br />
(bên trong boundary). Thông thường nó là một bảng<br />
(table) trong cơ sở dữ liệu của ứng dụng.<br />
<br />
<br />
11<br />
<br />
Một EIF(External Interface Files) là một nhóm dữ liệu<br />
nhưng được lưu trữ và bảo trì bởi một ứng dụng khác<br />
(bên ngoài boundary). một EIF này có thể là một ILF<br />
của một ứng dụng khác. Chẳng hạn như các services<br />
chứng khoán, bảng ngoại tệ, thời tiết…<br />
<br />
12<br />
<br />
3<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
<br />
Chức năng nghiệp vụ xử lý (Transaction Functions)<br />
EI (External Inputs): dữ liệu được truyền từ bên ngoài<br />
vào bên trong của boundary.<br />
VD: them, xóa, sửa<br />
<br />
<br />
EO (External Outputs): dữ liệu phát sinh (derived<br />
data) được truyền từ bên trong ra bên ngoài<br />
boundary.<br />
VD: Báo cáo, thông báo<br />
<br />
<br />
<br />
External Inquiries (EQ): có hai chiều nhập dữ liệu<br />
(input) và xuất dữ liệu (output) nhằm truy xuất dữ liệu<br />
từ một hay nhiều ILF/EIF<br />
VD: tìm kiếm, truy vấn<br />
13<br />
<br />
14<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
<br />
Qua điểm chức năng (FP - Functional Points)<br />
Cách tính UFP:<br />
Xác định độ phức tạp cho các ILF và EIF<br />
<br />
Qua điểm chức năng (FP - Functional Points)<br />
Cách tính UFP:<br />
Xác định độ phức tạp cho các EI<br />
<br />
<br />
<br />
<br />
<br />
DETs (Data Element Type): các cột (field) dữ liệu<br />
RETs (Record Element Type): là nhóm các cột dữ<br />
liệu (có quan hệ phụ thuộc vào nhau, được cập nhập<br />
cùng nhau)<br />
15<br />
<br />
<br />
<br />
FTR (File Types Referenced): mỗi FTR phải là một<br />
ILF hoặc một EIF mà EI đó tương tác<br />
DET (Data Element Types): là mỗi dòng dữ liệu nhập<br />
(Data Input Field), thông báo lỗi(error message),<br />
thông báo xác nhận (confirm message), buttons, mỗi<br />
nhóm radio buttons, check boxes, listbox…được tính<br />
là một DET<br />
16<br />
<br />
4<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
Cách tính UFP:<br />
Xác định độ phức tạp cho các EO: Hoàn toàn tương<br />
tự như cách xác định FP cho EI<br />
<br />
<br />
<br />
<br />
<br />
<br />
Mỗi cột dữ liệu đọc được từ ILF, EIF được tính là 1 DET.<br />
Mỗi dữ liệu phát sinh (derived data) được tính là 1 DET.<br />
Các error message được tính là 1 DET.<br />
Các Confirm message được tính là 1 DET.<br />
KHÔNG TÍNH tiêu đề (heading) của cột, ngày tháng ngày lập<br />
báo cáo. Chỉ tính ngày tháng là một DET nếu nó là dữ liệu có<br />
ý nghĩa trong kinh doanh (như lập hóa đơn, ngày đăng ký…<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
Qua điểm chức năng (FP - Functional Points)<br />
Cách tính UFP:<br />
Xác định độ phức tạp cho các EQ: Như đã biết, mỗi<br />
EQ là một tiến trình xử lý gồm hai chiều (thể hiểu như<br />
gồm EI và EO). Do đó số lượng FTRs và DETs cuối<br />
cùng là sự kết hợp giữa FTRs và DÉTs phía EI và<br />
EO. Điều này có nghĩa là nếu cả phía EI và EO cùng<br />
sử dụng một FTR thì FTR đó chỉ được tính là MỘT.<br />
Tương tự như đối với DET.<br />
<br />
17<br />
<br />
18<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
<br />
2. ƯỚC LƯỢNG KÍCH THƯỚC PHẦN<br />
MỀM<br />
<br />
Qua điểm chức năng (FP - Functional Points)<br />
Bảng giá trị các điểm chức năng theo độ phức tạp từ<br />
thấp, trung bình đến cao<br />
<br />
Qua điểm chức năng (FP - Functional Points)<br />
<br />
19<br />
<br />
20<br />
<br />
5<br />
<br />