GIỚI THIỆU VỀ TÀI LIỆUDự án là tập hợp các công việc được thực hiện bởi một tập thể (có thể có chuyên môn khác nhau, thực hiện công việc khác nhau, thời gian tham gia dự án khác nhau), nhằm đạt được một kết quả như dự kiến, trong thời gian dự kiến, với một kinh phí dự kiến. Trong thuật ngữ của chuyên ngành Kĩ nghệ phần mềm, Quản lý dự án phần mềm là các hoạt động trong lập kế hoạch, giám sát và điều khiển tài nguyên dự án (ví dụ như kinh phí, con người), thời gian thực hiện, các rủi ro trong dự án và cả quy trình thực hiện dự án; nhằm đảm bảo thành công cho dự án. Quản lý dự án phần mềm cần đảm bảo cân bằng giữa ba yếu tố: thời gian, tài nguyên và chất lượng. Ba yếu tố này được gọi là tam giác dự án:
Các vấn đề thường xảy ra đối với một dự án phần mềm GIỚI THIỆU VỀ TÀI LIỆUThời gian thực hiện dự án vượt mức dự kiếnChi phí thực hiện dự án vượt mức dự kiếnKết quả của dự án không như dự kiếnTrách nhiệm của người quản lý dự án
Quản lý thời gian: Lập lịch, kiểm tra đối chiếu quá trình thực hiện dự án với lịch trình, điều chỉnh lịch trình khi cần thiếtQuản lý tài nguyên: xác định, phân bổ và điều phối tài nguyênQuản lý sản phẩm: thêm, bớt các chức năng phù hợp với yêu cầu của khách hàngQuản lý rủi ro: xác định, phân tích rủi ro và đề xuất giải pháp khắc phụcTổ chức cách làm việ
243 trang |
Chia sẻ: aloso | Lượt xem: 2120 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Quản lí dự án phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
•ợc làm để bù trừ cho thừa số độ tin
cậy đã đ•ợc đ•a vào ở mức thấp hơn.
Tính phức tạp của hệ thống phụ có thể đ•ợc đ•a thành thừa số vào chi
phí phát triển theo cách t•ơng tự. Những nhân tử phức tạp có thể đ•ợc bố
trí cho mỗi hệ thống phụ. Điều này đơn giản hơn ph•ơng pháp mô tả
tr•ớc đây cho các hợp phần phần mềm mức thấp hơn vì qui mô ch•ơng
trình không đ•ợc tính đến ở mức hệ thống phụ.
Các thuốc tính không tuỳ thuộc ở hệ thống phụ phải không đ•ợc áp
dụng ở mức hệ thống phụ. Trong phần lớn tr•ờng hợp, trình độ nhân lực
phải không đ•ợc đ•a thành thừa số vào dự toán chi phí phát triển vì thừa
số nào bình th•ờng phải không biến biên trên mức hệ thống phụ. Khi
nhân lực hoàn toàn khác đ•ợc bố trí cho mỗi hệ thống phụ, thông th•ờng
chúng ta coi mỗi hệ thống phụ là hệ thống riêng rẽ vì mục đích chi phí
phát triển dự toán.
10.4.6 Thuật toán dự toán chi phí
Thuật toán sau suy từ mô thức gốc COCOMO của Boehm (Boehm
1981) và gồm 10 b•ớc cơ bản cho việc hình thành dự toán chi phí phát
triển dự án. Các b•ớc này bao gồm việc phân giải dự án ra hợp phần, vận
dụng công thức công sức cho mỗi hợp phần và phối hợp mọi dữ liệu tạo
thành vào dự toán chi phí duy nhất của dự án. Thuật toán cơ bản bao gồm
các b•ớc sau:
1. Phân giải hệ thống phần mềm sử dụng tinh lọc từng b•ớc, thành các
hệ thống phụ và rồi phân giải mỗi hệ thống phụ thành các mô đun phần
mềm mức thấp.
2. Sử dụng ph•ơng pháp dự toán qui mô (nh• mô tả trong phần 10.2)
để dự toán qui mô của mỗi mô đun. Sau đó phối hợp các dự toán cho mỗi
mô đun theo thế tạo lập dự toán cho qui mô của mỗi hệ thống phụ và cho
toàn bộ hệ thống.
3. Xác định các nhân tử công sức cho mỗi mô đun, sử dụng các
ph•ơng pháp t•ơng tự nh• mô tả ở đầu phần này. Các nhân tử công sức sử
dụng ít ra phải bao gồm công thức về:
Trình độ nhân lực.
Qui mô dự án.
Độ tin.
Môi tr•ờng phát triển.
Tính phức tạp của mô đun.
Quản lý dự án phần mềm
221
4. Vận dụng các nhân tử công sức vào mỗi mô đun sử dụng ph•ơng
pháp nh• mô tả ở đầu phần này theo thế tạo lập dự toán cho mỗi mô đun
5. Xác định các nhân tử công sức của hệ thống phụ cho mỗi hệ thống
phụ
6. Phối hợp các dự toán cho mô đun trong mỗi hệ thống phụ với nhân
tử công sức hệ thống phụ theo thế tạo lập dự toán cho mỗi hệ thống phụ.
7. Phối hợp dự toán cho mọi hệ thống phụ, theo thế tạo lập dự toán
cho toàn bộ hệ thống.
8. Duyệt lại các yếu tố đã đ•ợc xem xét trên mô đun và mức hệ thống
phụ. Tìm t•ơng tác giữa các yếu tố, các mô đun và gi•ã các hệ thống phụ
và tạo lập t•ơng tác
9. Tìm chi phí phụ đã bỏ quên ở dự toán hệ thống nh• phân tích, thị
tr•ờng, tổng phí v.v.. Và phối hợp với dự toán hệ thống tạo lập.
10. Chuẩn bị dự toán độc lập thứ hai (và nếu có thể thứ ba). So sánh các
dự toán mà mỗi nhóm tạo lập và kiểm tra bất cứ khác biệt cơ bản nào.
Giải quyết bất kỳ khác biệt nào và tạo lập dự toán chi phí dự án duy nhất
đ•ợc chấp nhận
Thuật toán này tạo lập dự toán chi phí phát triển dự án chú ý mọi yếu
tố chủ yếu. B•ớc 10 cũng đề cập sai lầm cá nhân trong dự toán bằng cách
yêu cầu giải thích và giải quyết những khác biệt chủ yếu.
B•ớc 1 liên quan đến từ mô đun phần mềm đồng nghĩa với đơn vị phân
giải phần mềm mức thấp nhất.
B•ớc 8 nhằm xác định các yếu tố đã sao chụp phần nào hay trọn vẹn
trong dự toán. Thí dụ về sao chụp trọn vẹn là bố trí yếu tố phức tạp cho
hợp phần phần mềm do những yêu cầu về độ tin cậy cao vì việc tạo lập độ
tin cậy th•ờng đòi hỏi logic phức tạp. Điều này có thể dẫn đến trong dự
toán cho hợp phần đ•ợc gia tăng hai lần, mỗi lần vì cùng lý do.
Những yếu tố phụ có thể gộp trong các b•ớc 3 và 5 căn cứ ở đặc điểm
của dự án hiện nay đ•ợc dự toán. Điều này có thể bao gồm những yếu tố
nh• tính phức tạp của ngôn ngữ lập trình (nếu, chẳng hạn Ada đã đ•ợc sử
dụng lần đầu) hay tính quen thuộc với phần cứng chủ đích (nếu phần
cứng đặc biệt đ•ợc phát triển và do đấy pha hợp nhất hẳn khó khăn hơn).
Việc thực hiện đầy đủ thuật toán này phải bao gồm mọi công thức công
sức trên.
Điều quan trọng là phải nhớ rằng sự phân loại các hợp phần phần mềm
là khác nhau cho mỗi yếu tố. Điều này có nghĩa là khi vận dụng những
nhân tử độ tin cậy vào các lớp hợp phần, những hợp phần đó chắc hẳn
phải khác nhất với hợp phần tạo lập khi các nhân tử phức tạp đ•ợc vận
dụng. Do đấy mỗi bộ nhân tử đ•ợc vận dụng riêng cho mỗi hợp phần
phân giải. Có điều này ở nơi nào mà máy tính có thể có ích nhất và nh•
đã nói tr•ớc đây, một số các khối ch•ơng trình máy tính COCOMO phải
có đ•ợc để hoàn thiện những nhiệm vụ nhàm chán này
Thuật toán COCOMO tuỳ thuộc nặng ở các quyết định chủ quan của
ng•ời dự toán. Điều này đã dẫn đến việc phát triển nhiều biến thức của
Quản lý dự án phần mềm
222
COCOMO và công thức công sức (coi Jeffery và Low (1990), Anderson
(1990) và Balda và Gustafson (1990)). Vấn đề sai lệch của các dự toán
chủ quan của những ng•ời dự toán khác nhau đ•ợc nêu trong phần 10.6.
10.5 Phân tích l•ợng chức năng.
Có mâu thuẫn lớn khi xem xét trị số “dòng mã nguồn” là độ đo qui mô
dự án (coi Ratcliff và Rollo (1990) Jeffery và Low (1990)). Không có
định nghĩa chung nào cho độ đo SLOC: có thể hay không thể bao gồm
mã thử nghiệm hay mã dùng lại hay trong một số tr•ờng hợp cả mã th•
viện. Cũng vậy liệu SLOC có thực sự có nghĩa nh• vậy cho mã ch•ơng
trình hợp ngữ và mã Ada không ? hay mã Cobol và mã C ? liệu một yếu
tố duy nhất có thể thực sự đ•ợc vận dụng (coi các yếu tố COCOMO) để
làm cho mọi ngôn ngữ lập trình so sánh đ•ợc?
Các câu hỏi này có thể tránh đ•ợc khi h•ớng quá trình dự toán vào qui
mô vấn đề dự án chứ không phải qui mô mã dự án. Phân tích l•ợng chức
năng (FPA) là ph•ơng pháp tạo lập dự toán dự án căn cứ ở qui mô vấn đề.
Qui mô vấn đề là độ đo suy từ các pha dự án ban đầu đặc biệt pha yêu
cầu. Số l•ợng các chức năng trong dự án xác định qui mô vấn đề, nó đ•ợc
biểu thị bằng số (trị số FPA).
Trị số FPA của một dự án có thể đ•ợc dùng để:
So sánh tính phức tạp của các dự án
So sánh công sức t•ơng đối có yêu cầu để hoàn thành dự án
Phát sinh các độ đo dự án khác (nh• Sloc52)
Có nhiều biến thức của kỹthuật FPA. Nhiều những biến thức đó
nhằm thích ứng kỹ thuật vào các loại dự án đặc tr•ng hay tăng đ•ợc
chính xác bằng cách thêm thuộc tính dự án vào quá trình FPA.
10.5.1 Các b•ớc FPA cơ bản.
Qúa trình FPA cơ bản bao gồm tám b•ớc. Hai trong những b•ớc đó có
thể đ•ợc chuẩn bị độc lập với dự án đ•ợc dự toán vì chúng tham gia vào
các danh sách định các loại hàm số và các thuộc tính phức tạp đ•ợc sử
dụng để phân loại đặc tính của dự án. Tám b•ớc FPA có bản là:
1. Xác định danh sách các loại chức năng phụ thuộc vào và ra. Điều
này có thể bao gồm53.
Chức năng yêu cầu/nhập vào từ ngoài
Đầu vào dữ liệu hay kiểm tra của ng•ời dùng.
52 Jeffery và Low (1990) mô tả ch•ơng trình gọi là Clair đ•ợc dùng để đổi l•ợng chức năng
(FP) sang Sloc.
53 các phạm trù hàm số này t•ơng tự với những phạm trù mà Albrecht và Gaffney (1983) đã gợi ý.
Quản lý dự án phần mềm
223
Câu hỏi của ng•ời dùng đòi trả lời.
Chức năng ra ngoại
Chức năng ra tín hiệu hay dữ liệu dễ thấy
Chức năng file trung gian lôgic
Thông tin điều khiển hay dữ liệu
Chức năng file giao diện ngoại
Thông tin kiểm tra và dữ liệu và các file dùng chung.
2. Số các chức năng phần mềm cơ bản của mỗi loại đ•ợc xác định.
Một chức năng phải đ•ợc tính nếu có dự kiến yêu cầu xử lý đặc biệt.
3. Mỗi chức năng đ•ợc đếm trong b•ớc 2 đ•ợc xếp loại là:
Đơn giản: tiếp cận file tối thiểu, ít kiểu dữ liệu khác biệt và tham
gia tối thiểu của ng•ời dùng.
Trung bình: Loại này đ•ợc dành cho những chức năng giữa đơn
giản và phức tạp. ‘Trung bình’ có thể đ•ợc phân chia phụ thành nhiều
hơn một phân loại trung gian.
Phức tạp: Nhiều tiếp cận file, nhiều kiểu dữ liệu khác nhau và tham
gia rộng rãi của ng•ời dùng.
4. Trị số trọng số đ•ợc gán cho mỗi bộ phân loại trong b•ớc 3 (thí dụ
đơn giản = 6, trung bình = 8, phức tạp = 10 hay trung bình có thể mở
rộng thành 7, 8 và 9). Mỗi loại chức năng có thể có một bộ trọng số khác
nhau.
Các giá trị của mọi chức năng đã gán trọng số đều đ•ợc thêm vào,
cung cấp trị số FPA ch•a đ•ợc phán xét (UFP).
5. Các thuộc tính của độ phức tạp xử lý đã đ•ợc xác định. Nó có thể
bao gồm54.
Chức năng truyền thông dữ liệu
Dữ liệu và kiểm tra đ•ợc chuyển khu vực và xa xôi
Chức năng phân tán
Chức năng dữ liệu phân tán
Chức năng xử lý phân tán
Hoàn thành
Mục tiêu hoàn thiện nh• ảnh h•ởng của năng suất và độ
nhạy tới các hoạt động phát triển
Sử dụng cấu hình
Mức độ sử dụng phần cứng: đ•ờng truyền thông.
Tỉ suất giao dịch
Mức độ tỉ suất giao dịch ảnh h•ởng tới phát triển
Nhập dữ liệu th•ờng trực
Mức độ các chức năng dữ liệu th•ờng trực đ•ợc hệ thống xử
lí
Hiệu quả của ng•ời dùng cuối
54 Albrecht và Gaffney (1983) gợi ý 14 nhân tố phức tạp và Symons (1988) gợi ý phụ thêm 6.
Quản lý dự án phần mềm
224
Hiệu quả yêu cầu của xử lý chức năng dữ liệu th•ờng trực
đ•ợc ng•ời dụng cuối thực hiện
Cập nhật th•ờng trực
Mức độ cập nhật yêu cầu cho các file trung gian logic
Xử lý phức tạp
Mức độ ảnh h•ởng của xử lý phức tạp tới phát triển. Điều này
bao gồm bộ xử lý ngắt, mã táI-nhập, thuật toán phức tạp, I/O v.v.
Tái sử dụng
Mức độ mã phải đ•ợc phát triển coi nh• tái sử dụng cho các
hệ khác.
Dễ lắp đặt.
Mức độ việc dễ lắp đặt ảnh h•ởng đến phát triển
Dễ vận hành
Mức độ yêu cầu về việc dễ dàng trong những chức năng nh•
sao l•u, phục hồi, giao diện của ng•ời v.v.
Các điểm đa bội
Mức độ mà hệ thống đ•ợc phát triển cho các điểm khác nhau
và các loại ng•ời dùng khác nhau
Giúp thay đổi dễ dàng
Mức độ mà phần mềm phải đ•ợc phát triển để hỗ trợ thay đổi
chức năng dễ dàng.
6. Mỗi mức độ xử lý ảnh h•ởng tới mỗi yếu tố phức tạp đ•ợc chỉ định
căn cứ ở 1 trong những trị số sau:
0: Không tồn tại
1: Không đáng kể
2: Vừa phải
3: Trung bình
4: Đáng kể
5: Mạnh
và tổng số các trị số yếu tố phức tạp đ•ợc tính cung cấp tổng mức ảnh
h•ởng (TGI)
7. Tổng mức trị số ảnh h•ởng đ•ợc chuyển đổi sang nhân tố điều
chỉnh phức tạp (CAP). Hàm chuyển đổi đơn giản có thể là:
8. Độ đo chức năng điều chỉnh (APF) cho dự án đ•ợc tính là:
AFP = CAF x UFP
DựCAF
Dự 5 x (số các nhân tố phức tạp)
TGI
D
Quản lý dự án phần mềm
225
Bảng 10.6 Các trị FPA cho các kiểu dự án khác nhau
Dự án HFP C FP A FP
Hệ thời gian và bảo
d•ỡng
1200 0.42 504
Hệ kiểm tra trung nhập 680 0.87 592
Bảng 10.6 có thí dụ về các trị số có đ•ợc ở phân tích chức năng. Các trị
số trong bảng chứng minh tầm quan trọng của việc điều chỉnh trị số chức
năng. Hệ thống xử lý dữ liệu th•ơng mại lớn cung cấp UFP lớn hơn hệ
thống thời gian thực nhiều, nh•ng sự điều chỉnh phức tạp này tạo nên trị
số điều chỉnh cao hơn cho hệ thống thời gian thực. Kết luận là ngay dù hệ
thời gian và bảo d•ỡng có số chức năng hầu nh• gấp đôi hệ thống kiểm
tra truy nhập, tính phức tạp của hệ kiểm tra truy nhập cho thấy nó sẽ đòi
hỏi nhiều công sức hơn để phát triển.
10.5.2 ứng dụng của FPA.
Có nhiều t•ơng đồng giữa dự toán COCOMO và phân tích điểm hàm.
Cả hai ph•ơng pháp sử dụng kỹ thuật chất tải t•ơng tự để điều chỉnh dự
toán ban đầu. Dù sao, FPA chỉ phụ thuộc ở tính chức năng của hệ thống
đ•ợc dự toán và không ở bất cứ dự toán nào đã tính tr•ớc đây (thí dụ
dòng mã, qui mô mô đun).
Nh• chúng ta đã thấy, độ đo FPA là có ích để so sánh công sức của các
dự án. Nó không trực tiếp cung cấp ph•ơng pháp dự toán chi phí của một
dự án. Căn cứ ở giả định là có t•ơng quan cao giữa chi phí và công sức,
hàm có thể vận dụng cho trị số FPA để có đ•ợc dự toán chi phí. Hàm đơn
giản có thể dựa trên kinh nghiệm đã qua chẳng hạn dự án tr•ớc đây với trị
số AFP là 1.000 hết $1.500.000 để phát triển và dự án khác tr•ớc đây với
trị số AFP 850 hết $900.000. Nếu ta giả định t•ơng quan tuyến tính, thì
nếu dự án hiện hành đ•ợc dự toán có trị số AFP là 920 chúng ta sẽ dự
toán chi phí của nó là $1.800.000.
Những ph•ơng pháp tính vi hơn để tính công sức (giờ lao động) và qui
mô mã (KS LOC) đ•ợc Albrecht và Gaffney tình bày (1983).
Ph•ơng pháp COCOMO có thể đ•ợc vận dụng cùng với phân tích điểm
hàm để thực hiện 2 mục đích quan trọng:
1. Đảm bảo là dự toán hợp lý (không chênh lệch kết quả đáng kể)
2. Tạo ra bộ dự toán dễ hiểu hơn(trị số so sánh và trị số chi phí).
Việc sử dụng COCOMO kết hợp với phân tích điểm hàm đ•ợc Ratcliff
và Rollo (1990) nghiên cứu đi đến kết luận là “mục tiêu dài hạn có hiệu
quả hơn hẳn là sự phát triển mô hình dự toán chung mới cho hệ dọc vận
hành” có thể cho rằng tạo nên một bộ dự toán dể hiểu hơn. Nh•ng
Quản lý dự án phần mềm
226
COCOMO và FPA đã đ•ợc phối hợp thành công trong tiện ích dự toán
máy tính hoá dễ hiểu55 sử dụng cả hai kỹ thuật về dự toán chi phí và qui
mô của dự án phần mềm. Thuộc tính của hai kỹ thuật trong tiện ích này
có thể đ•ợc điều chình dựa trên kinh nghiệm có đ•ợc trong khi sử dụng
và những mô hình xen kẽ (thuộc tính của mỗi mô hình) có thể đ•ợc l•u
giữ riêng rẽ và chất tải trong tiện ích khi cần.
10.6 Dự toán là một lĩnh vực.
Nếu đ•ợc hỏi mất bao lâu để phát triển một mô đun phần mềm duy
nhất, thì một nhà lập trình có kinh nghiệm hẳn chắc chắn trả lời “điều đó
còn tuỳ”. Nh• chúng ta đã thấy, điều đó tuỳ thuộc vào ngôn ngữ lập trình,
vào tính phức tạp logic, vào cá nhân ng•ời lập trình và có thể vào những
yếu tố khác. Nếu bị ép trả lời rõ, thì cũng nhà lập trình đó hẳn sẽ trả lời là
có thể mất đâu đó trong khoảng từ 2 ngày và đến 2 tuần. Đây là câu trả
lờì có gía trị. Dự toán th•ờng đ•ợc trình bày là một phạm trù. Phạm trù là
một dự toán có ích trong lập kế hoạch phát triển của một dự án. Quản lý
th•ờng sẽ sẵn sàng chấp nhận một dự án ban đầu cho biết dự án sẽ không
d•ới $400.000 và không trên $750.000. Những loại dự toán nh• thế
th•ờng đ•ợc dùng trong các pha qui hoạch của một dự án. Càng trở nên
có đ•ợc nhiều thông tin, phạm vi càng trở nên đ•ợc thu hẹp hơn, thậm chí
có khi trở thành một con số duy nhất.
Lý thuyết thống kê đằng sau tiếp cận đó đề cập đến quan niệm khoảng
tin cậy. Nếu một biến x có xác suất p ở giữa hai trị số a và b thì chúng ta
nói khoảng cách (a,b) là khoảng cách p-tin-cậy của x.
Lấy thí dụ, nếu (2,14) là khoảng cách tin cậy 95% có số ngày cần để
phát triển một mô đun thì chúng ta có 95% chắc chắn là phát triển mô
đun sẽ mất hơn 2 và kém 14 ngày để phát triển56.
Thêm một lời về sự chắc chắn 95%. Nếu chúng ta có 95% chắc chắn về
cái gì, thì trong 100 tr•ờng hợp chúng ta trông đợi đúng 95% lần và 5 lần
sai.
Phạm trù xét đến ở đây sẽ là phạm trù dự tính cho một thuộc tính dự án
đã cho, nh• SLOC, nh• chi phí phát triển, nh• qui mô đội phát triển, nh•
thời gian phát triển v.v.
Chúng ta hãy giả định một phân bổ chính tắc dự toán. Điều đó có
nghĩa nếu 20 ng•ời chuyên môn phần mềm đ•ợc yêu cầu dự toán số ngày
cần để phát triển một mô đun phần mềm đặc tr•ng, chúng ta trông đợi kết
quả t•ơng tự trong phân bổ với nh• sau:
1 ng•ời sẽ dự toán 2 ngày
55 Tiện ích máy tính tham khảo, Before you leap (BYL) đ•ợc nhóm Gordon Group, California công
bố
56 chặt chẽ mà nói định nghĩa toán học của xác suất liên quan đến hàm tạo ra trị số giữa 0 và 1.
Dù sao trong thế giới thực đặc biệt trong thế giới kinh doanh xác suất th•ờng đ•ợc biểu thị theo
phần trăm trên thực tế trong thí nghiệm này của bản thân tác giả phần trăm đ•ợc chuộng trong
trình bày dự toán cho quản lý vì chúng dễ nắm bắt hơn.
Quản lý dự án phần mềm
227
2 sẽ dự toán 5 ngày
4 sẽ dự toán 7 ngày
6 sẽ dự toán 9 ngày
4 sẽ dự toán 11 ngày
2 sẽ dự toán 13 ngày
1 sẽ dự toán 16 ngày
H10.3
Phân bổ chính tắc dự toán.
Hình 10.3 giới thiệu đồ thị của các con số trên. Đ•ờng biểu diễn có
đ•ợc, trong thống kê đ•ợc coi là đồ thị hàm phân bổ chính tắc57. Phân bổ
chính tắc biểu thị bằng đồ thị hình dáng đều đặn có phân bổ đều các diễn
biến quanh số trung bình. Trong thí dụ trên, dự toán bình quân là 9 ngày
với càng nhiều dự toán d•ới trung bình nh• trên và quan trọng hơn cả, cả
tần độ và cự ly các dự toán d•ới trung bình là t•ơng tự nh• những cái trên
trung bình. Nhiều sự kiện th•ờng xảy ra về bản chất diễn ra là phân bổ
chính tắc; chẳng hạn chiều cao của sinh viên nam (hay nữ) trong một lớp
học, hay số những ngày m•a tháng 4 “ngoại trừ n•ớc Anh, bao giờ cũng
là 30”.
Giờ chúng ta hãy xem một bộ trả lời thứ hai có thể có của một nhóm
các nhà chuyên môn phần mềm với cùng câu hỏi:
1 ng•ời sẽ dự toán 7 ngày
4 sẽ dự toán 9 ngày
10 sẽ dự toán 121 ngày
57 với ng•ời có ý nghĩ toán học, chặt chẽ mà nói, phân bổ chính tắc là phân bổ liên tục. Để đơn giản,
chúng ta cũng bao gồm cả phép tính gần đúng riêng biệt của phân bố chuẩn
Ngày
Dự t
Quản lý dự án phần mềm
228
4 sẽ dự toán 13 ngày
1 sẽ dự toán 15 ngày
H10.4
Phân bổ chính tắc các dự toán có sai dị ít.
Hình 10.4 giới thiệu đồ thị của những kết quả mới đó. Đ•ờng biểu
diễn, biểu thị các kết quả đó, không nghi ngờ gì cũng biểu thị phân bổ
chính tắc. Dù sao, đ•ờng biểu diễn hình chuông mỏng lại và cao hơn
trong thí dụ đầu. Trong tr•ờng hợp này. Tình trạng trả lời sai trệch có ít
hơn trong thí dụ đầu. Trung bình cũng lại chuyển dịch bây giờ là 11
ngày.
Mọi phân bổ chính tắc đ•ợc biểu thị bởi hai thông số, số trung bình
(kỳ vọng) và mức độ sai lệch (ph•ơng sai). Số trung bình đ•ợc coi là trị
số mong đợi, , và mức độ sai lệch đ•ợc coi là sai lệch chuẩn .
Chúng ta sẽ sử dụng các phép tính gần đúng58 để tính các tham số phân
bổ chính tắc của các dự toán dự án phần mềm khác nhau.
B•ớc đầu là tính dự toán tr•ờng hợp tồi nhất và dự toán tr•ờng hợp tốt
nhất. Những số đó có thể đ•ợc dự toán bởi một các nhân hoặc bởi một
nhóm ng•ời. Nếu chúng ta dự toán rằng việc phát triển của một bộ driver
truyền thông đồng bộ hẳn nhanh nhất là 4 tuần, chậm nhất là 12 tuần, khi
đó dự toán tr•ờng hợp tốt nhất là 4 tuần còn tr•ờng hợp xấu nhất là 12
tuần (đó không phải là một khoảng tin cậy, vì rằng chúng ta không biết
xác suất của sự đúng đắn trong tính toán của chúng ta). Hai giá trị này,
58 thí dụ phép tính gần đúng của Nienbung (1989), để biết đ•ợc đầy đủ về các chủ đề này nọ của
thống kê, hãy coi Fraser (1976).
Dự tNgày
Dự t
Quản lý dự án phần mềm
229
tr•ờng hợp tốt nhất và tr•ờng hợp xấu nhất, là gần đúng với hai tháI cực
của đ•ờng cong phân bố chuẩn.
Bây giờ chúng ta cần phải tính toán các giá trị trung gian giữa hai giá
trị thái cực đó. Càng nhiều dự toán chúng ta có thể cung cấp giữa hai cực
đ•ờng biểu diễn chính tắc càng chính xác hơn. Dù sao, chúng ta sẽ tính
gần đúng với trị số trung gian duy nhất, tr•ờng hợp rất có thể nhất. Trong
thí dụ trên nếu bốn tuần là dự toán tr•ờng hợp tốt nhất và 12 tuần là dự
toán tr•ờng hợp tồi nhất, chúng ta có thể kết luận là sáu tuần là thoả đáng
về thời gian cho sự phát triển của ng•ời điều khiển liên lạc đồng bộ,
thành thử 7 tuần là tr•ờng hợp rất có thể nhất (Xin nhớ là tr•ờng hợp rất
có thể nhất là dự toán độc lập và không phải là số trung bình suy từ các
dự toán tr•ờng hợp tốt nhất và tr•ờng hợp tồi nhất). Khi sử dụng ba dự
toán, tr•ờng hợp tốt nhất, rất có thể và tồi nhất chúng ta sẽ qui xác suất
cho mỗi tr•ờng hợp nh• sau59:
= (tr•ờng hợp tồi nhất + 4 rất có thể + tr•ờng hợp tốt nhất)
P (tr•ờng hợp tốt nhất) = 0,2
P (tr•ờng hợp rất có thể) = 0,6
P (tr•ờng hợp tồi nhất)= 0,2
Định nghĩa riêng biệt của trị số trông đợi là = E (x) = xP(x)
Bởi vậy, gần đúng của trị số trông đợi trong thí dụ tr•ớc hẳn là:
=E(x) = 0,24 + 0,67 + 0,212 = 7,4
Giá trị gần đúng đơn giản cho sai dị chuẩn hẳn là hiệu số của các cực
trị nhân với xác suất của chúng:
= (tr•ờng hợp tồi nhất) P(tr•ờng hợp tồi nhất) -
(tr•ờng hợp tốt nhất P(tr•ờng hợp tốt nhất)
Trong thí dụ tr•ớc sẽ cho: = 0,212 – 0,24 = 16
Chúng ta có thể sử dụng các bảng phân bổ chính tắc để phát hiện là:
(, ) cho 68% khoảng tin cậy
(, ) cho 95% khoảng tin cậy
(, ) cho 99% khoảng tin cậy
59 Cả Nienburg (1989) và Sodhi (1990) đều dùng công thức tiệm cận tuơng tự sau:
= (tr•ờng hợp xấu nhất + 4 tr•ờng hợp hay xẩy ra nhất + tr•ờng hợp tốt nhất)/6
Quản lý dự án phần mềm
230
Điều này có nghĩa là trong thí dụ trên, chúng ta có thể dự toán thời
gian để phát triển ng•ời điều khiển liên lạc đồng bộ là giữa 4,2 ngày và
106 ngày và chúng ta tin cậy 95% của dự toán của chúng ta. Chúng ta
cũng có thể dự toán thời gian phát triển là giữa 5,8 ngày và 9 ngày, nh•ng
rồi chúng ta chỉ có thể là 68% tin cậy của dự toán của chúng ta.
Một trong những tính chất của thông kê là kết quả chỉ có thể tốt nh• dữ
liệu mà chúng dựa vào “một dạng của ‘rác vào thì rác ra’”. Do đấy quan
trọng là phải dành thời gian và công sức cần thiết cho sự phát triển của 3
dự toán có hiệu quả. Một ph•ơng cách vững vàng, mặc dù công phu là
đòi hỏi một số các kỹ s• phần mềm (cho là 6) để chuẩn bị các dự toán cá
nhân cho các tr•ờng hợp tồi nhất, tốt nhất và rất có thể. Dự toán tr•ờng
hợp tồi nhất và dự toán tr•ờng hợp tốt nhất hẳn là hai cực có đ•ợc trong
khi dự toán tr•ờng hợp rất có thể hẳn hoặc là trung bình, bình quân hay
th•ờng xuyên nhất (ph•ơng thức)
10.7 dự toán các nguồn lực phần cứng.
Phần mềm phải đ•ợc thiết kế khớp một cách thoải mái vào môi tr•ờng
chủ của nó. Môi tr•ờng chủ bao gồm phần cứng mục tiêu và các thuộc
tính của nó. Thiết kế phần mềm tồi có thể dẫn đến quá tải của công suất
CPU hay có thể v•ợt quá công suất bộ nhớ có đ•ợc hay l•u giữ hàng loạt.
Đôi khi điều này có thể, nh•ng không phải luôn luôn đ•ợc bổ cứu bằng
cách triển khai (mở rộng) phần cứng mục tiêu, dẫn đến tăng chi phí dự
án.
Các nguồn phần cứng đ•ợc đo bằng đơn vị của nguồn đặc biệt xét đến:
với truyền thông thì bit/giây (hay byte/giây), với kho nhớ là kilobyte,
megabyte và thậm chí là gigabyte, với CPU đặc hiệu thì phần trăm của tải
CPU. Nguồn chủ yếu, tuỳ thuộc nặng nề vào phần cứng, mặc dù trên thực
tế không phải bản thân phần cứng, mà là tốc độ. Dự toán tốc độ mô tả kỳ
vọng của chúng ta về mặt thực hiện của hệ thống phải phát triển và
th•ờng đ•ợc yêu cầu trong pha quy hoạch sớm của dự án.
Chúng ta sẽ xem xét các ph•ơng pháp dự toán ba nguồn chính sau:
1 tải CPU
2 l•u giữ dữ liệu
3 tốc độ
Tốc độ mặc dù là thuộc tính chứ không là nguồn, vẫn sẽ đ•ợc xem là
nguồn cho mục đích thảo luận này.
10.7.1 Tải CPU
Dự toán tải CPU có thể hoàn toàn phức tạp, đặc biệt trong môi tr•ờng
xử lý nhiều hộ mà vào một thời gian đã cho phải hơn một xử lý có thể
phải cạnh tranh cho CPU. Điều này t•ơng tự nh• xếp hàng dịch vụ trong
đó một số những ng•ời yêu cầu dịch vụ chờ đợi dịch vụ, đ•ợc một hay
Quản lý dự án phần mềm
231
nhiều nguời cung cấp dịch vụ cung cấp. Trong bối cảnh của chúng ta,
những ng•ời yêu cầu dịch vụ là bộ xử lý và ng•ời cung cấp dịch vụ là
CPU. Vấn đề xếp hàng dịch vụ là vấn đề phổ thông trong vận trù học và
đ•ợc giải quyết có sự hỗ trợ của hống kê. Để thảo luận thêm về lý thuyết
xếp hàng, hãy coi Gillett (1976)
Chúng ta sẽ xem xét tải CPU trong môi tr•ờng xác định hơn một chút.
Chúng ta giả sử rằng ở vào thời gian đã cho, chúng ta có thể xác định có
những yêu cầu nào đối với các nguồn xử lý CPU. Không có giả định đó,
dự toán tải CPU không thể tính toán đ•ợc và chỉ có thể đ•ợc suy ra khi
mô phỏng môi tr•ờng thực tại và quan sát kết qủa.
Tải CPU đ•ợc dự toán thành phần trăm. Chúng ta nói một hệ thống có
75% tải CPU, có nghĩa là 25% của năng suất xử lý có đ•ợc cho những
nhiệm vụ phụ.
Tải CPU luôn đ•ợc đo trong tình huống tr•ờng hợp tồi nhất. Một tải
CPU 75%, có nghĩa là vào một thời gian đã cho, không quá 75% CPU
đ•ợc sử dụng. Dù sao, điều này là nghịch lý, vì trên thực tế chúng ta biết
là vào mọi lúc 100% CPU đã đ•ợc sử dụng. Do đó chúng ta phải định
nghĩa là cái mà ta muốn nói về sử dụng CPU cho mục đích dự toán.
Thứ nhất tải CPU luôn đ•ợc đo trong phạm vi một cửa sổ thời gian đặc
biệt. Điều này có nghĩa trong một khoảng thời gian đặc biệt (chẳng hạn
có thể là 10 ly giây) chúng ta đo l•ợng thời gian mà CPU sử dụng. Một
trong những nhiệm vụ chính là lựa chọn cửa sổ thời gian thích hợp.
Nhằm xác định sử dụng CPU trong phạm vi cửa sổ thời gian, chúng ta
chỉ xem xét những nhiệm vụ không thể xử lý đ•ợc vào bất cứ thời gian
nào khác. Trong một hệ thống mà chẩn đoán đ•ợc thực hiện trên cơ sở
bất cứ khi nào CPU không có nhiệm vụ nào khác để xử lý, chúng ta hẳn
không xem xét những nhiệm vụ chẩn đoán trong tính toán tải CPU.
Một hệ thống có 60% tải CPU trong một cửa sổ 10 ly giây có thể chấp
nhận một nhiệm vụ phụ 4 ly giây nếu nhiệm vụ đó có thể dung thứ chậm
trễ tối đa 10 ly giây.
Lấy thí dụ, chúng ta sẽ xem xét đầu vào dữ liệu ở một cảng biên lạc.
Nếu cổng có suất chuyển giao dữ liệu 1200 bit mỗi giây thì một byte có
thể có đ•ợc ở cổng đầu vào xấp xỉ mỗi 7 ly giây và chúng ta phải sẵn
sàng rút một byte khỏi cổng tr•ớc khi byte sau trở nên có đ•ợc. Do đấy
bộ điều khiển cảng liên lạc có thể chấp nhận dung sai tối đa 6 ly
giâychậm trễ (giả định 1 ly gây thời gian xử lý).
Dự toán tải CPU hầu hết th•ờng đ•ợc yêu cầu trong các hệ thống thời
gian thực. Chúng hiểu khi đ•ợc yêu cầu trong hệ thống xử lý dữ liệu
th•ơng mại. Các hệ thống thời gian thực th•ờng đ•ợc biểu thị bằng vòng
lặp hệ thống cơ bản, th•ờng đ•ợc coi là vòng lặp chính hay điều hành.
Đây là nhiệm vụ mức thấp, ở đó vòng lặp vô hạn, thực hiện một bộ các
nhiệm vụ đồng bộ điều khiển hệ thống. Trong nhiều tr•ờng hợp, vònh lặp
mức thấp hiện nay là bộ phận của hệ thống điều hành, nó có thể đ•ợc cấu
hình dựa trên thời gian chu kỳ yêu cầu cho vòng lặp. Vòng lặp mức thấp
này có thể đ•ợc lựa chọn coi nh• cửa sổ thời gian cho việc tính toán tải
Quản lý dự án phần mềm
232
CPU. Nếu vòng lặp chính thậm chí bao gồm nhiều vòng lặp nhanh mức
thấp thì vòng lặp nhanh nhỏ nhất có thể đ•ợc chọn làm cửa sổ thời gian
(coi hình 10.5).
H10.5
Thi hành thời gian thực với các vòng lặp nhanh và chậm
Bộ các b•ớc sau mô tả ph•ơng pháp tính tải CPU. Ph•ơng pháp này đòi
hỏi một phân giải ban đầu hệ thống thành những nhiệm vụ phần mềm chủ
yếu và thời gian thực hiện dự kiến cho mỗi nhiệm vụ.
1. Xác định vòng lặp hệ thống mức thấp nhất, và suy từ điều là cửa sổ
thời gian đó đ•ợc sử dụng để xác định tải CPU.
2. Hoàn thiện định thời gian cho phân tích hệ thống và nhận ra mọi
nhiệm vụ có thể đ•ợc yêu cầu xử lý trong phạm vi cửa sổ thời gian đó.
3. Phối hợp các thời gian thực hiện dự toán cho mọi nhiệm vụ đ•ợc
nhận ra ở b•ớc 2.
4. Phân chia kết quả của b•ớc 3 theo qui mô của cửa sổ thời gian.
Xin nhớ là b•ớc 2 đòi hỏi nhận ra bất cứ nhiệm vụ nào có thể yêu cầu
(chứ ch•a đ•ợc yêu cầu) thời gian CPU trong phạm vi cửa sổ thời gian.
Điều này bao gồm những nhiệm vụ của hệ thống điều hành.
Ta hãy xét thí dụ sau. Một hệ thống điều khiển quan tâm tích cực đ•ợc
máy tính hoá bao gồm những hợp phần chính sau.
1. Đầu vào dữ liệu từ thiết bị điều khiển.
2. Báo động.
3. Hợp phần giao diện ng•ời dùng.
4. Vòng lặp điều hành để đọc thiết bị điều khiển.
Vòng lặp điều hành bao gồm:
Vòng lặp nhanh
Vòng lặp nhanh
Vòng lặp nhanh
Vòng lặp nhanh
Vòng lặp chậm
Quản lý dự án phần mềm
233
i. Một vòng lặp chính đọc hai đầu vào phức tạp cũng đòi hỏi một chút
xử lý logic cứ mỗi 400 mili-giây một lần. Nhiệm vụ này đ•ợc dự toán là
60 mili-giây một.
ii. Một vòng lặp nhanh đọc hai đầu vào mỗi 40 mili-giây. Những
nhiệm vụ này đ•ợc dự toán là 10 mili-giây một.
Có 10 vòng lặp nhanh trong phạm vi vòng lặp chính. Chúng ta sẽ lựa
chọn cửa sổ thời gian là 40 mili-giây. Khi tính tr•ờng hợp tồi nhất, trong
phạm vi cửa sổ thời gian, chúng ta sẽ xem xét những nhiệm vụ vòng lặp
nhanh tr•ớc đã. Những nhiệm vụ đó sử dụng ngay lập tức tới 20 mili-giây
trong 40 mili-giây có đ•ợc. Điều đó có nghĩa là trong vòng lặp chính 400
mili-giây chỉ có 200 mili-giây đ•ợc dành cho những nhiệm vụ khác.
Trong đó, 120 mili-giây đ•ợc yêu cầu cho hai nhiệm vụ vòng lặp chính
có thể đ•ợc điều tiết dễ dàng. Nếu chúng ta chia đều những những nhiệm
vụ của vòng lặp chính, giữa các vòng lặp nhanh, thì 12 mili-giây phụ sẽ
phải có đ•ợc ở cửa sổ thời gian, để có đ•ợc tổng số 32 mili-giây.
Hình 10.6
Thi hành thực với các vòng lặp chậm và nhanh
(a) Cảm thụ phân tích thời gian
(b) Định thời thi hành thực tại
Spare & Background
Vòng lặp chậm
Vòng lặp nhanh
Dự toán dựa trên
Dự toán dựa trên
Spare & Background
Vòng lặp chậm
Vòng lặp nhanh
40 80 120 160 200 240 280 320 360 400 t(ms)
40 80 120 160 200 240 280 320 360 400 t(ms)
(a)
(b)
Quản lý dự án phần mềm
234
Chúng ta có thể giả định là một khi nhiệm vụ báo động đ•ợc thực hiện,
mọi nhiệm vụ khác bị thui chột, khiến chúng ta không cần thiết xem xét
thời gian thực hiện cho các nhiệm vụ này nữa. Hợp phần giao diện của
ng•ời dùng không phải là hoạt động thời gian thực (so sánh với các
nhiệm vụ đầu vào điều khiển thiết bị) và chúng ta có thể cho là giao diện
của ng•ời dùng sẽ đ•ợc xử lý bằng phần dự trữ của vòng lặp chính 20
mili-giây trên nền. Các vòng lặp điều hành t•ơng đối đơn giản và đ•ợc dự
kiến yêu cầu ít hơn 1 mili-giây và do đó cũng đ•ợc loại ra khỏi việc tính
toán này.
Tải CPU cho hệ thống điều khiển đ•ợc tăng c•ờng là
32/40 = 0,80
có nghĩa là tải CPU bằng 80% trong cửa sổ thời gian 40 mili-giây. Thí
dụ này đ•ợc minh hoạ trong hình 10.6.
Một tình huống lý thú xuất hiện khi việc tính toán tải CPU cho kết quả
lớn hơn 1.00. Điều này có nghĩa tải CPU lớn hơn 100%! Kết luận hiển
nhiên là bộ xử lý bất lực trong việc thực hiện các nhiệm vụ yêu cầu.
Trong những tr•ờng hợp đó, có hai biện pháp sửa chữa có thể đ•ợc: hoặc
yêu cầu của hệ thống phải giảm đi hoặc bộ xử lý nhanh hơn phải đ•ợc sử
dụng.
Nếu nh• một tải CPU 100% có gây ra vấn đề, thì thông th•ờng một tải
CPU 90% cũng gây ra vấn đề không kém. Điều này là do việc dự toán tải
CPU ít khi đ•ợc chính xác. Cũng vậy, việc thay đổi yêu cầu trong phát
triển dự án th•ờng làm tăng tải CPU. Một nhận định khác là nhu cầu dự
trữ nguồn CPU cho sự mở rộng sau này của hệ thống. Bao giờ đây cũng là
thực tiễn tốt để thiết kế một hệ phần mềm, sao cho khởi thuỷ không cần
quá 60% tải CPU.
10.7.2 L•u giữ dữ liệu.
Chúng ta sẽ sử dụng từ l•u giữ dữ liệu cho cả l•u giữ phần cứng và l•u
giữ dữ liệu. Việc sử dụng l•u giữ dữ liệu căn bản là một vấn đề thiết kế và
thông th•ờng có liên quan (tuy hạn chế) về yêu cầu cho hệ thống. Các
yêu cầu có thể xem xét l•u giữ dữ liệu ở khía cạnh chi phí, do việc thiết
kế l•u giữ dữ liệu không hiệu qủa có thể đòi hỏi quá mức các ph•ơng tiện
l•u giữ, nh• bộ điều khiển đĩa và bộ nhớ. Những ph•ơng tiện không nhất
thiết đó biến thành những khoản chi phí bổ xung.
Các yêu cầu cũng có thể nói đến l•u giữ dữ liệu trong khung cảnh
không gian. Yêu cầu là hệ thống phải cung cấp 30% không gian đĩa mềm
và bộ nhớ dự trữ, có thể có tác động to lớn đến thiết kế l•u giữ dữ liệu,
đặc biệt trong một hệ thống mà việc tiêu dùng bộ nhớ trong vận hành là
sát tới giới hạn.
Xét toàn cục, ng•ời dùng không nhìn thấy đ•ợc việc sử dụng l•u giữ
dữ liệu, và do đó việc đó chủ yếu đ•ợc xác định trong pha thiết kế. Dù
sao, dự toán sơ bộ b•ớc đầu đ•ợc yêu cầu ngay ở những pha sớm nhất
Quản lý dự án phần mềm
235
của dự án, để đảm bảo là cấu hình phần cứng mục tiêu có khả năng trợ
giúp cho hệ thống phần mềm đ•ợc phát triển.
Độ đo khối l•ợng phần mềm đ•ợc phát triển nh• bàn đến tr•ớc đây ở
phần 10.1 có thể là các dòng mã (KSLOC) hay Kilobyte bộ nhớ. Việc l•u
giữ bộ nhớ chỉ đ•ợc dự toán theo đơn vị Kbyte. B•ớc đầu liên quan đến
phân giải hệ thống, t•ơng tự ph•ơng pháp dự toán từng b•ớc mô tả trong
phần 10.2. Lần này mục tiêu là mô tả khối l•ợng bộ nhớ mà mỗi mô đun
yêu cầu lúc thực hiện.
Các hợp phần phần mềm mức thấp đ•ợc phối hợp thành những nhóm
mô đun c• trú cạnh tranh bộ nhớ. Rồi các yếu tố khác cũng đ•ợc xem xét
nh• phân bố động bộ nhớ, yêu cầu của hệ thống điều hành và các buffer
c• trú trong bộ nhớ và các bảng.
Ph•ơng pháp sau cung cấp dự toán bộ nhớ dựa trên sử dụng bộ nhớ
tr•ờng hợp tồi nhất trong quá trình thực hiện hệ thống.
1. Phân giải hệ thống thành các mô đun mức thấp và dự toán các yêu
cầu bộ nhớ cho mỗi mô đun vào lúc thực hiện.
2. Nhận ra các yêu cầu bộ nhớ gián tiếp của mỗi mô đun căn cứ vào
Các vùng hoạt động động và tĩnh của bộ nhớ.
Các bảng c• trú bộ nhớ
Các buffer (đệm)
3. Nhận ra bộ các mô đun bộ nhớ với yêu cầu bộ nhớ phối hợp lớn
nhất mà sẽ là c• trú của bộ nhớ bất cứ lúc nào.
4. Duyệt lại t•ơng quan giữa mô đun bộ nhớ và loại bỏ yêu cầu bộ nhớ
trùng lặp.
5. Lặp lại các b•ớc 3 và 4 cho đến khi việc sử dụng bộ nhớ lợi nhất
đ•ợc trông đợi đã nhận ra.
6. Nhận ra các yêu cầu bộ nhớ mức hệ thống nh•:
Bảng c• trú của bộ nhớ
Buffer file (bộ đệm của file)
Kích cỡ stack.
7. Tính toán toàn bộ sử dụng bộ nhớ của hệ thống điều hành.
8. Phối hợp các kết quả của các b•ớc 5,6, và 7 tạo nên toàn bộ dự toán
l•u trữ bộ nhớ.
B•ớc 7 phải loại trừ các yêu cầu bộ nhớ đã đ•ợc xét đến ở các b•ớc 5
và 6 (thí dụ cùng các buffer của file phải không xét đến ở b•ớc 2 và b•ớc
6).
Việc sử dụng overlay có thể giảm yêu cầu bộ nhớ, nh•ng điều này sẽ
đạt đ•ợc với sự thực hiện tốn kém cho các nguồn phụ, nh• đĩa I/O, tải
CPU và tốc độ thực hiện. Tình trạng bất lợi (trade-off) giữa bộ nhớ và tốc
độ là một yếu tố thông th•ờng trong hầu hết các hệ thống phần mềm.
Dự toán các yêu cầu l•u giữ hàng loạt ít gay cấn hơn dự toán yêu cầu
của bộ nhớ. Bộ nhớ của máy tính hạn chế nhiều hơn l•u giữ đĩa. L•u giữ
đĩa th•ờng chỉ bị hạn chế ở chi phí thiết bị l•u giữ đĩa.
Quản lý dự án phần mềm
236
Dự toán sử dụng l•u giữ đĩa phải tính đến các tiêu dùng l•u giữ đĩa sau
đây:
1. Hệ thống điều hành cố định và tiện ích dịch vụ.
2. Các yêu cầu hệ thống điều hành biến đổi (overlay và vùng swap,
các file hệ thống v.v..)
3. Phần mềm dự án.
4. Các file dữ liệu.
Vì mục đích thảo luận này, chúng ta sẽ bao gồm cả khối ch•ơng trình
dịch vụ, nh• cơ sở dữ liệu và ch•ơng trình truyền thông, coi nh• bộ phận
của hệ thống điều hành. Thông tin liên quan đến sử dụng đĩa của hệ
thống điều hành th•ờng do ng•ời bán hàng của hệ thống điều hành cung
cấp. Dù sao, nếu hệ thống điều hành đ•ợc phát triển nh• là bộ phận của
dự án thì nó phải đ•ợc dự toán hoặc coi nh• hệ thống riêng biệt hoặc coi
nh• bộ phận của phần mềm dự án (coi nh• hệ thống phụ).
Những yêu cầu của hệ thống điều hành thay đổi phụ thuộc ở cấu hình
của hệ thống điều hành đặc tr•ng và ở phần mềm của dự án. Lấy thí dụ
không gian của đĩa cho overlay vừa là chức năng của hệ thống điều hành
vừa là chức năng của thiết kế phần mềm thực tại. Những hệ thống điều
hành tiên tiến th•ờng cung cấp tiện ích cho tổng phí đĩa dự toán (cả về
mặt l•u giữ và truy nhập) khi sử dụng overlay. Vùng swap cho các ứng
dụng đa ng•ời dùng th•ờng cũng có thể lấy kích cỡ dựa trên các tiện ích
của hệ thống điều hành tiêu chuẩn. Các tiện ích đó th•ờng là phần chung
điều chỉnh hay công cụ cấu hình của các hệ điều hành.
Dự toán cho các yêu cầu về đĩa của phần mềm dự án là thẳng thừng và
đ•ợc lập bởi việc phân giải hệ thống. Tổng các dự toán cho mỗi mô đun
tạo ra các yêu cầu về đĩa cho toàn bộ phần mềm dự án đ•ợc phát triển.
Việc chuẩn bị dự toán cho mọi kích cỡ file dữ liệu là một nhiệm vụ
buồn tẻ và đ•ợc căn cứ ở kích cỡ của các bản ghi riêng rẽ và số tối đa các
bản ghi cho mỗi file. Nó trở nên phức tạp hơn khi các bản ghi có chiền
dài thay đổi. Trong những tr•ờng hợp nh• thế, các cỡ file bản ghi cực đại
hay trung bình nên đ•ợc sự dụng. Mọi file dữ liệu đều có phần đầu bao
gồm chỉ số và đ•ờng dẫn th• mục. Những thứ này cũng phải đ•ợc đ•a
thành nhân tố dự toán và tuỳ thuộc nặng nề vào cơ sở dữ liệu hay hệ
thống file đang đ•ợc sử dụng.
Trong nhiệu tr•ờng hợp dự toán dữ liệu l•u giữ hàng loạt không cần
căn cứ ở ch•ơng trình kịch bản tồi nhất. Điều này thoạt tiên do tính dễ
dàng t•ơng đối trong việc bổ sung thêm bộ nhớ l•u giữ hàng loạt vào cấu
hình. Do đấy, trong nhiều tr•ờng hợp, yêu cầu l•u giữ hàng loạt trung
bình là có thể đủ. Rõ ràng rằng có một số tr•ờng hợp phải sử dụng kịch
bản tồi nhất, nh• khi mà việc sử dụng kho nhớ hàng loạt tăng quá nhanh.
Dự toán thiết kế cho yêu cầu l•u giữ dữ liệu cũng phải chiếu cố đến
phần dự trữ. Điều này đặc biệt đúng với các dự toán bộ nhớ, lúc đó thiết
kế phải dành khoảng 33% cho dự phòng. Bộ nhớ dự phòng này phải có
Quản lý dự án phần mềm
237
sẵn để bao trùm các sai khi dự toán, các thay đổi yêu cầu và sự phát triển
trong t•ơng lai.
10.7.3 Tốc độ
Tốc độ của một hệ thống đ•ợc đo theo thời gian đáp ứng. Điều này
th•ờng căn cứ ở bộ yêu cầu rất ngặt nghèo xác định đáp ứng của hệ thống
với các sự cố đặc thù.
Một thí dụ là có thể là yêu cầu rằng giao diện của ng•ời dùng phải đáp
ứng đầu vào của ng•ời dùng không quá ba giây. Thật là cực kỳ thất vọng
phải chờ đợi tr•ớc máy thủ qũi ngân hàng tự động để chờ trả lời một yêu
cầu. Nhiều những máy thủ qũi nh• thế đã giảm nhẹ nỗi thất vọng phải
chờ đợi bằng cách tạo ra tiếng động nền vang lên tựa nh• tiền đang đ•ợc
đếm bằng máy cơ khí hay ít ra nh• có cái gì đang diễn ra. Một giải pháp
đơn giản hơn là phát ra tín hiệu nhấp nháy để nói rằng là “giao dịch đang
đ•ợc thực hiện”.
Hình 10.7
Thời gian đáp ứng nhận đ•ợc khi liên hệ ng•ợc
Hatley và Pirbhai (1988) phân biệt định thời gian ngoại tại và định thời
gian nội tại. Định giờ nội tại là một kết quả của thiết kế trong khi định
thời gian ngoại tại là kết quả yêu cầu. Theo thế định thời gian ngoại tại có
thể có là thời gian đáp ứng. Hatley và Pirbhai gợi ý một biển đồ (mà các
ông gọi là bức tranh yêu cầu định thời gian) tham gia vào việc phân tích
các ràng buộc liên quan tới định thời gian hệ thống.
Trong phân tích định thời gian nội tại của các ông, Hatley và Pirbhai
bao gồm các hoạt động không liên quan trực tiếp tới thời gian đáp ứng.
Chúng ta sẽ chỉ xét ở đây các kết quả định thời gian trực tiếp liên quan
với thời gian đáp ứng nh• đ•ợc những ng•ời dùng hệ thống nhìn nhận
bên ngoài.
Thời gian đáp ứng có thể đ•ợc cảm nhận là phản hồi hệ thống phát
sinh bởi một sự cố bên ngoàI: điều này đ•ợc minh hoạ ở hình 10.7. Do
đấy thoả đáng là chia thời gian đáp ứng ra ba hợp phần cơ bản.
1. Thời gian từ cuối sự xuất hiện của sự cố cho đến khi sự cố đ•ợc hệ
thống nhận ra.
Sự kiện từ bên ngoài Liên hệ ng•ợc
Tiến trình
Ng•ời dùng
Quản lý dự án phần mềm
238
2. Thời gian xử lý sự cố.
3. Thời gian từ khi kết thúc xử lý sự cố cho tới khi khởi đầu đáp ứng
ngoại tại
Hình 10.8
Khoảng thời gian đáp ứng
Nhớ là thời gian đáp ứng không bao gồm thời gian để thực hiện sự cố ở
cả hai đầu: nó chỉ bao gồm thời khoảng giữa hai sự cố (coi hình 10.8).
Khi dự toán thời gian đáp ứng, thì viễn cảnh là một trong ba thứ đầu
vào, xử lý và đầu ra. Hợp phần đầu vào liên quan đến thời gian để hệ
thống nhận đ•ợc thông tin về cuối của một sự cố và nhận ra nó.
Bảng 10.7 thí dụ về bảng phân bố thời gian đáp ứng
Thời gian đáp ứng (tính theo giây) Tỷ lệ phần trăm
0-3 20%
3-6 60%
6-9 39%
9-15 1%
Hợp phần đầu ra liên quan đến thời gian cần có để hệ thống có đ•ợc
kết quả xử lý và truyền thông nó tới bộ phát đáp ứng bên ngoài.
Hợp phần xử lí sự cố bao gồm mọi hoạt động trong phạm vi hệ thống
cần có để phát ra đáp ứng. Điều này cũng bao gồm chậm trễ do những
hoạt động •u tiên cao hơn và do những thiết bị bên ngoài nh• bộ điều
khiển đĩa phải đ•ợc tuy cập để có đ•ợc thông tin liên quan.
Thời gian đáp ứng thông th•ờng đ•ợc cung cấp nh• đáp ứng tr•ờng
hợp tồi nhất và đáp ứng trung bình.
Trong thí dụ tr•ớc thủ quĩ tự động trả lời đầu vào bàn phím của ng•ời
dùng. Lần ấn phím cuối cùng của một giao dịch (th•ờng là enter) bắt đầu
thời khoảng đáp ứng. Hiển thị màn hình hay phân phối tiền mặt kết thúc
thời khoảng này ngay khi bắt đầu vận hành. Nh• chúng ta đã thấy ng•ời
thiết kế hệ thống hẳn ‘lừa bịp’ bằng cách trả lời bằng thông báo “xin đợi
một chút” tr•ớc khi có sẵn sàng câu trả lời thực. Điều này là một thực tế
có hiệu lực hoàn mỹ và làm cho hệ thống trở nên thân thiện với ng•ời
Tiến trìnhSự kiện Đáp ứng
Thời gian đáp ứng
Dự toá
Quản lý dự án phần mềm
239
dùng hơn. Dù sao, thông báo nhấp nháy báo rằng “xin đợi, bây giờ đang
xử lý yêu cầu” cũng có thể trở thành gây tức bực nếu hiện hình quá lâu.
Đáp ứng trung bình của thủ quĩ tự động tr•ớc yêu cầu quyết toán có
thể đòi hỏi thời gian đáp ứng là 5 giây. Trong một số tr•ờng hợp khi hệ
thống thủ quĩ đang ở vào lúc sử dụng cao điểm và thời gian đáp ứng
tr•ờng hợp hẳn là 15 giây. Mặc dù việc chậm trả lời 15 giây có thể gây
tức bực cho ng•ời dùng thì nó lại có thể chấp nhận đ•ợc cho ngân hàng
nếu điều này không xảy ra quá th•ờng xuyên. Do đấy cần thiết khi trình
bày dự toán thời gian đáp ứng phải bao gồm cả dự toán phần trăm thời
gian mà tr•ờng hợp tồi nhất có thể dự kiến xảy ra. Chẳng hạn chúng ta có
thể khẳng định:
1. Thời gian đáp ứng trung bình dự kiến: 5 giây
2. Thời gian đáp ứng tr•ờng hợp tồi nhất dự kiến: 15 giây trong 1%
giao dịch.
Việc mô tả chi tiết hơn thời gian đáp ứng dự kiến th•ờng đ•ợc yêu cầu.
Trong thí dụ trên 10% chậm trễ đáp ứng có thể chiếm 14,5 giây là không
thể chấp nhận đ•ợc, nh•ng lại có thể khớp với các con số ở trên. Trong
những tr•ờng hợp đó, thì bảng phân phối (coi bảng 10.7) đ•ợc •a thích
hơn.
10.8 tổng phí không phát triển.
Những dự toán tốt đ•ợc căn cứ ở hầu hết dữ liệu mới nhất và dễ hiểu
hiện có. Do đấy, điều quan trọng là phải cập nhật định kỳ mọi dự toán
của dự án. Chí ít ra thì điều này phải đ•ợc làm ở các cột mốc dự án chủ
yếu, nh• tổng duyệt yêu cầu phần mềm, tổng duyệt thiết kế sơ bộ và tổng
duyệt thiết kế tới hạn. Các dự toán đ•ợc cập nhật phải là bộ phận của
những thứ giao đ•ợc có yêu cầu ở những tổng duyệt đó.
Bảng 10.8 Tổng phí của các hoạt động không phát triển
Tổng phí
Quản lý 0.1
Khống chế cấu hình 0,02
Bảo đảm chất l•ợng phần mềm 0,03
Sau khi kết thúc pha thiết kế, các dự toán phải đ•ợc xem lại tr•ớc khi
tích hợp bắt đầu và rồi lại xem lại tr•ớc khi thử nghiệm bắt đầu. Cũng
vậy, mỗi sự cố không dự kiến xảy ra trong chu kỳ phát triển có thể đòi
hỏi phải tính toán lại dự toán. Một thí dụ của sự cố nh• thế có thể là việc
thay thế hợp phần lỗi thời bằng một hợp phần phát triển mới hay một sự
chậm trễ dự án ch•a lập lịch chủ yếu.
Cũng vậy mỗi thay đổi đến đặc tả yêu cầu của dự án bao giờ cũng phải
kèm theo phân tích tác động của thay đổi đó đến lịch dự án. Mọi thay đổi
Quản lý dự án phần mềm
240
với số rất ít ngoại lệ đều phải thay đổi chi phí. Ngay việc rút bỏ một yêu
cầu cũng gây ra thay đổi chi phí dự án đã dự toán.
Một khối l•ợng thay đổi nào đó đến đặc tả yêu cầu th•ờng đ•ợc tính
đến trong việc chuẩn bị dự toán của dự án. Điều này bao gồm trong dự
toán d•ới hình thức yếu tố an toàn. Yếu tố an toàn cũng có thể đ•ợc dùng
để bù trừ cho các tr•ờng hợp khác nh• sai lầm trong dự toán và chậm trễ
không dự kiến.
Các yếu tố an toàn th•ờng sử dụng từ 20% đến 40% tuỳ theo mức độ
tin cậy trong dự toán, dự đoán các thay đổi yêu cầu và các chậm trễ có
thể xảy ra.
Các yếu tố t•ơng tự cũng đôi khi đ•ợc dùng để đ•a vào trong dự toán
những hoạt động không phát triển nh• quản lý dự án, kiểm tra cấu hình
và bảo đảm chất l•ợng. Dù sao, chừng mực của những nhiệm vụ này cũng
phụ thuộc ở các đặc tính khác của dự án. Một dự án rất nhỏ có thể không
yêu cầu bất cứ quản lý trực tiếp nào trong khi dự án lớn hẳn bị kết tội nếu
không có nó.
Bảng 10.8 trình bày các yếu tố tổng phí cho các hoạt động không phát
triển của dự án phần mềm.
Các con số trong bảng 10.8 cho thấy là dự án phần mềm với đội ngũ
100 kỹ s• hẳn yêu cầu xấp xỉ 10 nhà quản lý (thời gian làm việc 100%).
Điều này bao gồm những nhiệm vụ nh• quản lý dự án, phó quản lý dự án,
lãnh đạo đội (có thể dành một phần thời gian vào công việc phát triển)
v.v. Trong một dự án nhỏ ba ng•ời, một trong những thành viên hẳn đ•ợc
dự kiến giành khoảng 1/3 thời gian của anh hay chị cho việc quản lý dự
án.
T•ơng tự, trong một dự án phần mềm do một đội ngũ 100 kỹ s• phát
triển, chúng ta có thể dự kiến bố trí 2 kỹ s• kiểm tra cấu hình và 3 kỹ s•
đảm bảo chất l•ợng phần mềm. Công bố tổng quát hơn có thể là trong
một dự án 100 năm công, 2 năm công hẳn đ•ợc giành cho kiểm tra cấu
hình và 3 năm công cho bảo đảm chất l•ợng tổng hợp.
Các con số trong bản 10.8 có thể hơi bị ảnh h•ởng bởi qui mô dự án và
bởi các yếu tố bản đến ở phần 10.4. Một dự án phức tạp sẽ đòi hỏi phần
chung nhiều hơn một dự án t•ơng đối đơn giản.
Toàn bộ tổng phí dự án cho những hoạt động đó tất cả khoảng 15%.
Quan trọng là phải nhớ rằng điều này chỉ liên quan đến tổng phí dự án
trực tiếp và không tính đến thời gian đầu t• của quản lý cấp cao, th• ký
văn phòng v.v..
10.9 Tóm tắt
Ch•ơng này minh hoạ dự toán đ•ợc vận dụng thế nào trong việc tiên
liệu bất trắc. Bất cứ l•ợng không biết nào đều có thể đ•ợc dự toán trong
khi các l•ợng đã biết không cần dự toán. Với ng•ời quản lý dự án phần
mềm có nhiều l•ợng không biết phải đ•ợc dự toán. Những l•ợng này liên
kết với các lĩnh vực nh•:
Quản lý dự án phần mềm
241
1. Chi phí phát triển dự án
2. Lịch phát triển dự án
3. Qui mô đội phát triển dự án
4. Khối l•ợng phần mềm phải phát triển
5. Nguồn lực phần cứng đòi hỏi.
Dự toán từng b•ớc th•ờng đ•ợc coi là ph•ơng cách “phân chia và
khuất phục”, phân vấn đề lớn ra vô vàn vấn đề nhỏ và đ•ợc dùng trong
hầu hết kỹ thuật dự toán. Ph•ơng cách cơ bản là phân giải dự án thành
những hợp phần xác định rõ và rồi lặp lại từng b•ớc đến khi chỉ còn lại
những đơn vị nhỏ có thể dễ dự toán hơn.
Phân giải ban đầu của dự án phần mềm nhận ra 4 phạm trù chủ yếu với
những mức độ rủi ro phát triển khác nhau liên kết với chúng. B•ớc đầu
tiên của phân giải dự án tạo ra những hợp phần dự án hoặc (1) chúng ta
đã có (2) chúng ta biết phát triển nh• thế nào (kinh nghiệm trọn vẹn) (3)
ít ra chúng ta đã phần nào làm quen với chúng (kinh nghiệm một phần)
hay (4) hoàn toàn mới với chúng ta (phát triển mới). Các kỹ thuật dự toán
đặc thù có thể đ•ợc vận dụng cho mỗi loại hợp phần dự án khác nhau.
Một ph•ơng pháp khác, gọi là thuật toán chi phí kiến thiết (COCOMO)
bao gồm 10 b•ớc cơ bản. Những b•ớc đó bao gồm phân giải dự án ra các
hợp phần, vận dụng công thức công sức vào mỗi hợp phần và phối hợp
mọi dữ liệu tạo ra vào một dự toán chi phí duy nhất của dự án.
Phân tích chức năng (FPA) tạo ra dự toán của dự án căn cứ ở qui mô
vấn đề. Số l•ợng các chức năng trong dự án xác định qui mô vấn đề, đ•ợc
biểu thị bằng giá trị số (trị số FPA). Trị số FPA của dự án có thể đ•ợc
dùng để:
So sánh độ phức tạp của các dự án.
So sánh công sức t•ơng đối đòi hỏi để hoàn thành dự án.
Phát sinh các độ đo dự án khác (nh• các SLOC)
Dự toán cũng th•ờng đ•ợc trình bày nh• là một phạm vi. Một phạm vi
là một dự toán có ích trong qui hoạch phát triển của dự án. Lý thuyết
thống kê đứng sau ph•ơng cách này đề cập quan niệm khoảng tin cậy, nó
cung cấp xác suất là chi phí phát triển sẽ nằm trong một phạm vi đã cho.
Các ph•ơng pháp dự toán tải CPU, l•u giữ dữ liệu và tốc độ đ•ợc căn
cứ ở phân giải phần mềm thành những mô đun dự toán đ•ợc. Rồi những
dự toán này đ•ợc phối hợp với yếu tố an toàn. Các yếu tố an toàn th•ờng
sử dụng từ 20% đến 40% tuỳ theo mức độ tin cậy trong dự toán và thời
hạn dự kiến thay đổi yêu cầu.
Các dự toán tốt đ•ợc căn c• ở hầu hết dữ liệu mới nhất, dễ hiểu hiện có
đ•ợc. Do đó, quan trọng là phải cập nhật định kỳ toàn bộ dự toán của dự
án. Dù sao, bất kể ph•ơng pháp dự toán nào đ•ợc sử dụng, quan trọng là
Quản lý dự án phần mềm
242
bao giờ cũng phải nhớ rằng dự toán chỉ có thể tốt đ•ợc nh• các dữ liệu
đ•ợc dùng làm căn cứ.
Bài tập.
1. Phân tích một hệ thống kiểm warehouse do một công ty phát triển
vốn tr•ớc đây đã phát triển hệ thống kiểm cửa hàng bách hoá. Hãy sử
dụng dự toán từng b•ớc, phân giải hệ thống thành 4 phạm trù hợp phần.
Sau đó phân giải hợp phần kinh nghiệm từng phần thành hợp phần kinh
nghiệm đày đủ và hợp phần phát triển mới. Đặc tả mọi giả định đã làm.
2. Phát triển tiếp vấn đề ở bài tập 1 và chuẩn bị một kế hoạchdự toán
các hợp phần phát triển mới bằng cách sử dụng lấy mẫu thống kê. Xác
định nhóm phạm trù và bố trí mỗi hợp phần phát triển mới vào loại thích
hợp của nó. Chọn những mô đun tiêu biểu từ mỗi phạm trù để thực hiện.
Giải thích điều hợp lý của việc gán các loại và lựa chọn đã làm.
3. Căn cứ ở kinh nghiệm của bạn, hãy bố trí những con số KSLOC hợp
lý vào mỗi hợp phần ở bài tập 2. Giả định mỗi ng•ời phát triển cho 5
KSLOC. Giả định là 10% nhân lực là mức 1, 30% ở mức 2, 45% mức 3 và
15% mức 4. Hãy tính nhân tố PL cho dự án phát triển. Bình luận tác động
của trị số PL đó tới chi phí phát triển dự án.
4. Duyệt lại bảng 10.1, có liên quan đến việc tính toán thừa số PL.
Cho một gợi ý một bảng trị số khác, căn cứ ở các mức KSLOC phụ thêm
và một phạm trù rộng các nhân tử. Bình luận lý do chọn những con số
trong bảng của bạn. Tính lại trị số trong bảng 10.2 căn cứ ở bảng bạn đã
đề nghị.
5. Phân giải hệ thống kiểm kê warehouse mô tả ở bài tập 1 thành các
hợp phần theo mức phức tạp. Căn cứ ở các con số KSLOC bố trí ở bài tập
3, hãy tính SEM cho mỗi lớp hợp phần và phối hợp kết quả để có đ•ợc
con số dự toán của SEM cho toàn bộ dự án.
6. Phân giải hệ thống kiểm kê kho mô tả ở bài tập 1 ra những hợp
phần theo mức tin cậy. Sử dụng năm mức tin cậy để đ•a thành thừa số độ
tin cậy vào dự toán SEM tính ở bài tập 5.
7.
(a) Gợi ý bảng các nhân tử 5 mức cho mức môi tr•ờng phát triển, căn
cứ ở ba mức qui mô dự án.
KSLOC < 25,
25 < KSLOC < 300,
3000 < KSLOC
(b) Gợi ý bảng nhân tử để đ•a thành thừa số tính phức tạp của hệ thống
phụ. Thảo luận về cỡ của dự án phải xét.
8. Tính dự toán chi phí cho hệ thống kiểm warehouse mô tả ở bài tập 1
bằng cách sử dụng các kết quả của các bài tập 3, 5, 6 và 7.
9. Xem xét việc vận dụng thuật toán phân tích l•ợng chức năng vào hệ
thống kiểm warehouse mô tả ở bài tập 1. Lợi và bất lợi trong việc sử dụng
ph•ơng pháp FPA ? So sánh FPA với COCOMO cho dự án đặc biệt này.
Quản lý dự án phần mềm
243
10. Xếp loại uỷ thác: căn cứ ở các kết quả cá nhân khác nhau cho bài
tập 8, hãy tính khoảng cách tin cậy 68% và 95% cho phạm vi chi phí phát
triển đối với hệ thống kiểm warehouse này.
11. (a) Duyệt lại thí dụ tải CPU ở phần 10.6. Giả định rằng đầu vào của
thiết bị đ•ợc điều khiển bởi các ngắt. Mỗi ngắt có tổng phí 0,5 mili-giây.
Vậy tải CPU là bao?
(b) Tải CPU phải là gì nếu vòng lặp nhanh có ba đầu vào chứ không
phải 2 ? Bình luận tác động của kết quả.
Các file đính kèm theo tài liệu này:
- Quản lí dự án phần mềm.pdf