Rủi ro trong các dự án phần mềm
Thông thường, “rủi ro” dùng để chỉ một hay nhiều sự việc chưa nhưng có khả năng xảy ra trong tương lai có tác động đến dự án, và khi sự việc đó xảy ra thường sẽ gây ảnh hưởng xấu, thậm chí là “tai nạn” cho dự án, cản trở dự án đạt được mục tiêu của mình. Rủi ro thường được nhận biết dựa vào một số dấu hiệu báo trước, đôi khi dựa vào kinh nghiệm của các dự án tương tự trước đây.
Quản lý rủi ro có vai trò khá quan trọng trong toàn bộ tiến trình quản lý dự án. Trong cả 2 bộ mô hình và tiêu chuẩn nổi tiếng được ứng dụng nhiều trong dự án phần mềm là CMMi (Capability Maturity Model Integration) của viện Công nghệ Phần mềm Hoa Kỳ (SEI) và PMP (Project Management Professional) của viện Quản trị Dự án PMI (Project Management Institude) đều xem quản lý rủi ro là một trong những hoạt động cơ bản nhất của quá trình quản trị dự án.
Mặc dù nhận diện và kiểm soát tốt rủi ro có khả năng ảnh hưởng đến dự án đòi hỏi sự tham gia của nhiều người, tuy nhiên người có vai trò trực tiếp và quan trọng nhất là trưởng dự án. Do đó, một tiêu chí bắt buộc của một trưởng dự án giỏi là khả năng kiểm soát tốt rủi ro.
Quy trình quản lý rủi ro
Nhận diện và kiểm soát tốt rủi ro chỉ bằng kỹ năng và kinh nghiệm cá nhân không chưa đủ, việc kiểm soát rủi ro phải được thực hiện theo một quy trình chặt chẽ và phù hợp với đặc thù, mục tiêu và ngân sách của dự án.
Tổng quát, quy trình cơ quản lý rủi ro bao gồm các bước chính được trình bày ở Hình 1.
Ở mức chi tiết hơn, quy trình quản lý rủi ro bao gồm các bước cùng với trình tự xử lý và mối quan hệ giữa chúng như trình bày ở Hình 2.
Nhận diện rủi ro
Xác định được chính xác các nguồn có khả năng phát sinh rủi ro là điều không dễ dàng. Thông thường rủi ro xuất hiện từ các nguồn sau:
- Ngân sách/nguồn tài trợ cho dự án
- Thời gian thực hiện dự án
- Thay đổi về phạm vi và yêu cầu dự án
- Khó khăn về kỹ thuật
- Vấn đề liên quan đến nhân lực
- Hợp đồng giữa 2 (hoặc nhiều) bên
- Trong kinh doanh
- Môi trường, luật pháp, chính trị, văn hóa...
Để nhận diện được rủi ro, có nhiều kỹ thuật được áp dụng. Các kỹ thuật này giúp cho dự án “khoanh vùng” và xác định dấu hiệu xuất hiện rủi ro, vừa giúp tránh bỏ sót các dấu hiệu, vừa làm tăng kết quả và độ tin cậy của việc nhận diện các rủi ro. Từng kỹ thuật đều có những hạn chế riêng, do đó việc kết hợp các kỹ thuật để có kết quả tốt nhất là cần thiết. Các kỹ thuật được sử dụng rộng rãi bao gồm:
1. Xem xét tài liệu
Là cách thức xác định rủi ro cơ bản, đơn giản và thông dụng. Phương thức này thường bao gồm việc xem xét các tài liệu của dự án như các kế hoạch, giả định, cam kết với khách hàng, cơ chế thông tin giữa 2 bên, môi trường dự án, thông tin của các dự án khác trong quá khứ..., từ đó nhận diện các yếu tố có khả năng gây ra rủi ro cho dự án.
Hình 2: Mối quan hệ và trình tự các bước trong quy trình kiểm soát rủi ro
|
|
2. Động não
Đây là kỹ thuật được sử dụng rộng rãi nhất để nhận diện rủi ro và hầu như bất cứ ai trong đời cũng đã từng sử dụng kỹ thuật này cho nhiều vấn đề khác nhau trong cuộc sống. Đó là sự đóng góp ý kiến từ nhiều người khác nhau, từ các chuyên gia đến các thành viên của dự án, hoặc bất cứ ai có liên quan hoặc có kinh nghiệm về các vấn đề xảy ra trong dự án. Từ những ý kiến này (có thể nhiều ý trùng nhau), các rủi ro sẽ được định vị nhanh chóng.
3. Kỹ thuật Delphi
Tương tự kỹ thuật "Động não", khác biệt chỉ là các thành viên tham gia không biết nhau, do đó kỹ thuật này thích hợp nếu các thành viên ở xa nhau. Ngày nay kỹ thuật Delphi thực hiện dễ hơn trước đây do sự trợ giúp của email và hệ thống hỗ trợ làm việc từ xa. Do thành viên là “vô danh” nên kỹ thuật này hạn chế nhược điểm của kỹ thuật "Động não" là một vài cá nhân (chẳng hạn sếp) sẽ có ảnh hưởng đến suy nghĩ của các thành viên khác.
4. Nhóm danh nghĩa
Nhóm làm việc từ 7-10 người, mỗi thành viên sẽ ghi ý kiến riêng của mình (thường là 1 rủi ro quan trọng nhất) trên 1 mẫu giấy. Các ý kiến sau đó được tập hợp và nhóm sẽ phân tích và đánh giá trên từng ý kiến. Kết quả là rủi ro quan trọng nhất được sắp xếp trên cùng. Kỹ thuật này không chỉ dùng để nhận biết mà còn để đánh giá rủi ro; không loại bỏ hoàn toàn những người có ảnh hưởng; được thực hiện nhanh và ít tốn kém hơn kỹ thuật Delphi
5. Hỏi ý kiến chuyên gia
Thường được dùng để hỏi ý kiến cá nhân của những người có nhiều kinh nghiệm từ các dự án tương tự hoặc các dự án đã hoàn thành trong quá khứ. Công cụ sử dụng thường là bảng câu hỏi có trả lời sẵn để chọn lựa, hoặc để trống cho người được hỏi tự ghi ý kiến hoặc trả lời.
6. Sử dụng phiếu kiểm tra hoặc bảng câu hỏi
Phiếu kiểm tra hoặc bảng câu hỏi thường đúc kết kinh nghiệm từ các dự án quá khứ đặc biệt và các dự án tương tự, trong đó liệt kê những rủi ro thường hay gặp nhất. Phiếu này giúp cho dự án nhanh chóng xác định rủi ro có thể xảy đến cho dự án.
Kỹ thuật này có thể tham khảo các kinh nghiệm từ bên ngoài, một trong những tham khảo tốt theo cách này là sử dụng bảng phân loại và liệt kê các rủi ro thường gặp của viện Kỹ thuật Phần mềm Hoa Kỳ (SEI Taxonomy-Based Risk Identification) có thể tải về miễn phí tại đây
7. Sử dụng biểu đồ
Sử dụng nhiều dạng biểu đồ khác nhau để phân tích và xác định rủi ro, chẳng hạn biểu đồ xương cá (còn gọi là biểu đồ nhân quả) được sử dụng để chỉ sự liên quan và ảnh hưởng của các yếu tố rủi ro khác nhau, từ đó xác định rủi ro có thể ảnh hưởng đến dự án. Biểu đồ quy trình cho thấy sự nối tiếp trong chuỗi các sự kiện, từ đó xác định các yếu tố có thể gây rủi ro cho dự án. Hình 3 là một ví dụ về việc sử dụng biểu đồ xương cá để định vị các rủi ro.
Phân tích và phân loại rủi ro
Trong thực tế, những rủi ro có thể xảy ra trong một dự án là khá nhiều, và việc giải quyết hết tất cả các rủi ro là không cần thiết, cũng như sẽ làm phá sản ngân sách của dự án.
Thông thường người ta áp dụng nguyên tắc 20/80 để xác định và giải quyết những rủi ro quan trọng, những nguyên nhân gốc có ảnh hưởng lớn nhất đến sự thành công của dự án, trong chừng mực cân nhắc cẩn thận ngân sách dự án cũng như một số yếu tố đặc biệt khác. Điều này dẫn đến việc dự án phải phân tích để chọn ra những rủi ro cần giải quyết đó. Có nhiều kỹ thuật phân tích rủi ro được sử dụng, kỹ thuật thường được sử dụng bao gồm các phân tích chính sau:
1. Phân tích khả năng xuất hiện của rủi ro
Có 4 mức để đo lường khả năng xuất hiện của rủi ro, mỗi mức độ được gán với một giá trị số (tùy dự án) để có thể ước lượng sự quan trọng của nó.
- 6 - Thường xuyên: Khả năng xuất hiện rủi ro rất cao, xuất hiện trong hầu hết dự án
- 4 - Hay xảy ra: Khả năng xuất hiện rủi ro cao, xuất hiện trong nhiều dự án
- 2 - Đôi khi: Khả năng xuất hiện rủi ro trung bình, chỉ xuất hiện ở một số ít dự án
- 1 - Hiếm khi: Khả năng xuất hiện thấp, chỉ xuất hiện trong những điều kiện nhất định.
Hình 3: Ví dụ đơn giản dùng sơ đồ xương cá định vị rủi ro
|
|
2. Phân tích mức tác động của rủi ro
Có 4 mức để đo lường mức tác động của rủi ro, mỗi mức độ được gán với một giá trị số (tùy dự án) để có thể ước lượng sự tác động của nó.
- 8 - Trầm trọng: Có khả năng rất cao làm dự án thất bại
- 6 - Quan trọng: Gây khó khăn lớn và làm dự án không đạt được các mục tiêu
- 2 - Vừa phải: Gây khó khăn cho dự án, ảnh hưởng việc đạt các mục tiêu của dự án
- 1 - Không đáng kể: Gây khó khăn không đáng kể.
3. Phân tích thời điểm xuất hiện rủi ro
Có 4 mức để ước lượng thời điểm rủi ro xuất hiện, mỗi mức được gán với một giá trị số (tùy dự án) để có thể ước lượng sự tác động của nó.
- 6 - Ngay lập tức: Rủi ro xuất hiện gần như tức khắc
- 4 - Rất gần: Rủi ro sẽ xuất hiện trong thời điểm rất gần thời điểm phân tích
- 2 - Sắp xảy ra: Rủi ro sẽ xuất hiện trong tương lai gần
- 1 - Rất lâu: Rủi ro sẽ xuất hiện trong tương lai xa hoặc chưa định được.
Ghi chú: Các giá trị số cho trên chỉ mang tính tham khảo và minh họa, giá trị của chúng được định tùy tổ chức, tùy dự án.
4. Ước lượng và phân hạng các rủi ro
Rủi ro sau đó được tính giá trị để ước lượng bằng công thức:
Risk Exposure = Risk Impact * Risk Probability * Time Frame
Tiếp theo rủi ro được phân hạng từ cao đến thấp dựa theo các giá trị Risk Exposure tính toán được. Tùy theo tổ chức và đặc thù từng dự án, trưởng dự án (hoặc người được phân công) sẽ xác định những rủi ro nào cần đưa vào kiểm soát, với các mức ưu tiên khác nhau.
Hình 4: Một số chiến lược và minh họa các phương pháp đối phó rủi ro thường gặp
|
|
Kiểm soát rủi ro
Kiểm soát rủi ro bắt đầu với việc chọn lựa chiến lược và phương pháp đối phó rủi ro. Có nhiều chiến lược và phương pháp đối phó khác nhau, tùy theo tình huống dự án, môi trường và đặc thù của từng rủi ro. Trong thực tế, các chiến lược phổ biến nhất bao gồm (Hình 4):
1. Tránh né
Dùng “đường đi khác” để né tránh rủi ro, đường đi mới có thể không có rủi ro, có rủi ro nhẹ hơn, hoặc chi phí đối phó rủi ro thấp hơn. Chẳng hạn:
- Thay đổi phương pháp, công cụ thực hiện, thay đổi con người
- Thương lượng với khách hàng (hoặc nội bộ) để thay đổi mục tiêu.
2. Chuyển giao
Giảm thiểu rủi ro bằng cách chia sẻ tác hại khi chúng xảy ra. Chẳng hạn:
- Đề nghị với khách hàng chấp nhận và chia sẻ rủi ro (tăng thời gian, chi phí...)
- Báo cáo ban lãnh đạo để chấp nhận tác động và chi phí đối phó rủi ro
- Mua bảo hiểm để chia sẻ chi phí khi rủi ro xảy ra.
3. Giảm nhẹ
Thực thi các biện pháp để giảm thiểu khả năng xảy ra rủi ro hoặc giảm thiểu tác động và chi phí khắc phục rủi ro nếu nó xảy ra. Chẳng hạn:
- Cảnh báo và triệt tiêu các yếu tố làm cho rủi ro xuất hiện
- Điều chỉnh các yếu tố có liên quan theo dây chuyền để rủi ro xảy ra sẽ ít có tác động
4. Chấp nhận
Đành chấp nhận “sống chung” với rủi ro trong trường hợp chi phí loại bỏ, phòng tránh, làm nhẹ rủi ro quá lớn (lớn hơn chi phí khắc phục tác hại), hoặc tác hại của rủi ro nếu xảy ra là nhỏ hay cực kỳ thấp. Kế hoạch đối phó có thể là:
- Thu thập hoặc mua thông tin để có kế hoạch kiểm soát tốt hơn
- Lập kế hoạch khắc phục tác hại khi rủi ro xảy ra.
Hình 5: Minh họa Cây quyết định cho trường hợp đơn giản
|
|
Sử dụng Cây quyết định
Trong một số trường hợp phức tạp, thường rất khó xác định rủi ro nào nên đặt ưu tiên cao để kiểm soát, hoặc nên chọn chiến lược kiểm soát nào phù hợp nhất nên người ta thường sử dụng kỹ thuật hỗ trợ ra quyết định thông dụng trong quản lý là Cây quyết định để tính toán giá trị đạt được hoặc thiệt hại xảy ra khi thực hiện một hành động nào đó.
Cây quyết định là một biểu đồ dạng cây có nhiều nút, mỗi nút có nhiều nhánh rẽ, mỗi nhánh sẽ trả lời câu hỏi “làm” hay “không làm”, hoặc là một khả năng để một tình huống xuất hiện với một xác suất nào đó. Các giá trị cuối cùng của các nhánh sẽ giúp xác định xem nên chọn phương án nào cho giá trị tốt nhất. Hình 5 là một Cây quyết định đơn giản để tính toán giá trị đạt được theo các phương án khác nhau, giúp chọn lựa phương án tốt nhất, theo đó phương án Y cuối cùng đã được chọn do giá trị trả về là lớn nhất.
Giám sát và điều chỉnh
Bao gồm hoạt động giám sát để bảo đảm các chiến lược đối phó rủi ro được lên kế hoạch và thực thi chặt chẽ. Việc giám sát cũng nhằm mục đích điều chỉnh các chiến lược hoặc kế hoạch đối phó nếu chúng tỏ ra không hiệu quả, không khả thi, ngốn quá nhiều ngân sách, hoặc để đáp ứng với rủi ro mới xuất hiện, hoặc sự biến tướng của rủi ro đã được nhận diện trước đó.
Kết quả giám sát có thể được báo cáo định kỳ đến tất cả những người có liên quan, đến quản lý cấp cao, hoặc đến khách hàng nếu cần thiết.
Trong thực tế, do các yếu tố liên quan đến dự án thay đổi liên tục, chu trình quản lý rủi ro không đi theo đường thẳng mà được lặp lại và điều chỉnh liên tục giữa các chặng. Các rủi ro liên tục được điều chỉnh hoặc nhận diện mới, do đó các chiến lược và kế hoạch đối phó cũng luôn được thay đổi để bảo đảm chúng khả thi và có hiệu quả.
Kết luận
Rủi ro là một yếu tố tồn tại trong mọi dự án phần mềm. Một người quản trị dự án giỏi phải là người không ngạc nhiên và có khả năng xử lý bất kỳ sự kiện nào xảy ra có thể gây bất lợi cho dự án, điều đó đồng nghĩa với việc các rủi ro ảnh hưởng đến dự án phải được “thấy trước”, cùng với các kế hoạch để giảm thiểu khả năng xuất hiện cũng như tác hại khi chúng xuất hiện. Quy trình kiểm soát chặt chẽ, kinh nghiệm chuyên gia kết hợp với kỹ thuật nhận diện và kiểm soát rủi ro là những yếu tố quan trọng nhất để kiểm soát tốt rủi ro xảy ra trong dự án.
(Ngô Văn Toàn - TGVT)
Tài liệu tham khảo:
- Practical Guide to Software Quality Management, Second Edition, by John W. Horch, Artech House © 2003
- CMMISM for Systems Engineering and Software Engineering (CMMI-SE/SW, V1.1)
- Managing Information Technology Projects: Applying Project Management Strategies to Software, Hardware, and Integration Initiatives by James Taylor AMACOM © 2004