MỞ ĐẦU Hiện nay quản trị dự án ngày càng được ứng dụng rộng rãi trong các ngành nghề xã hội, trong đó có hoạt động quản lý dự án phần mềm. Cùng với sự phức tạp và đa dạng của phần mềm, hoạt động quản lý dự án phần mềm ngày càng tinh vi và phức tạp hơn. Trong đó nổi bật lên là vấn đề lập kế hoạch và phân bổ nguồn lực trong dự án. Với những dự án ít đầu việc và ít người tham gia thì vấn đề lập kế hoạch và lập lịch dự án một cách thủ công sẽ không đáng ngại.
Nhưng với những dự án lớn, có nhiều đầu việc phức tạp, số lượng nhân công (nguồn lực, tài nguyên) tham gia vào dự án lớn và cónhiều biến động,khi đó vấn đề lập kế hoạch, lập lịch dự án sẽ gặp khó khăn. Người làm kế hoạch sẽ phải tốn nhiều thời gian để tiến hành sửa đổi kế hoạch, lập lịch lại mỗi khi có sự biến động về nhân sự (hay rộng hơn là thay đổi về nguồn lực thực hiện dự án). Như vậy, vấn đề cấp thiết phải làm sao tự động được khâu này, để giảm thiểu sức người cũng như nâng cao chất lượng khâu này. Trong trí tuệ nhân tạo “Giải thuật di truyền” đã được ứng dụng rộng rãi đề giải quyết nhiều bài toán phức tạp.
Trong đó có các bài toán về lập lịch, lập kế hoạch.Việc áp dụng giải thuật di truyền nhằm làm tối ưu hóa vấn đề lập kế hoạch và phân bổ nguồn lực trong dự án phần mềm đã và đang được nghiên cứu cải tiến rất nhiều trên thế giới. Trong luận văn này tôi đặt trọng tâm tìm hiểu giải thuật di truyền và áp dụng vào lập lịch thực hiện các công việc trong dự án phần mềm với sự giới hạn về tài nguyên thực hiện các công việc trong dự án. Các kiến thức về lập lịch trong quản lý dự án phần mềm, kiến thức về giải thuật di truyền, cách áp dụng giải thuật di truyền để tự động lập lịch dự án cũng như các kỹ năng lập trình xây dựng ứng dụng hoàn chỉnh bước đầu có thể quản lý dự án và tự động chọn lựa phương án tối ưu để lập lịch dự án được học viên trình bày chi tiết trong luận văn vàđược chia thành 4 chương sau đây: Chƣơng 1. TỔNG QUAN VỀ QUẢN LÝ DỰ ÁN PHẦN MỀM Chương này giới thiệu về dự án phần mềm và quản lý dự án phần mềm.
Qua chương này ta thấy được phần mềm cũng như các tiến trình, công cụ quản lý phần mềm ngày càng phức tạp. Do vậy cần phải tìm cách tự động hóa càng nhiều khâu trong quản lý dự án càng tốt. Trong chương này cũng chỉ ra là có thể áp dụng giải thuật di truyền vào quản lý dự án phần mềm ở bước lập lịch biểu, gán nguồn lực thực hiện dự án. GIẢI THUẬT DI TRUYỀN VÀ CÁC ỨNG DỤNG Chương này sẽ cho người đọc một cái nhìn tổng quan về giải thuật di truyền và các ứng dụng của nó trong thực tế, qua đó người đọc có thêm hiểu biết về các vấn đề mã hóa giải thuật di truyền.
Giúp người đọc có thể vận dụng những kiến thức ở chương này để giải quyết các vấn đề của mình. ỨNG DỤNG GIẢI THUẬT DI TRUYỀN ĐỂ GIẢI QUYẾT BÀI TOÁN LẬP LỊCH TRONG QUẢN LÝ DỰ ÁN PHẦN MỀM Chương này đưa ra các bước cụ thể cách dùng giải thuật đi truyền vào bài toán lập lịch trong quản trị dự án phần mềm và phát triển các thuật toán di truyền: mã hóa, lai tạo, độ biến, chọn lọc để vận dụng giải quyết bài toán lập lịch với ràng buộc hạn chế về nguồn lực thực hiện dự án. XÂY DỰNG ỨNG DỤNG Dựa vào các kiến thức tìm hiểu ở các chương trên, chương này giới thiệu về cách tạo ứng dụng demo, hướng dẫn sử dụng ứng dụng này trong việc lâp lịch tự động. Giới thiệu tới người đọc framework giải thuật di truyền AForge.NET, cách sử dụng framework này trong việc viết chương trình demo.
Giới thiệu sơ lược về cách lập trình Add-ins cho phần mềm Microsoft Project và kết hợp giữa công cụ lập lịch tự động với phần mềm này. TổNG QUAN Về QUảN LÝ Dự ÁN PHầN MềM 1. Định nghĩa dự án,quản lý dự án phần mềm 1. Dự án là gì Có rất nhiều cách định nghĩa một dự án, chung quy lại dự án là quá trình tạo ra sản phẩm hay dịch vụ.
Do vậy các định nghĩa dự án như sau đều được chấp nhận:Dự án là một quá trình gồm các công việc, nhiệm vụ có liên quan với nhau, được thực hiện nhằm đạt được mục tiêu đã đề ra trong điều kiện ràng buộc về thời gian, nguồn lực và ngân sách. Hoặc định nghĩa dự án là một nhiệm vụ cần hoàn thành để có được một sản phẩm, dịch vụ duy nhất trong một thời hạn đã cho với kinh phí dự kiến. Hoặc dự án là một sự cố gắng nhất thời để tạo sản phẩm dịch vụ[5]. Cũng giống như các dự án thông thường, dự án phần mềmmang những đặc điểm cơ bản như sau: - Mỗi dự ánphải có một hoặc một số mục tiêu rõ ràng do dự ánlà một quá trình tạo ra kết quả cụ thể.
- Mỗi dự án đều có một thời hạn nhất định, toàn bộ thời gian của dự án được chia thành các giai đoạn: Giai đoạnkhởi đầu, giai đoạn triển khai và giai đoạn kết thúc. Thời gian thực hiện dự án được chỉ định không được vượt quá một khoảng thời gian nhất định (ví dụ không quá một tháng, một năm, hai năm…). Thời gian thự hiện dự án được ước lượng thông qua các tính năng của sản phẩm (kết quả của dự án) mà khách hàng yêu cầu và được sự đồng ý của khách hàng. Để đảm bảo dự án hoàn thành theo đúng thời gian cho phép, bộ phận quản trị dự án cần áp dụng các công cụ, phương pháp quản lý dự án phù hợp cho từng loại hình dự án nhằm đảm bảo dự án hoàn thành đúng tiến độ đã đề ra.
- Mỗi dự án đều có sử dụng nguồn lực và nguồnlực này bị hạn chế. Các nguồn lực đó bao gồm nhân lực, nguyên vậtliệu, ngân sách. Do các nguồn lực này là hạn chế nên phải có phương pháp quản trị và sử dụng các nguồn lực này trong dự án một cách hợp lý. - Giữa các dự án, không có sự lặp lại hoàn toàn giữa các dự án.
Ví dụ như giữa hai dự án hoàn toàn giống nhau về sản phẩm đầu ra, quy trình phát triển nhưng có yếu tố nhân lực vật lực hoặc thời gian triển khai dự án khác nhau, do vậy giữa hai dự án không có sự trùng lặp hoàn toàn. Với các dự án phần mềm thì có nhiều điểm thuận lợi hơn các dự án khác. Những điểm thuận lợi mà dự án phần mềm có được như: - Sản phầm của dự án dễ sửa đổi hơn sản phẩm vật chất khác. Với dự án phần mềm khi có yêu cầu sửa đổi sản phẩm thì đội phát triển sẽ sửa đổi mã nguồn và biên dịch thành chương trình chạy và gửi lại khách hàng.
Nhưng với các sản z 15 phẩm thông thường ví dụ như chiếc tivi, nếu khách muốn đổi các thông số trên chiếc tivi này, muốn có một số tính năng mới thì rất khó có thể làm được điều này. - Các pha của vòng đời dự án rõ ràng. Vòng đời chuẩn của quản lý dự án gồm 4 pha : Xác định dự án, Lập kế hoạch, Thực hiện và cuối cùng là Đóng dự án. - Có thể có nhiều giải pháp cho một yêu cầu.
Ví dụ cùng một yêu cầu xây dựng phần mềm kế toán có thể có hai giải pháp thực hiện vấn đề này, giải pháp thứ nhất là xây dựng phần mềm sử dụng online qua internet, giải pháp thứ hai là xây dựng phần mềm offline, không nhất thiết phải làm sao để có nhiều người dùng truy xuất một lúc với giải pháp offline.Tùy vào giải pháp cụ thể mà đội phát triển dự án sẽ có những phương án nguồn lực cụ thể để hoàn thành dự án, như với giải pháp xây dựng phần mêm có thể sử dụng online qua internet thì cần phải chọn nhân lực có các kỹ năng về lập trình web, ngược lại giải pháp offline thì cần các nhân lực có kỹ năng về lập trình ứng dụng window. - Định hình sản phẩm của dự án phần mềm không cứng nhắc miễn là đáp ứng được yêu cầu. Như ở ví dụ trên đã đưa ra về việc xây dựng phần mềm kế toán, đội phát triển có thể định hình sản phẩm theo hai hướng là phần mềm được sử dụng qua internet hoặc không cần kết nối qua internet miễn là phần mềm sao đáp ứng được các tính năng cần có của một phần mềm kế toán mà khách hàng yêu cầu. - Có nhiều công cụ trợ giúp và các công cụ này ngày càng tốt hơn mạnh hơn.
Đối với các dự án phần mềm các công cụ trợ giúp ngày càng mạnh, có thể kế đến các công cụ quản lý mã nguồn, công cụ hỗ trợ quản lý yêu cầu, công cụ quản lý lỗi, các công cụ hỗ trợ lập trình như Microsoft visual studio 2001, các công cụ quản lý cơ sở dữ liệu…Nhờ có các công cụ này mà các dự án phần mềm ngày càng được rút ngắn thời gian phát triển mà vẫn đảm bảo chất lượng phần mềm và làm hài lòng khách hàng. - Dự án phần mềm còn có đăc điểm nữa là cho phép bộ phận triển khai dự án vận dụng nhiều giải pháp: công nghệ, quản lý vào quản lý dự án. Sản phẩm của dự án phần mềm là phần mềm bao gồm chương trình (mã máy) và dữ liệu và tài liệu hướng dẫn, sản phẩm phần mềm mang các đặc trưng khác so với các sản phẩm của dự án thông thường: - Sản phẩm phần mềm là vô hình, không cầm nắm được như các sản phẩm thông thường. Sản phẩm phần mềm được lưu trữ trên máy tính bao gồm chương trình, cơ sở dữ liệu và các tài liệu hướng dẫn sử dụng.
Khi sử dụng sản phẩm phần mềm cần phải có máy tính, người sử dụng sản phẩm phần mềm cũng cần phải có một số kiến thức nhất định về công nghệ thông tin, cần phải biết cách sử dụng máy tính. z 16 - Cùng một yêu cầu nhưng không xác định duy nhất sản phẩm đầu ra. Khi mà khách hàng yêu cầu xây dựng phần mềm thì mỗi đội phát triển sẽ cho ra một sản phẩm khác nhau, có thể có những khác nhau về giao diện, quy trình nghiệp vụ, tính năng sản phẩm. Những sự khác nhau này vẫn cần phải đảm bảo sản phẩm làm ra phải thỏa mãn yêu cầu và làm hài lòng khách hàng.