Chương 1 trình bày khái quát về ước lượng chi phí phần mềm. Chương 2 trình bày về lý thuyết phương pháp lập luận trên kinh nghiệm CBR. Chương 3 đưa ra cách thức chi tiết trong áp dụng phương pháp CBR vào ước lượng chi phí phần mềm. Chương 4 mô tả thực nghiệm với hệ thống các dự án tại đơn vị công tác và có đánh giá kết quả thực nghiệm.
Chương 5 tổng kết lại những kết quả đạt được sau quá trình nghiên cứu và hướng nghiên cứu tiếp theo. LUAN VAN CHAT LUONG download : add luanvanchat@agmail. CHƢƠNG 1 GIỚI THIỆU Trong chương này giới thiệu tổng quan về quản lý dự án và ước lượng chi phí phần mềm, những khó khăn gặp phải trong quá trình ước lượng chi phí của một dự án phần mềm. Từ đó đưa ra một số phương pháp phổ biến được áp dụng trong quá trình ước lượng dự án phần mềm, đánh giá ưu nhược điểm của các phương pháp làm cơ sở cho quá trình lựa chọn CBR trong ước lượng chi phí dự án phần mềm.
______________________________________________________________ Tổng quan quá trình quản lý dự án Tổng quan ước lượng chi phí dự án phần mềm Bài toán đặt ra Giới thiệu các phương pháp ước lượng. Đánh giá ưu nhược điểm các phương pháp ước lượng. ______________________________________________________________ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.1 Quản lý dự án phần mềm 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 [1]. 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 Thời gian thực hiện dự án vượt mức dự kiến Chi phí thực hiện dự án vượt mức dự kiến Kết quả của dự án không như dự kiến Trá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ết Quản lý tài nguyên: xác định, phân bổ và điều phối tài nguyên Quả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àng Quả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ục Tổ chức cách làm việc Chính vì vậy việc ước lượng chi phí là khâu quyết định của các doanh nghiệp sản xuất phần mềm trong việc thúc đẩy sản xuất và đưa ra những quyết định đúng đắn về tài chính của doanh nghiệp.2 Ƣớc lƣợng chi phí dự án phần mềm Ước lượng chi phí và thời gian thực hiện dự án quan trọng không chỉ bởi có ảnh hưởng đến chất lượng sản phẩm mà còn có thể ảnh hưởng trực tiếp tới chiến lược phát triển lâu dài của cả công ty. Trước thập kỷ 70, người ta thường tìm cách áp dụng những phương pháp ước lượng truyền thống của công nghiệp chế tạo để ước lượng dự án phần mềm. Tuy nhiên, do phần mềm là một sản phẩm trí tuệ đặc biệt, không có phép đo trực tiếp nên các phương pháp ước LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 10/71 lượng này tỏ ra không hiệu quả.
Sang thập kỷ 80 và 90, một vài mô hình đặc thù đã được đề xuất nhằm nâng cao độ chính xác của các ước lượng (SLIM, PRICES, COCOMO, ESTIMACS. Vào thời điểm đề xuất, các mô hình này đều khẳng định là sẽ cho kết quả chấp nhận được nhưng sau một thời gian ứng dụng, kết quả thu được vẫn có thể có sai số tới 300 - 400%. Nguyên nhân của sự sai khác trên là do chúng đều được xây dựng dựa trên cơ sở các mô hình thống kê trừu tượng và xem xét các yếu tố ngữ cảnh một cách cứng nhắc. Trong khi đó, phát triển phần mềm lại là lĩnh vực luôn vận động và biến đổi không ngừng và phụ thuộc nhiều vào những yếu tố khách quan bên ngoài.
Ngoài ra, hầu hết các mô hình được đề xuất đều đòi hỏi thông tin đầu vào tương đối chi tiết (kích thước dự án, kích thước dữ liệu. Vì thế, nếu áp dụng vào những giai đoạn đầu của quá trình phát triển (giai đoạn đòi hỏi ước lượng) sẽ cho kết quả không chính xác. Trên thực tế, để đảm bảo độ tin cậy, các chuyên gia vẫn thường phải ước lượng dựa trên kinh nghiệm và phán đoán chủ quan của mình. Trong những năm gần đây, khoa học máy tính nói chung và ngành trí tuệ nhân tạo (AI) nói riêng đã có những bước tiến đáng kể [9].
Nhiều quá trình đòi hỏi óc tư duy sáng tạo đã từng bước được tự động hóa. Nhiều hệ chuyên gia thuộc các lĩnh vực khác nhau như giáo dục, y tế, pháp luật. đã được xây dựng nhằm thỏa mãn nhu cầu con người. Tuy nhiên, số lượng những sản phẩm phục vụ cho quản lý dự án phần mềm lại không nhiều.
Phần lớn các công cụ hỗ trợ hiện nay như Microsoft Project, Rational Rose, Source Safe. chỉ giải quyết được những vấn đề thuộc về biểu diễn nghiệp vụ và lưu trữ thống kê. Những yêu cầu đòi hỏi khả năng thông minh và năng lực suy luận cao vẫn do con người đảm nhận. Từ những thực tế trên, nhiệm vụ đặt ra đối với đề tài luận văn là nghiên cứu xây dựng một mô hình hệ chuyên gia hỗ trợ ước lượng dự án phần mềm một cách tương đối chính xác, đáp ứng được những đòi hỏi trong thực tế.
Trên cơ sở đó, luận văn cũng tiến hành cài đặt thử nghiệm một chương trình, cho phép ước lượng tự động các dự án phần mềm. Hướng tiếp cận được đề xuất trong đề tài là dựa trên mô hình lập luận theo tình huống (Case based reasoning - CBR). Theo hướng tiếp cận này, chi phí cho một dự án được ước lượng bằng cách tìm kiếm các dự án tương tự đã hoàn thành trong quá khứ và hiệu chỉnh kết quả các dự án đó để phù hợp với ngữ cảnh của dự án mới. Mô hình này tương đối gần với phương pháp ước lượng mà chúng ta vẫn thường thấy ở các chuyên gia.
Công việc ước lượng nhằm thực hiện các mục tiêu: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11/71 Dự toán ngân sách Xác định điểm hòa vốn và phân tích rủi ro Lập kế hoạch và điều phối dự án Phân tích tình hình đầu tư Đối với người quản trị dự án, có nhiều đại lượng chưa biết cần được ước lượng. Các đại lượng này thường nằm trong các lĩnh vực: Chi phí phát triển dự án Lịch trình phát triển dự án Quy mô đội phát triển Khối lượng phần mềm cần phát triển Yêu cầu tài nguyên phần cứng Tuy nhiên, không giống như việc ước lượng các đại lượng hữu hình (sản phẩm công nghiệp, công trình xây dựng. ), ước lượng phần mềm là một công việc rất khó khăn. Các dự án chỉ có thể ước lượng một cách tương đối chính xác khi đi về các pha phát triển sau.
Điều này hoàn toàn không có ý nghĩa nếu mục đích của ước lượng là làm căn cứ để lập kế hoạch. Thực tế đã chứng minh rằng có tới 15% các dự án đã phải bỏ dở do chi phí phát triển vượt xa ước lượng ban đầu. Nguyên nhân của tình trạng trên là do đặc thù của phần mềm là một sản phẩm trí tuệ vô hình, không thể đo được một cách trực tiếp. Các số liệu thu được thường rất phức tạp và không thể hiện được mọi đặc trưng của phần mềm.
Hơn nữa, với sự biến đổi nhanh của công nghệ, việc dự đoán trước để đưa ra một chuẩn chung đánh giá mọi phần mềm là rất khó khăn. Chính vì vậy, chúng ta không thể áp dụng những phương pháp ước lượng công nghiệp truyền thống cho lĩnh vực công nghệ phần mềm.3 Các phƣơng pháp ƣớc lƣợng Trải qua 60 năm phần mềm tồn tại và được phát triển, đã có nhiều mô hình và phương pháp ước lượng được đưa ra nhằm ước lượng chính xác được chi phí cũng như thời gian thực hiện dự án. Mỗi phương pháp đều có ưu và nhược điểm và hầu hết chỉ áp dụng được trong một số trường hợp ngữ cảnh cụ thể. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12/71 Các phương pháp ước lượng được phân loại thành sáu nhóm chính [4] như Hình 1 Hình 1 Các kỹ thuật ước lượng theo giai đoạn Mô hình cơ bản trong ước lượng chi phí phần mềm : o Putnam‟s Software Life-cycle Model (SLIM) o CHECKPOINT o PRICE-S o ESTIMACS o SEER-SEM o SELECT Estimator o COCOMO Kỹ thuật ước lượng cải tiến o DELPHI o Work breakdown structure (WBS) Ước lượng với hệ chuyên gia o Case Based Reasoning (CBR) o Neural Networks Kỹ thuật ước lượng động Kỹ thuật ước lượng hồi quy o Ordinary Least Squares (OLS) o Hồi quy Robust Kỹ thuật kết hợp LUAN VAN CHAT LUONG download : add luanvanchat@agmail.1 Các mô hình ƣớc lƣợng cơ bản 1.1 Putnam’s Software Life-cycle Model (SLIM) Mô hình SLIM [4] được đề xuất dựa trên những phân tích của Putnam, sử dụng phân phối Rayleigh về quan hệ giữa số lượng nhân lực và thời gian phát triển của dự án trong vòng đời phát triển (Hình 2).
Công thức ước lượng mức vĩ mô là : S s Ck K 1 / 3t d4 / 3 (1) Trong đó: o Ss : số lượng dòng mã lệnh nguồn o K : nỗ lực trong vòng đời, tính bằng người-năm (man-years) o td : thời gian phát triển tính bằng năm o Ck : một “hằng số kỹ thuật” Giá trị của C thường nằm trong khoảng từ 57. Phiên bản SLIM mới cho phép tính Ck dựa trên các dự án trong quá khứ hoặc xem nó dưới dạng một hàm của các nhân tố của dự án như ngôn ngữ lập trình, ràng buộc phần cứng, kinh nghiệm phát triển, quy trình quản lý.Đối với hệ thống lớn, nỗ lực phát triển DE 1 được ước lượng theo mô hình SLIM sẽ xấp xỉ bằng 40% nỗ lực phát triển trong cả vòng đời. Đối với những hệ thống nhỏ hơn, tỉ lệ này sẽ thay đổi và là một hàm của kích thước hệ thống. Mô hình SLIM (Hình 2) cũng có thể mở rộng để ước lượng những yếu tố định lượng khác như sự phân bổ nhân lực, chu kỳ vốn, các mốc lịch biểu chính, các mức độ tin cậy, chi phí tính toán và các chi phí cho tài liệu.
1 Development Effort LUAN VAN CHAT LUONG download : add luanvanchat@agmail.