Theo tổ chức IEEE, một số nguyên nhân dẫn đến sự thất bại trong việc quản lý dự án như sau:[2]
- Dự án không có tính thực tế và không khớp
- Ước tính không chính xác nguồn lực cần thiết cho dự án
- Xác định yêu cầu hệ thống không đúng
- Báo cáo tình trạng dự án sơ sài
- Không quản lý độ rủi ro
- Việc giao tiếp khách hàng, người sử dụng và người phát triển dự án không tốt
- Sử dụng công nghệ chưa phát triển
- Không có khả năng xử lý độ phức tạp của dự án
- Phát triển thực hành không có hệ thống
- Thiếu kinh nghiệm trong việc quản lý dự án
- Các bên liên quan mang tính chính trị
- Các áp lực mang tính thương mại
Đặt vấn đề
- Để xây dựng được một hệ thống phần mềm thành công, cần thiết phải quản lý dự án
- Dựa trên hiểu biết của mình, hãy cho biết quản lý dự án là gì?
- Quản lý dự án phần mềm có giống quản lý các dự án khác không?
Quản lý dự án phần mềm là một phần quan trọng của công nghệ phần mềm. Nếu quản lý tốt thì chưa chắc dự án đã thành công, nhưng nếu quản lý tồi thì chắc chắn dự án sẽ thất bại. Dự án thất bại khi phần mềm chuyển giao chậm hơn so với kế hoạch, chi phí lớn hơn dự tính, và không thoả mãn các yêu cầu đề ra.
Quản lý dự án phần mềm có liên quan tới những hoạt động nhằm đảm bảo chuyển giao phần mềm đúng thời hạn, đúng kế hoạch và phù hợp với các yêu cầu của tổ chức phát triển phần mềm.
Quản lý dự án phần mềm có một số đặc trưng khác biệt so với các loại dự án khác:
- Sản phẩm là vô hình. Sản phẩm có khả năng thay đổi linh động.
- Công nghệ phần mềm không được thừa nhận như một quy tắc công nghệ có trạng thái chuẩn mực như các ngành công nghệ khác.
- Quy trình phát triển phần mềm không được chuẩn hoá.
- Nhiều dự án phần mềm là những dự án chỉ làm một lần.
Không giống như các sản phẩm hữu hình khác, phần mềm là sản phẩm vô hình. Sản phẩm phần mềm có khả năng thay đổi linh động, nhưng đó cũng là yếu điểm của phần mềm khi ai cũng nghĩ phần mềm dễ sản xuất, và do vậy tư duy sử dụng miễn phí đã khiến cho đàm phán xây dựng phần mềm trở nên hết sức khó khăn.
Quản lý dự án là một yêu cầu cần thiết vì phát triển phần mềm luôn phải thoả mãn các ràng buộc về kế hoạch và chi phí đã được xác định bởi tổ chức phát triển phần mềm. Người quản lý dự án phải chịu trách nhiệm lập kế hoạch và theo dõi quá trình thực hiện dự án.
Các hoạt động quản lý
Đặt vấn đề
- Những công việc phải làm trong Quản lý dự án là gì?
- Hãy thảo luận về những công việc đó. Cho biết công việc nào là quan trọng nhất.
Các hoạt động quản lý dự án bao gồm:
- Viết kế hoạch dự kiến: Đây là một công việc khá phức tạp. Nó mô tả mục tiêu của dự án, phương pháp thực hiện, ước lượng thời gian và chi phí …
- Lập kế hoạch dự án: liên quan đến việc xác định các hành động, các mốc thời gian và các sản phẩm được tạo ra.
- Tính chi phí dự án
- Điều hành và xem xét lại dự án: người quản lý phải giám sát quy trình thực hiện dự án, so sánh quy trình và chi phí thực tế với kế hoạch đã định. Nếu điều hành tốt, người quản lý dự án có thể phát hiện và khắc phục được những rủi ro tiềm tàng.
- Lựa chọn và đánh giá cá nhân. Việc lựa chọn nhân viên thích hợp cho một dự án là rất khó khăn. Khi lựa chọn đội dự án, người quản lý dự án có thể gặp phải một số vấn đề sau: ngân sách của dự án không đủ để trả cho những nhân viên có mức lương cao, không có được những nhân viên có kinh nghiệm và trình độ thích hợp, tổ chức muốn chỉ định một số nhân viên mới tham gia vào dự án ...
- Viết báo cáo và trình bày.
Tuy nhiên, ngày nay chúng ta có rất nhiều kỹ thuật và công cụ được sử dụng để hỗ trợ cho việc quản lý dự án phần mềm.
Lập kế hoạch dự án
Mục tiêu (Objectives)
- Hiểu rõ tầm quan trọng của việc lập kế hoạch dự án
- Phải biết rằng ứng với mỗi hoạt động trong quá trình phát triển phần mềm, chúng ta sẽ phải có một bản kế hoạch riêng.
- Nắm được cấu trúc của một bản kế hoạch dự án phát triển hệ thống phần mềm.
Lập kế hoạch dự án có thể là hoạt động tốn nhiều thời gian nhất trong quá trình quản lý dự án. Nó liệt kê các hành động từ pha khởi tạo cho đến khi đưa ra được hệ thống. Kế hoạch phải được theo dõi thường xuyên, nhất là khi có những thông tin hoặc những yêu cầu mới xuất hiện.
Trong quá trình thực hiện dự án, chúng ta có nhiều loại kế hoạch được xây dựng để hỗ trợ cho kế hoạch chính của dự án phần mềm như: kế hoạch chất lượng, kế hoạch thẩm tra, kế hoạch quản lý cấu hình, kế hoạch bảo trì, kế hoạch phát triển nhân sự …
Cấu trúc của bản kế hoạch dự án gồm:
- Phần giới thiệu (Project Charter): mô tả các mục tiêu của dự án và các ràng buộc gây ảnh hưởng tới việc quản lý dự án.
- Tổ chức dự án: mô tả cách tổ chức của đội dự án, bao gồm những ai và những nhiệm vụ gì.
- Phân tích rủi ro: mô tả những rủi ro có thể xảy ra, dự báo khi nào chúng xảy ra và đề xuất chiến lược giảm rủi ro.
- Các yêu cầu về tài nguyên phần cứng và phần mềm: xác định những phần cứng và phần mềm nào cần thiết cho quá trình thực hiện dự án.
- Bảng thống kế công việc: xác định các công việc, từng mốc thời gian và kết quả của từng công việc.
- Lịch biểu của dự án: lịch biểu cho thấy sự phụ thuộc giữa các hành động, thời gian ước tính để đạt tới mốc và phân công công việc cho từng người. Mốc là điểm cuối của một hành động trong quy trình. Ví dụ, trong mô hình thác nước cho phép ta định nghĩa các mốc của tiến trình một cách rõ ràng.
- Các kỹ thuật điều hành và báo cáo
Viết đề án
Viết đề án là quá trình xây dựng tài liệu mô tả đề án để xác định phạm vi của dự án, trách nhiệm của những người tham gia dự án; là cam kết giữa người quản lý dự án, người tài trợ dự án và khách hàng. Nội dung của tài liệu mô tả đề án thường có những nội dung sau:
- Bối cảnh thực hiện dự án: Căn cứ pháp lý để thực hiện dự án, hiện trạng công nghệ thông tin của khách hàng trước khi có dự án, nhu cầu ứng dụng phần mềm của khách hàng, đặc điểm và phạm vi của phần mềm sẽ xây dựng.
- Mục đích và mục tiêu của dự án: xác định mục đích tổng thể, tin học hóa hoạt động nào trong quy trình nghiệp vụ của khách hành, xác định mục tiêu của phần mềm gồm lượng dữ liệu xử lý, lợi ích phần mềm đem lại.
- Phạm vi dự án: Những người liên quan tới dự án, các hoạt động nghiệp vụ cần tin học hóa.
- Nguồn nhân lực tham gia dự án: Cán bộ nghiệp vụ, người phân tích, người thiết kế, người lập trình, người kiểm thử, người cài đặt triển khai dự án cho khách hàng, người hướng dẫn khách hàng sử dụng phần mềm, người bảo trì dự án phần mềm.
- Ràng buộc thời gian thực hiện dự án: Ngày nghiệm thu dự án, ngày bàn giao dự án.
- Ràng buộc kinh phí: Kinh phí trong từng giai đoạn thực hiện dự án.
- Ràng buộc công nghệ phát triển: Công nghệ nào được phép sử dụng để thực hiện dự án.
- Chữ ký các bên liên quan tới dự án.
Lịch biểu của dự án
Mục tiêu
- Phải hiểu rõ lập lịch biểu dự án là làm gì?
- Nắm được một số quy tắc và các gợi ý khi lập lịch biểu
- Có khả năng áp dụng biểu đồ cột, sơ đồ mạng để xây dựng lịch biểu
- Có thể sử dụng một số công cụ hỗ trợ lập lịch biểu như: M.Excel, M.Project …
Lập lịch biểu dự án là một trong những công việc khó khăn nhất đối với người quản lý dự án. Người quản lý phải chia dự án thành nhiều nhiệm vụ, ước lượng thời gian và tài nguyên cần thiết để hoàn thành từng nhiệm vụ.
Khi lập lịch biểu, người quản lý nên tổ chức các công việc song song để sử dụng tối ưu lực lượng lao động và tối thiểu hoá sự phụ thuộc lẫn nhau giữa các nhiệm vụ để tránh sự chậm trễ khi một nhiệm vụ phải đợi nhiệm vụ khác hoàn thành.
Chất lượng của lịch biểu phụ thuộc vào hiểu biết và kinh nghiệm của người quản lý. Tuy nhiên, khi lập lịch biểu chúng ta phải chú ý tới các vấn đề sau:
- Việc ước lượng mức độ khó của một vấn đề nào đó và xác định chi phí để giải quyết nó là rất khó khăn.
- Khả năng sản xuất không tương ứng với số lượng người làm việc trong một nhiệm vụ.
- Bổ sung thêm người vào dự án sẽ làm cho nó chậm hơn vì giao tiếp trong dự án trở lên quá tải.
- Những sự việc xảy ra ngoài mong đợi.
Chúng ta sử dụng các ký pháp đồ hoạ để minh hoạ cho lịch biểu của dự án. Sử dụng biểu đồ giúp ta thấy rõ cách chia dự án thành nhiều nhiệm vụ. Các nhiệm vụ không nên quá nhỏ, chúng nên được thực hiện trong vòng một hoặc hai tuần.
Ví dụ
Giả sử có một loạt các hoạt động Ti, thời gian thực hiện từng hoạt động và sự phụ thuộc lẫn nhau giữa các hoạt động được liệt kê như bảng dưới đây. Hãy thực hiện các yêu cầu sau:
1. Xây dựng mạng các hoạt động
2. Xây dựng biểu đồ nhằm biểu diễn các hoạt động theo dòng thời gian
3. Biểu đồ phân công công việc
Quản lý rủi ro
Mục tiêu
- Phải hiểu được rủi ro luôn luôn có thể xảy ra trong dự án và không thể lường trước được
- Nắm được một số loại rủi ro thường gặp
- Biết được các hoạt động cần thực hiện trong quản lý rủi ro.
Quản lý rủi ro liên quan tới việc xác định rủi ro và lập ra các kế hoạch để tối thiểu hoá ảnh hưởng của chúng tới dự án.
Sau đây là một số loại rủi ro thường gặp trong quá trình phát triển hệ thống phần mềm:
- Rủi ro của dự án có ảnh hưởng tới lịch biểu và tài nguyên của dự án
- Rủi ro của sản phẩm ảnh hưởng tới chất lượng hoặc hiệu năng của phần mềm sẽ được xây dựng.
- Rủi ro thương mại sẽ ảnh hưởng tới tổ chức xây dựng phần mềm.
Để quản lý rủi ro, chúng ta cần phải thực hiện các hoạt động sau:
- Phát hiện rủi ro: Phát hiện các loại rủi ro có liên quan đến: công nghệ, con người, tổ chức, các yêu cầu, ước lượng.
- Phân tích rủi ro: Đánh giá các khả năng xảy ra rủi ro và tính nghiêm trọng của nó nếu nó xảy ra.
- Lập kế hoạch rủi ro: Xem xét từng rủi ro và phát triển chiến lược để quản lý nó. Bao gồm các chiến lược như: phòng tránh - giảm khả năng xảy ra rủi ro, tối thiểu hoá - giảm ảnh hưởng của rủi ro, kế hoạch bất ngờ - kế hoạch này để dành cho khi rủi ro xảy ra.
- Kiểm soát rủi ro: Đánh giá từng rủi ro đã được xác định một cách thường xuyên để xác định khả năng nó có thể xảy ra hay không và cũng đồng thời đánh giá mức độ ảnh hưởng của nó. Những rủi ro chính nên được thảo luận tại các cuộc họp quản lý tiến trình.