Rủi ro thường gặp trong Dự án phần mềm

  • Posted by: Admin
  • Category: Kiến thức

Dự án được thực thi trong môi trường thực với nhiều biến động, do đó rủi ro là điều không thể tránh khỏi. Nói cách khác, không có dự án nào không có rủi ro. Rủi ro nếu không được nhận diện và kiểm soát tốt có khả năng làm dự án hoàn toàn thất bại, hoặc chí ít cũng làm phát sinh nhiều vấn đề khó khăn, làm hao tổn nhân lực và thời gian, bào mòn lòng tin của khách hàng, giảm lợi nhuận. Do đó, việc nhận diện và kiểm soát tốt rủi ro luôn là một trong những công việc quan trọng bậc nhất trong việc quản trị dự án. Một trong những ví dụ khá nổi tiếng về việc kiểm soát rủi ro kém, sinh ra các rắc rối lớn vàcuối cùng làm dự án thất bại là trường hợp dự án đình đám Virtual Case File của FBI (Mỹ). Dự án khởi động từ năm 2000 với mục tiêu hiện đại hóa cơ sở hạ tầng CNTT già nua của FBI, đã thất bại thảm hại, gây tai tiếng lớn cho FBI và bị loại bỏ vào tháng 1-2005 sau khi tiêu tốn ít nhất 100 triệu USD ngân sách. Có rất nhiều rủi ro trong dựán đã không được kiểm soát tốt, hai trong số các rủi ro hàng đầu là: ban lãnh đạo FBI và phạm vi hệ thống đã thay đổi quá nhiều, đặc biệt trước và sau sự cố tấn công khủng bố ngày 11-9-2001.

 

Trong thực tế, khả năng xuất hiện cũng như tác hại của các rủi ro ở những dự án khác nhau là hoàn toàn khác nhau. Có những rủi ro xuất hiện trong rất nhiều dự án, nhưng tác hại gây ra lại không lớn, hoặc chỉ lớn trong vài dự án. Ngược lại, một số rủi ro chỉ xảy ra trong những điều kiện hoặc dự án nhất định, nhưng tác hại do chúng gây ra là rất lớn, hoặc tác hại có thể dự đoán và ngăn ngừa được. Có những rủi ro có thể tránh được nếu ta phát hiện sớm, có những rủi ro buộc phải chấp nhận và phải có hành động đối phó hoặc khắc phục.

Các rủi ro rất đa dạng và chúng xuất phát từ nhiều nguồn khác nhau, từ bên ngoài lẫn từ nội  bộ dự án hoặc tổ chức. Theo phân tích của Viện công nghệ phần mềm Mỹ SEI, thông thường các rủi ro xuất phát hoặc phân loại từ ba nhóm sau.
 

1. Nhóm các mi ràng buc và cam kết (Program Constraints)

The profound power of constraints and how to work with them | by Kanika  Tibrewala | Prototypr

Bao gồm các rủi ro liên quan đến các mối ràng buộc bên trong lẫn bên ngoài. Rủi ro xảy ra khi các mối ràng buộc này được giả định sẽ xảy ra (hoặc được thực hiện) nhưng đã không xảy ra,hoặc ngược lại được giả định sẽ không xảy ra nhưng trên thực tế đã xảy ra. Thông thường, các mối ràng buộc bên ngoài có thể liên quan đến việc khách hàng không thực hiện các điều cam kết, yêu cầu thay đổi quá nhiều, chậm phản hồi…. Trong khi đó, các mối ràng buộc bên trong có thể liên quan đến nguồn lực yếu kém, việc thay đổi nhân lực giữa dự án, sự hỗ trợ lẫn nhau kém…

Các rủi ro thường xoay quanh các vấn đề sau: Về nguồn lực, các mối ràng buộc bên ngoài tác động đến thời gian, nhân lực, ngân sách hoặc phương tiện tài trợ cho dự án. Về hợp đồng, các điều khoản ràng buộc đã cam kết trong hợp đồng giữa hai bên, thời hạn thực hiện dự án, các yêu cầu nghiệm thu, các yêu cầu về phạm vi dự án và các thay đổi. Về đối tác, bao gồm điều cam kết và ràng buộc khác đối với khách hàng, thầu phụ, ban giám đốc.

Minh họa cho nhóm này, một số rủi ro thường gặp trong thực tế bao gồm:

Thi gian thc hin d án quá gt:   Thời hạn thực hiện và bàn giao sản phẩm quá ngắn, xuất hiện ngay từ đầu dự án, hoặc có khả năng xuất hiện cao trong lúc thực thi. Các rủi ro này liên quan đến các điều cam kết cấp cao, hoặc do quá thiếu dữ liệu để ước lượng, hoặc do dự án sử dụng công nghệ mới, độ phức tạp cao do đó rủi ro hầu như được “nhìn thấy” trước.

Thiếu thi gian cho kiđnh: Kiểm định (testing) là một khâu khá quan trọng và chiếm nhiều thời gian, đặc biệt ở các giai đoạn cuối. Tuy nhiên, trong nhiều dự án, thời lượng và nhân lực dành cho các tác vụ này lại khá hạn chế. Các yếu tố dẫn đến rủi ro này thường liên quan đến tính chất đặc thù của dự án như khả năng sinh lỗi cao, hoặc do dự án có yêu cầu thay đổi quá nhiều.
 

2. Nhóm về k thut phát trin phn mềm ( Product Engineering)

Bao gồm các rủi ro liên quan đến kỹ thuật phát triển phần mềm. Các rủi ro có thể liên quan đến các chặng hay nhóm tác vụ liên quan đến kỹ thuật của dự án như công nghệ mới, yêu cầu không rõ ràng, thiết kế không tuân thủ các tiêu chuẩn, quy trình của khách hàng khó hiểu, phức tạp, hệ thống cũ thiếu tài liệu, thiếu công cụ kiểm định theo chuẩn mực…

Các rủi ro thường xoay quanh các vấn đề liên quan đến yêu cầu của dự án: thường gây ra sự hiểu lầm giữa hai bên, hoặc có sự cách biệt lớn so với những ước lượng từ ban đầu. Kế đến là thiết kế. Điều này xảy ra khi thiết kế không phản ánh đúng yêu cầu của phần mềm, hoặc phần mềm vẫn chạy nhưng kém hiệu quả, không phản ánh đúng các mối ràng buộc khi sử dụng phần mềm. Rủi ro liên quan đến kỹ thuật cũng phát sinh khi việc phát triển dự án không phản ánh đúng các thiết kế, và chương trình chứa đựng nhiều lỗi nội tại ở mức đơn vị. Ở khâu tích hợp và kiểm định, sản phẩm chứa đựng nhiều sai sót khi tích hợp, hoặc chứa đựng lỗi tiềm ẩn do kiểm định chưa hết cũng dẫn đến những rủi ro về kỹ thuật. Cuối cùng là các yêu cầu đặc biệt khác, thường là về tính an toàn của phần mềm, tính ổn định trong môi trường vận hành thực, bảo mật dữ liệu.

4 reasons why 2018 is the year millennials create a flashpoint for the  agile revolution - Charlotte Business Journal

Minh họa cho nhóm này, một số rủi ro thường gặp trong thực tế bao gồm:

Yêu cu khó hiu, nhiu thay đi: Rủi ro này bắt gặp trong rất nhiều dự án, và là một trong những nguyên nhân phổ biến nhất làm cho dự án kéo dài và thậm chí thất bại. Rủi ro liên quan đến nhiều trạng thái dẫn đến việc hiểu sai, bỏ sót hoặc bị quá tải các yêu cầu và thay đổi của dự án, thông thường bao gồm các yêu cầu:
- Không đủ, không rõ ràng, văn phong trừu tượng, thiếu dữ liệu.
- Mâu thuẫn nhau, thiếu chặt chẽ hoặc quá sơ sài.
- Thay đổi quá nhiều và thường xuyên (hằng ngày, hằng tuần).
- Thay đổi sát lúc hoàn thành dự án.
- Tài liệu yêu cầu quá đồ sộ, do nhiều người tham gia.

Kiểm định mức đơn vị (unit test) nghèo nàn:

Rủi ro này khá phổ biến trong nhiều dự án. Kiểm định mức đơn vị phải do lập trình viên (developer) thực hiện trước khi bàn giao sản phẩm để tích hợp và kiểm định mức hệ thống (system test ). Công việc này đòi hỏi thời gian, do đó nếu không giám sát chặt chẽ, nó thường bị bỏ qua hoặc làm chiếu lệ. Rủi ro này sẽ dẫn đến những lỗi phần mềm tiềm ẩn rất khó phát hiện và chỉnh sửa khi phần mềm đi vào hoạt động, hoặc nếu chỉnh sửa sẽ tốn rất nhiều công sức
 

3. Nhóm về môi trường phát triển dự án ( Development Environment)

Bao gồm các rủi ro liên quan đến các điều kiện hỗ trợ và bảo đảm dự án được thực thi tốt. Chẳng hạn các rủi ro liên quan đến bất đồng ngôn ngữ, môi trường phát triển với kỹ thuật quá mới, phong cách quản lý không phù hợp, môi trường và công cụ truyền thông kém, thiếu phần mềm do bị ràng buộc về vấn đề bản quyền, môi trường làm việc chật chội, nóng bức, thiếu hệ thống backup dữ liệu và nguồn điện dự phòng…

10 Step Process for Effective Business Problem Solving

Các rủi ro thường liên quan đến bốn vấn đề sau:

Thứ nhất là quy trình, bao gồm kế hoạch phát triển dự án, tài liệu, sự ràng buộc tuân thủ quy trình, truyền thông giữa các nhóm, phương pháp phát triển dự án, khả năng của trưởng dự án, sự giám sát của cấp trên hoặc của khách hàng.

Thứ hai là kỹ thuật, dùng để phát triển dự án, ngôn ngữ, phần mềm có bản quyền, các bộ giả lập, biên dịch, hệ thống máy tính…; công nghệ mới.

Thứ ba là môi trường làm việc như văn hóa, thói quen, thái độ, tinh thần làm việc, sự hợp tác với nhau của nhân viên. Rủi ro về môi trường, luật pháp, sự ổn định về chính trị.

Và thứ tư là nhân lực như trình độ, kỹ năng và kinh nghiệm của nguồn lực; bất đồng ngôn ngữ; các xung đột.

Minh họa cho nhóm này, một số rủi ro thường gặp trong thực tế bao gồm:

Nhân viên thiếu kiến thức và kinh nghiệm: Rủi ro này liên quan đến vấn đề trình độ, kiến thức và kinh nghiệm của nhân viên dự án yếu kém (nhất là nhân viên mới), không đáp ứng được yêu cầu khắt khe của dự án, đặc biệt là các dự án sử dụng công nghệ và kỹ thuật mới, độ phức tạp cao, dự án được phát triển dựa trên hệ thống đã có sẵn, đòi hỏi nhân viên phải am hiểu.

Rào cản ngôn ngữ: Rủi ro về rào cản ngôn ngữ mang tính tự nhiên và xảy ra trong hầu hết các dự án làm cho đối tác nước ngoài. Trong thực tế, rủi ro về tiếng Anh là phổ biến nhưng các dự án có thể khắc phục được do hầu hết kỹ sư đều có thể làm việc với tài liệu tiếng Anh, một số khó khăn lớn nhất thường chỉ liên quan đến giao tiếp trực tiếp. Ngược lại, rủi ro về tiếng Nhật và Pháp được lưu ý đặc biệt vì mức độ nghiêm trọng của chúng. Hầu hết kỹ sư không thể hiểu và làm việc trực tiếp với tiếng Nhật và Pháp, đều phải qua trung gian là các kỹ sư cầu nối( Bridge Engineer). Chính từ việc thông qua trung gian này xuất hiện khá nhiều rủi ro như truyền thông chậm chạp, hiểu sai vấn đề…Rủi ro là điều không thể tránh khỏi trong các dự án phần mềm, nếu không nhận dạng và kiểm soát tốt, các rủi ro tất yếu sẽ dẫn đến các khó khăn thật sự cho dự án, làm cho dự án thất bại.

Ngô Văn Toàn
 

Nếu thấy kiến thức này bổ ích và ứng dụng tốt, bạn hãy like và chia sẻ bài viết này nhé.

Các bài viết liên quan bạn có thể quan tâm:

Số 229 Tây Sơn, Đống Đa, Hà Nội

Chat hỗ trợ
Chat ngay