Mặc dù có nhiều mô hình, phương pháp ước lượng đã được đề xuất nhưng trong thực tế ước lượng chính xác dự án phần mềm vẫn luôn là một vấn đề khó khăn. Nhìn chung những vấn đề khó khăn đó bao gồm :
Ước lượng đối với các đại lượng vật lý khá dễ dàng vì có thể biểu diễn chúng một cách trực tiếp. Trong khi đó, phần mềm là một phần tử logic nên không thể làm được điều này [6]. Các phương pháp ước lượng truyền thống thường cố gắng đặt ra những khái niệm để mô hình hóa quá trình phần mềm nhưng những khái niệm này đều mang nặng tính hình thức và không sát thực tế. Hơn nữa trong các quy trình phát triển phần mềm hiện đại, các giai đoạn phát triển phần mềm như phân tích, thiết kế, lập trình… cũng không tuyến tính mà đan xen lẫn nhau. Vì thế người ta chỉ có thể đặc tả chính xác phần mềm sau khi nó đã hoàn thành xong.
Khó xác định độ đo
Các phương pháp ước lượng truyền thống đều tính toán trên cơ sở một độ đo (LOC, FP…) – tức là so sánh với những đại lượng chuẩn có sẵn. Tuy nhiên, quá trình phần mềm lại rất đa dạng và phức tạp nên rất khó có thể xác định được một chuẩn như vậy. Tương tự như thế, xác định một công thức chung để có thể ước lượng cho mọi dự án phần mềm cũng không hề đơn giản. Hầu hết các phương pháp đã có đều xây dựng công thức ước lượng chung bằng cách phân tích thống kê từ một tập các dự án có sẵn. Tuy nhiên, do sự đa dạng trong phát triển phần mềm, công thức thu được từ phân tích ở một ngữ cảnh sẽ không thể áp dụng ở những ngữ cảnh khác. Mặc dù một số phương pháp hiệu chỉnh đã được đề xuất, nhưng các phương pháp này rất phức tạp và cứng nhắc. Vì vậy kết quả ước lượng dựa trên độ đo thường kém linh hoạt và độ tin cây không cao [5].
Yêu cầu ƣớc lƣợng sớm
Ước lượng dự án là để thực hiện kinh doanh lấy hợp đồng, lập kế hoạch kiểm soát thực hiện, cân đối chi phí và thời gian nên đòi hỏi phải được thực hiện ngay từ giai đoạn đầu tiên của quá trình hình thành dự án, khi các thông số về dự án còn chưa đầy đủ. Tuy nhiên các mô hình ước lượng truyền thống chỉ có thể thực hiện được khi đã có các phân tích tương đối chi tiết. Ví dụ như mô hình COCOMO yêu cầu phải biết số dòng mã lệnh, hoặc số điểm chức năng (FP)…Đây là những thông tin đầu vào có tính bắt buộc với mô hình. Trong thực tế để có thể áp dụng sớm các mô hình này, người quản trị thường phải dựa vào kinh nghiệm của bản thân để dự án đoán các thông tin chi tiết của dự án. Mặc dù có nhiều phương pháp được đề xuất để nâng cao độ chính xác của các phép dự đoán này nhưng nhìn chung chúng đều phụ thuộc vào chủ quan và cảm tính của chuyên gia ước lượng [7].
Do những đặc điểm trên công việc ước lượng trong công nghệ phần mềm khó khắn hơn rất nhiều so với những ngành công nghiệp khác. Trên thực tế, ước lượng phần mềm không bao giờ có thể trở thành một ngành khoa học chính xác được [6].
1.5 Đánh giá và xác định phƣơng pháp tối ƣu
Ngoài các phương pháp được nêu ở trên, trong công tác ước lượng chi phí phần mềm còn có thể sử dụng các phương pháp khác như ước lượng động, kỹ thuật ước lượng hồi quy hoặc Bayesian (trong phạm vi luận văn này sẽ không đề cập đến), các phương pháp trên đều có các ưu điểm và nhược điểm. Dưới đây là các đánh giá ưu nhược điểm của từng phương pháp.
Với mỗi một mảng kỹ thuật, tôi sẽ lấy ra một vài phương pháp tiêu biểu để đưa vào đánh giá và so sánh ưu nhược điểm dựa trên những đặc điểm chung của các kỹ thuật và riêng của phương pháp được đánh giá.
Kỹ thuật ước lượng cơ bản - SLIM - Checkpoint - PRICE-S - ESTIMACS - SEER-SEM - COCOMO
Kỹ thuật ước lượng cải tiến - DELPHI
- Work Breakdown Structure _ WBS
Ước lượng với hệ chuyên gia
- Case Based Reasoning _CBR
- Neural Network
Bảng 6 Bảng so sánh các phương pháp ước lượng chi phí
TT Phƣơng
pháp Ƣu điểm Nhƣợc điểm
hiện ước lượng
- Khả năng tự động hóa cao
chỉ áp dụng được sau khi có phân tích thiết kế chi tiết
- Chỉ áp dụng cho một số dạng dự án, không thể áp dụng với dự án có lĩnh vực mới.
- Không có khả năng học và suy luận
2. WBS
- Áp dụng được ở giai đoạn đầu của dự án
- Yêu cầu đầu vào ban đầu dự án không cần chính xác và chi tiết.
- Sử dụng được thông tin cho quá trình kiểm soát tiến độ và đánh giá báo cáo cho các giai đoạn sau.
- Phụ thuộc vào kiến thức của chuyên gia
- Mỗi chuyên gia chỉ chuyên trong một số lĩnh vực vì vậy khi gặp 1 lĩnh vực mới hoàn toàn sẽ gặp khó khăn trong quá trình ước lượng - Mang tính chủ quan và không có
căn cứ thống nhất
- Khả năng tự động hóa khó thực hiện
3. Case Based Reasoning
- Thông tin đầu vào linh hoạt - Áp dụng được ở giai đoạn đầu
của dự án
- Áp dụng theo đúng cách suy diễn và lập luận của con người căn cứ trên một tập các dự án thực tế đã thực hiện có hiệu chỉnh kết quả theo các tập luật phù hợp với thực tế.
- Khách quan và thống nhất - Khả năng học và suy luận cao
- Cần có CSDL dự án đủ lớn và bao phủ để làm đầu vào cho quá trình tìm kiếm và hiệu chỉnh
- Phụ thuộc vào miền dự án được đưa vào CSDL làm căn cứ cho quá trình tìm kiếm và ước lượng. - Khả năng tự động hóa khó thực
hiện
4. Neural Network
- Thông tin đầu vào linh hoạt - Không cần quan tâm tới quá
trình xử lý bên trong. Mạng neural căn cứ trên các trọng số tối ưu của quá trình huấn luyện mạng để ước lượng chi phí cho dự án.
- Khách quan và thống nhất - Khả năng học và suy luận cao
- Yêu cầu về tập mẫu huấn luyện cao nhằm đạt được mục tiêu của quá trình học tuy nhiên các dự án phần mềm rất đa dạng khi đưa vào huấn luyện tất cả các dạng dự án dễ gây nên hiện tượng loãng và kết quả không hội tụ. Nếu tập mẫu quá nhiều cho 1 dạng dự án cũng dễ gây nên hiện tượng quá khớp. - Khả năng tự động hóa khó thực
Do đặc thù của các dự án phần mềm thay đổi và có phạm vi lớn vì vậy việc ước lượng chi phí phần mềm với phương pháp chuyên gia vẫn còn hạn chế. Các phương pháp được đưa ra cũng chỉ phù hợp trong một môi trường cụ thể hoặc với một số dự án cụ thể nào đó. Vì vậy quá trình ước lượng căn cứ trên tập CSDL các dự án đã thực hiện trước đó với phương pháp Case Based Reasoning - CBR có tính khả thi cao hơn các phương pháp khác đang.
Luận văn này sẽ đưa ra những lý thuyết về phương pháp CBR và mô hình áp dụng thực tế của mô hình vào công ty Cổ phần công nghệ Tinh Vân áp dụng cho các loại dự án như sau :
- Dự án đóng gói Thư viện điện tử : là dự án hoàn thiện áp dụng triển khai cài đặt và đào tạo khách hàng.
- Dự án Quản lý đại học : dự án đóng gói thực hiện triển khai cài đặt và đào tạo khách hàng tuy nhiên sản phẩm chưa hoàn thiện đối với mỗi trường đại học cần phải có thời gian hỗ trợ chỉnh sửa theo nghiệp vụ quản lý của đơn vị khách hàng.
- Dự án TVIS : là cổng thông tin điện tử xây dựng trên nền Open Source Zope (ngôn ngữ lập trình Phython)
- Dự án Oracle : là cổng thông tin điện tử xây dựng trên nền Oracle Portal, sản phẩm và CSDL bản quyền của Oracle (ngôn ngữ lập trình PLSQL và Java_ đối với các Java Portlet).
- Dự án Giải pháp : là dự án xây dựng ứng dụng cho các sản phẩm nghiệp vụ đặc thù và là sản phẩm phát triển mới.
2. CHƢƠNG 2 LẬP LUẬN TRÊN KINH NGHIỆM
Chương 2 định nghĩa, chi tiết lý thuyết và các bước thực hiện của phương pháp ước lượng chi phí dựa trên phương pháp Lập luận trên kinh nghiệm (Case-Based Reasonning). Mô tả chi tiết các bước thực hiện từ Tìm kiếm (Retrieve), sử dụng lại (Reuse), Lưu lại (Retain) ca lập luận mới.
___________________________________________________________________
Định nghĩa
Chu trình lập luận theo kinh nghiệm
Các vấn đề khác trong CBR
Ứng dụng thực tế của CBR
2.1. Định nghĩa
Phương pháp Case - based reasoning được nhà tâm lý học người Mỹ, Roger Schank đưa ra năm 1982. Năm 1983, Janet Kolodner phát triển hệ thống CBR đầu tiên tại trường đại học Yale [8]. Từ đó đến nay phương pháp này đã có những bước tiến đáng kể và được ứng dụng rộng rãi trong các sản phẩm thực tế.
Lập luận theo kinh nghiệm (Case-based Reasoning – CRB) là phương pháp tìm lời giải bài toán trên cơ sở hiệu chỉnh lời giải của các bài toán khác đã có [8].
Về một khía cạnh nào đó có thể xem CRB là phương pháp “tra từ điển” của các lập luận có sẵn để tìm ra lời giải. CRB khác với các cách tiếp cận truyền thống ở chỗ nó chỉ quan tâm tới lời giải của bài toán là cái gì chứ không quan tâm tới cụ thể bài toán được giải như thế nào (hay làm thế nào để có lời giải đó). Phương pháp này cũng không quan tâm tới bài toán tổng quát mà chỉ quan tâm tới từng bài toán cụ thể. Có thể so sánh mặt này của CRB với phương pháp “học tủ” ở con người.
Tuy nhiên, giữa CBR và phương pháp “tra từ điển” có những điểm khác biệt cơ bản. Trong từ điển, ca lập luận của bài toán có thể không tồn tại mà chỉ tồn tại một hoặc một vài ca lập luận tương tự với nó. Lời giải cũ cũng không phải được áp dụng nguyên xi mà có sự hiệu chỉnh cho phù hợp với bài toán mới. Ngoài ra trong CBR, bên cạnh các ca lập luận vẫn tồn tại các luật tạo nên tri thức nền (general knowledge) hỗ trợ cho tìm kiếm và hiệu chỉnh. Do đó, CBR là phương pháp lập luận tích cực hơn nhiều so với phương pháp lập luận theo trí nhớ (Memory-based reasoning) đã được đề xuất trước đây.
2.2. Chu trình lập luận trên kinh nghiệm
Một cách tổng quát, CBR hoạt động theo chu trình gồm 4 pha như hình 6 sau đây : 1. Tìm kiếm lại (Retrieve) một hoặc nhiều ca lập luận tương tự
2. Sử dụng lại (Reuse) lời giải của các ca lập luận cũ cho ca lập luận mới. 3. Xem xét lại (Revise) lời giải.
Các phần mềm đã có Tri thức nền Bài toán ước lượng
Ước lượng được thẩm định Ước lượng đề xuất TÌM KIẾM LẠI SỬ DỤNG LẠI XEM XÉT LẠI LƯU LẠI Phần mềm mới Phần mềm mới Phần mềm đã thẩm định Phần mềm đã hoàn thành Phần mềm tương tự Phần mềm đã ước lượng
Hình 6 Chu trình lập luận theo kinh nghiệm.
A. Tìm kiếm lại (Retrieve)
Trong phương pháp CBR quá trình tìm kiếm lại là một trong những vấn đề khó khăn nhất . Hàm tím độ tương tự có ảnh hưởng rất lớn đến hiệu quả và độ chính xác của các hệ thống phía sau. Trong bước thực hiện này cần tìm ra độ tương tự giữa các ca lập luận để có đánh giá chính xác. Vì vậy cần phải chọn ra giải thuật hợp lý để tìm kiếm ra độ tương tự giữa các ca lập luận.
Trong ngành khoa học máy tình, có rất nhiều các phương pháp và giải thuật tìm kiếm. Một giải thuật tìm kiếm là một thuật toán lấy đầu vào là một bài toán và trả về kết quả là một lời giải cho bài toán đó. Giải thuật tìm kiếm cơ bản nhất là vét cạn. Tập hợp tất cả các lời giải có thể đối với một bài toán được gọi là không gian tìm kiếm. Trong giải thuật tìm kiếm chia ra thành:
Tìm kiếm không có thông tin : Là giải thuật không tính đến bản chất của cụ thể của
bài toán. Khi đó các giải thuật này có thể được cài đặt một cách tổng quát và áp dụng cho nhiều dạng tìm kiếm khác nhau. Nhược điểm không gian tìm kiếm lớn và quá trình tìm kiếm mất nhiều thời gian. Bao gồm các dạng tìm kiếm :
- Tìm kiếm trên danh sách : tuyến tính, nhị phân, truy nhập ngẫu nhiên, nội suy, Grover, bảng băm, cây nhị phân cân bằng…
- Tìm kiếm trên cây : tìm kiếm theo chiều rộng, tìm kiếm theo chiều sâu, tìm kiếm lặp sâu dần…
- Tìm kiếm trên đồ thị như : Dijkstra, Kruskal, giải thuật láng giềng gần nhất, Prim… được coi là các mở rộng của các thuật tóan tìm kiếm trên cây.
Tìm kiếm có thông tin : Trong tìm kiếm có thông tin dùng một đánh giá „heuristic‟
đặc thù cho bài tóan cần giải quyết với vai trò hướng dẫn cho quá trình tìm kiếm. Vì vậy phụ thuộc nhiều vào đánh giá có thực sự tốt hay không. Nổi trội trong tìm kiếm có thông tin là bảng băm với một hàm băm là một heuristic dựa trên bài toán được giải. Đa số các thuật tóan tìm kiếm trên có thông tin đều là tìm kiếm trên cây. Trong đó có tìm kiếm theo lựa chọn tốt nhất và A*.
Ngoài ra còn có một số hướng trong giải thuật tìm kiếm như Tìm kiếm đối kháng, thỏa mãn ràng buộc…
Trong CBR các phương pháp tìm kiếm độ tương tự thường được áp dụng các phương pháp bao gồm : khoảng cách Eurclit (hay tìm kiếm gần nhất), đại số mờ, quy nạp, truy vấn CSDL, khoảng cách Mahatta, khoảng cách Hamming.
1.1Tìm kiếm gần nhất
Tìm kiếm gần nhất là phương pháp trực quan và được sử dụng nhiều nhất trong các hệ CBR. Phương pháp này dựa trên lý thuyết về khỏang cách giữa 2 điểm trong không gian theo học thuyết của Euclide
(11)
Đơn vị tri thức của CBR là một ca lập luận. Một ca lập luận này gồm 1 bộ đặc tả bài toán và lời giải. Trong đó giả sử một ca lập luận được biểu diễn dưới dạng các vector thuộc tính có các giá trị từ a1 tới an với n là số thuộc tính biểu diễn ca lập luận. Khi đó độ tương tự giữa 2 ca lập luận sẽ được tính theo công thức :
(12) Trong đó : - T : là ca lập luận đang xét - S là ca lập luận so sánh - n là số các thuộc tính
- simi là hàm tính độ tương tự giữa 2 thuộc tính i của ca lập luận T và S.
i n i i i i i w pq W W Q P sim SIM 0 ) , ( 2 1 ) ( ) , ( n i i i y x y x y x d
- Wi trọng số xác định độ ưu tiên của thuộc tính i.
Hình 7 mô tả một cách biểu diễn các ca lập luận trên hệ tọa độ trực chuẩn. Mỗi ca lập luận được biểu diễn bằng 1 điểm trên mặt phẳng tọa độ và độ tương tự được xác định là khoảng cách giữa các điểm đó.
Hình 7 Đồ thị biểu diễn ca lập luận [2]
1.2Đại số mờ
Mặc dù đươc nghiên cứu và phát triển độc lập nhưng CBR và đại số mờ đều đề cập tới những bài tóan “không rõ ràng”. Chúng ta có thể tìm kiếm các ca lập luận tương tự dựa trên quan điểm của đại số mờ.
Xét mỗi ca lập luận T trong cơ sở tri thức. Chúng ta sẽ xây dựng tập các ca lập luận tương tự với T là tập mờ (fuzzy set) K nhận T làm nhân.
Trước tiên chúng ta xác định tập mờ K i là tập các ca lập luận Si tương tự với T ở