Đặt vấn đề Sự thành công hay thất bại của một dự án nói chung và dự án phát triển phần mềm nói riêng phụ thuộc rất nhiều vào những kết quả của quá trình ước lượng, lập dự toán chi phí trước thời điểm triển khai dự án vào thực tế. Chủ đề này đã thu hút sự chú của rất nhiều nhà khoa học trên thế giới và đến nay đã có những công trình nghiên cứu có chất lượng. Từ xu hướng đó tác giả đã nghiên cứu một số phương pháp luận thường được sử dụng để ước lượng chi phí phát triển phần mềm, đặc biệt là những phương pháp mô phỏng quá trình lập luận của con người. Trong số đó, phương pháp lập luận dựa trên kinh nghiệm CBR (Case based reasoning) là một trong những phương pháp có nhiều ưu điểm, có khả năng áp dụng thành công vào công việc ước lượng chi phí.
Đã có nhiều sản phẩm phần mềm thực hiện ước lượng bằng phương pháp này, tuy nhiên chưa có tiêu chuẩn cụ thể để đánh giá độ tin cậy kết quả mà những sản phẩm này đưa ra. Vì vậy qua luận văn này tác giả mong muốn: - Tìm hiểu phương pháp ước lượng dựa trên kinh nghiệm CBR (Case based reasoning). - Xây dựng một công cụ ước lượng chi phí phát triển phần mềm sử dụng kiến thức đã tìm hiểu được. - Thực nghiệm và đánh giá phương pháp ước lượng chi phí phát triển phần mềm tại phòng Hệ thống - Công ty Honda Vietnam.
Tính cấp thiết của đề tài Trong quá trình phát triển dự án phần mềm thì quản lý chi phí là một công việc có tầm quan trọng vô cùng lớn, bao gồm những quy trình đảm bảo cho dự án được hoàn tất trong sự cho phép của ngân sách: lập kế hoạch cho nguồn tài nguyên, ước lượng chi phí, dự toán chi phí, kiểm soát và điều chính chi phí. Nếu công việc này không được làm tốt sẽ dẫn tới sự thất bại của dự án và theo số liệu thống kê tại các doanh nghiệp Mỹ do CHAOS thực hiện thì chi phí trung bình vượt quá dự toán ban đầu theo nghiên cứu từ năm 1995 là 189% và giảm xuống còn 145% trong năm 2001. Hậu quả của việc huỷ các dự án Công nghệ thông tin ở Mĩ đã làm tốn trên 81 tỉ đô la (số liệu thống kê năm 1995 do CHAOS thực hiện)[5]. Vì vậy, việc ước lượng chính xác chi phí cần thiết để xây dựng các phần mềm là một vấn đề đang được quan tâm hiện nay.
Xuất phát từ nhu cầu trên, tính từ năm 1960 cho đến nay đã có nhiều nhà khoa học đã tiến hành những công trình nghiên cứu nhằm tìm ra phương pháp luận chính xác nhất để ước lượng chi phí phát triển phần mềm như: mô hình ước lượng bằng tham số của Frank Freiman (1970)[7], phương pháp ước tính dựa trên các thông số COCOMO (1977) và COCOMO II (1990) của Barry W. Boehm[7], phương pháp ước TIEU LUAN MOI download : skknchat@gmail.com 2 tính bằng điểm chức năng của Capres Jones (1980)[7]. Tuy nhiên, những phương pháp này còn tồn tại nhiều hạn chế như yêu cầu phải có đủ số thông tin đầu vào để tính toán chính xác, dựa trên một mô hình tính toán được xác định rõ nên khó áp dụng được ở những giai đoạn đầu của quá trình phát triển dự án. Để khắc phục những khó khăn đó, Roger Schank và các đồng nghiệp tại đại học Yale đề xuất ước lượng chi phí bằng phương pháp lập luận dựa trên kinh nghiệm CBR (Case base reasoning) năm 1977[4].
Ưu điểm nổi trội của phương pháp này là mô phỏng quá trình lập luận của con người nên dễ hiểu và có thể làm công cụ giải trình hiệu quả cho các thành viên tham gia phát triển dự án phần mềm. Ngoài ra, phương pháp cho phép thực hiện ước lượng với tập nhỏ dữ liệu ban đầu, dữ liệu trong tập kinh nghiệm sẽ được cập nhật ở những lần thực hiện ước lượng tiếp theo nên độ chính xác của kết quả ước lượng sẽ tỉ lệ thuận với số lượng dự án được lưu trữ trong cơ sở dữ liệu. Mục tiêu của đề tài Mục tiêu của luận văn này nhằm tập trung nghiên cứu về phương pháp ước lượng dựa trên kinh nghiệm qua đó xây dựng một công cụ áp dụng kiến thức đã tìm hiểu được và đánh giá khả năng áp dụng sản phẩm tại phòng Hệ thống – Công ty Honda Vietnam. Đối tƣợng và phạm vi nghiên cứu - Đối tượng: các dự án phần mềm được phát triển tại công ty Honda Vietnam từ năm 2006 đến nay.
- Phạm vi: bài toán ước lượng chi phí phát triển phần mềm tại phòng Hệ thống, công ty Honda Vietnam. Kết cấu của luận văn Bố cục của luận văn chia thành 05 chương: - Chƣơng 1: Giới thiệu. Nội dung chương: Nêu tính cấp thiết của đề tài, mục tiêu và phạm vi nghiên cứu của luận văn. - Chƣơng 2: Quy trình ước lượng chi phí phát triển phần mềm Nội dung chương: Mô tả chi tiết các bước của quy trình ước lượng chi phí phát triển phần mềm và một số phương pháp ước lượng thường sử dụng.
- Chƣơng 3: Phương pháp lập luận dựa trên kinh nghiệm. Nội dung chương: Trình bày các bước thực hiện và đánh giá ưu nhược điểm của phương pháp lập luận dựa trên kinh nghiệm. - Chƣơng 4: Phân tích thiết kế hệ thống PC-PACK-CES. Nội dung chương: Trình bày chi tiết phân tích, thiết kế của hệ thống PC- PACK-CES (ca sử dụng, biểu đồ tuần tự, thiết kế bảng dữ liệu).
- Chƣơng 5: Đánh giá khả năng áp dụng PC-PACK-CES tại công ty Honda Vietnam. Nội dung chương: Trình bày kết quả thử nghiệm và đánh giá khả năng áp dụng hệ thống PC-PACK-CES tại công ty Honda. TIEU LUAN MOI download : skknchat@gmail.com 3 - Kết luận và hƣớng phát triển của đề tài. Nội dung chương: Trình bày những kết luận của tác giả sau khi nghiên cứu và triển khai phần mềm áp dụng phương pháp lập luận dựa trên kinh nghiệm tại công ty Honda.
Ngoài ra, tác giả cũng đề xuất hướng nghiên cứu và cải tiến chương trình của tác giả trong thời gian tới. TIEU LUAN MOI download : skknchat@gmail.com 4 CHƢƠNG 2 – QUY TRÌNH ƢỚC LƢỢNG CHI PHÍ PHÁT TRIỂN PHẦN MỀM 2. Tổng quan và mục đích ƣớc lƣợng Phần mềm là một sản phẩm đặc thù có quan hệ mật thiết với nguồn ngân sách đầu tư xây dựng hệ thống thông tin của bất kì tổ chức nào. Với tính đa dạng của các đặc trưng phần mềm và sự xuất hiện ngày càng nhiều của các công nghệ mới đã dẫn đến sẽ ngày càng khó khăn hơn để ước lượng chính xác chi phí cần thiết để phát triển dự án phần mềm.
Quá trình ước lượng bao gồm việc xác định và thẩm định những yếu tố có liên quan đến quá trình xây dựng một sản phẩm phần mềm. Đó có thể là những tiến trình phát triển dự án, nguồn nhân lực và tài nguyên cần để xây dựng và hoàn thiện dự án. Đến thời điểm hiện tại, việc ước tính chính xác chi phí cần thiết để hoàn thành một dự án vẫn là một vấn đề được nhiều nhà nghiên cứu trên thế giới quan tâm. Mục đích của việc ước lượng chi phí phát triển phần nhằm đáp ứng các yêu cầu sau: - Là cơ sở để xem xét và đánh giá tính khả thi của dự án: bất kì tổ chức nào trước khi quyết định có thực hiện dự án hay không sẽ cần tới kết quả ước lượng chi phí và nguồn tài nguyên cần để hoàn thành dự án.
Dựa trên kết quả ước lượng này các tổ chức sẽ xem xét và đánh giá khả năng của mình có thể thực hiện dự án hay không để từ đó đưa ra quyết định cần thiết. - Là công cụ hỗ trợ quản lý dự án: người quản lý dự án sẽ chịu trách nhiệm lập kế hoạch và điều hành việc thực thi dự án. Nhờ có sự trợ giúp của các kết quả ước lượng dự án, công việc này sẽ đơn giản và hiệu quả hơn vì công việc quản lý có thể dựa trên lịch biểu và nguồn nhân lực đã được ước tính trước đó. - Các thành viên của đội thực hiện dự án sẽ kết hợp với nhau hiệu quả hơn nếu hiểu rõ vai trò của mình và toàn bộ các hoạt động trong dự án.
Điều này có thể đạt được nếu kết quả ước lượng được áp dụng để xây dựng bảng phân chia nhiệm vụ cho các thành viên trong nhóm phát triển phần mềm. Quá trình ước lượng chi phí có thể được thực hiện nhiều lần trong suốt vòng đời phát triển dự án. Lý do là vì trong quá trình xây dựng hệ thống sẽ xuất hiện ngày càng nhiều thông tin hữu ích chưa có tại thời điểm thực hiện ước lượng trước đó và những thông tin này sẽ làm tăng độ chính xác, chi tiết của quá trình ước lượng. Chi tiết quy trình ƣớc lƣợng Nếu quá trình ước lượng chi phí được tích hợp với quá trình phát triển phần mềm thì có thể lập nên các kế hoạch dự án khả thi và đáng tin cậy, giúp thoả mãn các yêu cầu của hệ thống và các cam kết đã đề ra.
Ngoài ra, quá trình này còn hỗ trợ đắc lực cho hoạt động quản lý dưới hình thức cung cấp những thông tin kế hoạch chính xác và kịp thời. TIEU LUAN MOI download : skknchat@gmail.com 5 Cấu trúc của dự án được hình thành từ nhiều yếu tố khác nhau bao gồm đặc tả yêu cầu và kiến trúc của hệ thống, yêu cầu chất lượng, kế hoạch sử dụng nguồn nhân lực. Tuy nhiên, yếu tố có vai trò quan trọng nhất và có vai trò quyết định tới sự thành công hoặc thất bại của dự án là việc ước lượng phạm vi, yếu tố thời gian và chi phí cần thiết để hoàn thành dự án. Quá trình ước lượng có thể tác động tới nhiều khía cạnh của dự án, ràng buộc các hoạt động có thể được thực hiện trong quá trình phát triển hoặc nâng cấp sản phẩm phần mềm và là cơ sở để lựa chọn những phương án đã lập kế hoạch.
Từ những phân tích trên, chúng ta có thể định nghĩa ước lượng là quá trình đưa ra nhận định về giá trị xấp xỉ, gần đúng của một số thông tin mà ta quan tâm. Ước lượng có thể dựa trên miền tri thức hoặc giả định không đầy đủ hay hoàn chỉnh. Đã có nhiều công trình nghiên cứu để chuẩn hoá quy trình ước lượng chi phí phát triển phần mềm, tuy nhiên cho đến nay vẫn chưa có một mô hình tiêu chuẩn được thừa nhận và sử dụng rộng rãi. Mỗi một tổ chức sẽ có một mô hình ước tính chi phí của riêng mình, nhưng nhìn chung những mô hình đó bao gồm những bước chính sau: Hình 2 - 1.