Chương 1 trình bày cơ sở lý thuyết về quản lý dự án phần mềm, công nghệ phần mềm hướng giá trị, phương pháp quản trị giá trị thu được và các phương pháp dự đoán chi phí và thời gian hoàn thành dự án. Trong chương này NCS cũng trình bày tổng quan về một số phương pháp học máy tiên tiến như LSTM, XGBoost, LightGBM. Phần cuối chương NCS trình bày các vấn đề nghiên cứu liên quan đến đề tài và giới thiệu bài toán đánh giá mức độ hoàn thành của dự án phần mềm dựa vào dự đoán chi phí và thời gian hoàn thành dự án. Tổng quan về quản lý dự án phần mềm 1.
Lịch sử phát triển Lịch sử phát triển của quản lý dự án phần mềm là một quá trình dài với nhiều thay đổi và cải tiến. Dưới đây là một tóm tắt về các giai đoạn chính và những điểm mốc quan trọng trong lịch sử phát triển của dự án phần mềm [14]: - Giai đoạn khởi đầu của quản lý dự án phần mềm (1970s): Khái niệm về quản lý dự án phần mềm bắt đầu được chú trọng hơn. Mô hình phát triển thác nước (Waterfall Model) ra đời, với các bước tuần tự từ phân tích yêu cầu đến thiết kế, lập trình, kiểm thử và triển khai. - Giai đoạn chuẩn hóa và phát triển phương pháp luận (1980s-1990s): + 1980s: Sự xuất hiện của nhiều mô hình phát triển phần mềm khác nhau như mô hình xoắn ốc (Spiral Model), CMM (Capability Maturity Model) được phát triển để đánh giá mức độ trưởng thành của quy trình phát triển phần mềm.
+ 1990s: Các phương pháp phát triển phần mềm linh hoạt bắt đầu được đề xuất để thay thế các phương pháp truyền thống. Mô hình Scrum và Extreme Programming (XP) được giới thiệu và bắt đầu trở nên phổ biến. - Giai đoạn các phương pháp linh hoạt (2000s-2010s): + 2001: Tuyên ngôn cho phát triển phần mềm linh hoạt (Manifesto for Agile Software Development) được công bố, đánh dấu sự chuyển đổi quan trọng sang các phương pháp phát triển phần mềm linh hoạt và tập trung vào tương tác con người, sản phẩm hoạt động, hợp tác với khách hàng và phản ứng với thay đổi. + 2000s-2010s: Phương pháp Agile, Scrum, Kanban và các phương pháp linh hoạt khác trở nên phổ biến rộng rãi.
Các công cụ quản lý dự án như Jira, Trello, và Asana được phát triển để hỗ trợ quản lý dự án phần mềm theo các phương pháp linh hoạt. - Giai đoạn hiện nay (2020s): Trang 15 Sự phát triển của các công nghệ mới như trí tuệ nhân tạo, học máy và phương pháp phát triển phần mềm kết hợp giữa các hoạt động của nhóm phát triển và nhóm vận hành (DevOps) đã thay đổi cách quản lý dự án phần mềm. Sự ra đời của các nền tảng quản lý dự án tích hợp và công cụ tự động hóa, như GitLab và GitHub Actions, giúp tối ưu hóa quy trình phát triển và triển khai phần mềm. Quá trình phát triển quản lý dự án phần mềm là một sự tích lũy kiến thức và kinh nghiệm qua nhiều thập kỷ, với nhiều cải tiến và thay đổi để đáp ứng yêu cầu ngày càng cao của ngành công nghiệp phần mềm.
Giới thiệu quản lý dự án Dự án là một nỗ lực phức tạp, không thường xuyên, mang tính chất đơn nhất được thực hiện trong điều kiện ràng buộc nhất định về thời gian, ngân sách, nguồn lực và các tiêu chuẩn chất lượng để đáp ứng yêu cầu của khách hàng. Quản lý dự án là sự áp dụng một cách phù hợp các kiến thức, kỹ năng, công cụ và kỹ thuật vào trong quá trình đề xuất dự án, lập kế hoạch dự án, thực hiện dự án, theo dõi giám sát dự án và kết thúc dự án để đạt được các yêu cầu của dự án [3]. Mục tiêu cơ bản của việc quản lý dự án thể hiện ở chỗ các công việc phải được hoàn thành theo yêu cầu và bảo đảm chất lượng, trong phạm vi chi phí được duyệt, đúng thời gian và giữ cho phạm vi dự án không thay đổi. Quản lý dự án thường bao gồm: - Xác định các yêu cầu (của công ty hoặc của khách hàng).
- Xác định và đáp ứng các nhu cầu, các mối quan tâm, và mong đợi của các chủ thể dự án trong quá trình lập kế hoạch và thực hiện dự án. - Cân đối hài hoà giữa các yêu cầu, ràng buộc khác nhau của dự án bao gồm, trong đó 3 ràng buộc chính là: phạm vi, thời gian, chi phí. Thời gian hoàn thành Chất lượng Phạm vi dự án Chi phí (tiền, dự án nhân sự) Hình 1.1: Tam giác quản lý dự án Trang 16 Mỗi dự án cụ thể sẽ có những yêu cầu và ràng buộc nhất định đòi hỏi nhà quản lý dự án cần phải xác định thứ tự ưu tiên giữa các yêu cầu. Các ràng buộc trong dự án có mối quan hệ tương tác với nhau, nghĩa là sự thay đổi của một ràng buộc có thể kéo theo sự thay đổi của một hoặc nhiều ràng buộc khác.
Ví dụ, khi yêu cầu rút ngắn thời hạn hoàn thành dự án, kinh phí thực hiện dự án thường phải tăng lên vì cần bổ sung thêm nguồn lực để hoàn thành cùng khối lượng công việc trong thời gian ngắn hơn. Nếu không thể tăng kinh phí, có thể phải thu hẹp phạm vi dự án bằng cách cắt giảm một số hạng mục công việc, hoặc chấp nhận giảm chất lượng đầu ra bằng cách sử dụng nguyên vật liệu có chất lượng thấp hơn hoặc thay đổi phương án thi công với chi phí ít hơn và chất lượng thấp hơn. Các bên liên quan trong dự án thường có ý kiến khác nhau về yếu tố nào là quan trọng nhất, tạo ra thách thức lớn cho dự án. Thay đổi các yêu cầu đối với dự án cũng có thể làm tăng mức độ rủi ro.
Do đó, đội ngũ dự án cần có khả năng đánh giá tình hình và hài hòa các yêu cầu khác nhau để thực hiện và bàn giao dự án thành công [3]. Nhà quản lý dự án (PM – Project manager) là người được công ty thực hiện dự án bổ nhiệm để đạt được các mục tiêu của dự án. Đây là một ví trị quản lý đầy thách thức với trách nhiệm nặng nề và các mức độ ưu tiên luôn thay đổi. Vị trí này đòi hỏi người đảm nhiệm phải rất linh hoạt, nhạy bén, có kỹ năng lãnh đạo và đàm phán tốt, cùng với kiến thức sâu rộng về quản lý dự án.
Nhà quản lý dự án cần am hiểu mọi vấn đề chi tiết của dự án, đồng thời phải quản lý với tầm nhìn bao quát toàn bộ dự án. Họ phải chịu trách nhiệm về sự thành công của dự án và chịu trách nhiệm hoàn toàn về mọi mặt của dự án, bao gồm:: - Phát triển kế hoạch quản lý dự án và các kế hoạch chi tiết khác; - Đảm bảo rằng việc thực hiện dự án luôn tuân thủ tiến độ và ngân sách đã định; - Phát hiện, theo dõi và xử lý kịp thời các vấn đề phát sinh và các rủi ro trong quá trình thực thi - quản lý rủi ro; - Định kỳ lập các báo cáo chính xác và cập nhật về tình hình thực hiện dự án. Theo PMBOK, năng lực, kiến thức của quản lý dự án được mô tả trong 10 lĩnh vực kiến thức có thể chia làm 2 nhóm: nhóm kỹ năng cứng và nhóm kỹ năng mềm. Các lĩnh vực kiến thức quản lý dự án thuộc nhóm kỹ năng cứng tập trung vào các quy trình và công cụ để khởi tạo, lập kế hoạch, thực thi, giám sát và điều khiển, và đóng dự án trong suốt vòng đời dự án [3]: - Quản lý tích hợp dự án (Project Integration Management): phát triển điều lệ dự án, tích hợp các kế hoạch quản lý dự của các lĩnh vực kiến thức khác thành kế hoạch quản lý dự án hoàn chỉnh, và quản lý các yêu cầu thay đổi trong suốt vòng đời dự án; Trang 17 - Quản lý phạm vi dự án (Project Scope Management): xác định và quản lý yêu cầu, xác định đường cơ sở phạm vi, và theo dõi việc hoàn thành phạm vi dự án; - Quản lý thời gian dự án (Project Time Management): chia nhỏ đường cơ sở phạm vi thành những thành phần dễ quản lý hơn gọi là hoạt động, phát triển lịch trình dự án cũng được gọi là đường cơ sở lịch trình, và kiểm soát lịch trình; - Quản lý chi phí dự án (Project Cost Management): ước lượng chi phí, xác định đường cơ sở chi phí bao gồm dự phòng rủi ro và dự phòng quản lý, và kiểm soát chi phí; - Quản lý chất lượng dự án (Project Quality Management): lập kế hoạch quản lý chất lượng bao gồm tiêu chuẩn chất lượng, chỉ số chất lượng, và kế hoạch liên tục cải tiến; các hoạt động đảm bảo chất lượng nhằm đảm bảo kế hoạch quản lý dự án và tiêu chuẩn chất lượng được tuân thủ; và kiểm soát chất lượng tất cả các sản phẩm bàn giao và kiểm tra tất cả các thay đổi đã được phê duyệt; - Quản lý rủi ro dự án (Project Risk Management): xác định rủi ro, phân tích định tính và phân tích định lượng rủi ro nhằm phân loại thành nhóm rủi ro được quản lý và nhóm rủi ro vào danh sách chờ, phát triển kế hoạch phản ứng khi rủi ro xảy ra, và kiểm soát rủi ro trong suốt quá trình thực thi dự án; - Quản lý mua sắm đấu thầu dự án (Project Procurement Management): chọn loại hợp đồng trong 3 loại hợp đồng phổ biến (giá cố định, hoàn phí, thời gian và vật liệu), đánh giá nhà cung cấp, trao hợp đồng và quản lý các thay đổi, phát sinh và tranh cãi trong suốt quá trình thực thi dự án.
Các lĩnh vực kiến thức của nhóm kỹ năng mềm gồm [3]: Quản lý giao tiếp dự án (Project Communications Management): cung cấp thông tin dự án cho các bên liên quan và kiểm soát hiệu quả tất cả các kênh giao tiếp trong dự án. Quản lý giao tiếp là một thách thức với tất cả nhà quản lý dự án bởi vì số kênh giao tiếp trong dự án tăng theo hệ số mũ khi số bên liên quan trong dự án tăng lên (số kênh giao tiếp được tính bằng n*(n-1)/2 với n và số bên liên quan trong dự án) và thời gian dành cho giao tiếp trong dự án chiếm đến 90% tổng thời gian của nhà quản lý dự án; - Quản lý nhân sự dự án (Project HR Management): thành lập đội dự án, xây dựng đội dự án thông qua 5 giai đoạn phát triển đội dự án theo mô hình Tuckman (thành lập, bão tố, bình thường, thực thi, và giải tán) và quản lý các xung đột trong đội dự án.