Quản lý rủi ro trong phát triển phần mềm và dự án kĩ thuật phần mềm

1. Quản lý rủi ro trong phát triển phần mềm?

  • Phát triển phần mềm là hoạt động sử dụng nhiều tiến bộ công nghệ và đòi hỏi kiến thức cao. Do những yếu tố này hoặc một số yếu tố khác mà mọi dự án phát triển phần mềm đều chứa yếu tố không chắc chắn. Điều này được gọi là rủi ro dự án.
  • Thành công của một dự án phát triển phần mềm phụ thuộc khá nhiều vào mức độ rủi ro tương ứng với từng hoạt động của dự án. Là một người quản lý dự án, nó không đủ để chỉ nhận thức được các rủi ro. Để đạt được kết quả thành công, project leader phải xác định, đánh giá, ưu tiên và quản lý tất cả các rủi ro chính.
  • Mục tiêu của hầu hết các dự án phát triển phần mềm và công nghệ phần mềm là thường xuyên phân biệt thông qua các tính năng mới, hiệu quả hơn hoặc khai thác các tiến bộ trong công nghệ phần mềm. Bất kỳ nhà điều hành dự án phần mềm nào cũng sẽ đồng ý rằng việc theo đuổi các cơ hội như vậy không thể tiến lên mà không gặp rủi ro.
  • Bởi vì rủi ro là rất thực tế và khá phổ biến đối với tất cả các dự án phần mềm, nó rất cần thiết rằng các bên liên quan phải nỗ lực để xác định, hiểu và giảm thiểu mọi rủi ro có thể đe dọa đến sự thành công của dự án. Đối với các dự án có hạn chế về thời gian và chi phí, kinh nghiệm của chúng ta cho thấy rõ nhất rằng các nỗ lực phát triển phần mềm thành công là những dự án trong đó giảm thiểu rủi ro là một hoạt động quản lý trung tâm.

2. Rủi ro trong công nghệ phần mềm

  • Rất đơn giản, rủi ro là một vấn đề tiềm năng. Nó là một hoạt động hoặc sự kiện có thể ảnh hưởng đến sự thành công của dự án phát triển phần mềm. Rủi ro là khả năng chịu tổn thất và tổng rủi ro đối với một dự án cụ thể sẽ chiếm cả xác suất và quy mô của tổn thất.
  • Đoán và xử lý khủng hoảng là không bao giờ có hiệu quả. Xác định và tổng hợp rủi ro là phương pháp dự đoán duy nhất để nắm bắt xác suất dự án phát triển phần mềm sẽ gặp phải các sự kiện ngoài ý muốn hoặc không thể chấp nhận được. Chúng bao gồm chấm dứt, không liên tục, trì hoãn kế hoạch, đánh giá thấp chi phí và vượt khỏi các nguồn lực của dự án.

3. Quản lý rủi ro trong kỹ thuật phần mềm là gì?

  • Quản lý rủi ro có nghĩa là ngăn chặn và giảm thiểu rủi ro. Đầu tiên, bạn phải xác định và lên kế hoạch. Sau đó, sẵn sàng hành động khi có rủi ro phát sinh, dựa trên kinh nghiệm và kiến thức của toàn đội để giảm thiểu tác động đến dự án.
  • Quản lý rủi ro bao gồm các nhiệm vụ sau:
    • Xác định rủi ro và tác nhân của chúng
    • Phân loại và ưu tiên rủi ro
    • Lập kế hoạch liên kết từng rủi ro với giảm thiểu
    • Giám sát các tác nhân rủi ro trong dự án
    • Thực hiện hành động giảm nhẹ nếu có rủi ro xảy ra
    • Truyền đạt trạng thái rủi ro trong suốt dự án

4. Xác định và phân loại rủi ro

  • Hầu hết các dự án kỹ thuật phần mềm vốn đã có rủi ro vì các vấn đề tiềm ẩn khác nhau có thể phát sinh. Kinh nghiệm từ các dự án kỹ thuật phần mềm khác có thể giúp các nhà quản lý phân loại rủi ro. Điều quan trọng ở đây không phải là sự tao nhã hay phạm vi phân loại, mà là xác định và mô tả chính xác tất cả các mối đe dọa thực sự đối với thành công của dự án. Một kế hoạch phân loại đơn giản nhưng hiệu quả là sắp xếp rủi ro theo các lĩnh vực tác động.
  • 5 loại rủi ro chính trong quản lý dự án phần mềm:
    • Công nghệ mới, chưa được chứng minh: Phần lớn các dự án phần mềm đòi hỏi phải sử dụng các công nghệ mới. Các công cụ, kỹ thuật, giao thức, tiêu chuẩn và hệ thống phát triển luôn thay đổi làm tăng khả năng rủi ro công nghệ sẽ xuất hiện trong hầu hết mọi nỗ lực kỹ thuật phần mềm đáng kể. Đào tạo và kiến thức có tầm quan trọng và việc sử dụng công nghệ mới không đúng cách thường dẫn đến thất bại của dự án.
    • Yêu cầu về người dùng và chức năng: Yêu cầu phần mềm nắm bắt mọi nhu cầu của người dùng đối với các tính năng, chức năng và chất lượng dịch vụ của hệ thống phần mềm. Các yêu cầu thường thay đổi với các hoạt động khám phá, tạo mẫu và tích hợp. Thay đổi trong các yêu cầu nguyên tố có thể sẽ lan truyền trong toàn bộ dự án và việc sửa đổi các yêu cầu của người dùng có thể không chuyển thành các yêu cầu chức năng. Những gián đoạn này thường dẫn đến một hoặc nhiều thất bại nghiêm trọng của một dự án phát triển phần mềm được lên kế hoạch kém.
    • Ứng dụng và kiến trúc hệ thống: Đi sai hướng với một nền tảng, thành phần hoặc kiến trúc có thể gây ra hậu quả tai hại. Cùng với các rủi ro về công nghệ, điềun quan trọng là nhóm bao gồm các chuyên gia hiểu về kiến trúc và có khả năng đưa ra các lựa chọn tốt.
    • Hiệu suất: Điều quan trọng là đảm bảo rằng bất kỳ kế hoạch quản lý rủi ro nào cũng bao gồm các kỳ vọng của người dùng và đối tác về hiệu suất. Phải xem xét các điểm chuẩn và kiểm tra ngưỡng trong toàn dự án để đảm bảo rằng các sản phẩm công việc đang đi đúng hướng.
    • Tổ chức: Các vấn đề tổ chức có thể có tác động bất lợi đến kết quả dự án. Quản lý dự án phải lập kế hoạch để thực hiện hiệu quả dự án và tìm sự cân bằng giữa nhu cầu của nhóm phát triển và kỳ vọng của khách hàng. Tất nhiên, việc bố trí nhân sự đầy đủ bao gồm lựa chọn các thành viên trong nhóm với các bộ kỹ năng phù hợp với dự án.
  • Kế hoạch quản lý rủi ro: Sau khi lập tất cả các danh mục rủi ro theo loại, người quản lý dự án phát triển phần mềm nên lập kế hoạch quản lý rủi ro. Là một phần của kế hoạch dự án lớn hơn, toàn diện, kế hoạch quản lý rủi ro vạch ra phản ứng sẽ được thực hiện cho mỗi rủi ro, nếu nó thành hiện thực.
  • Giám sát và giảm thiểu:
    • Để có hiệu quả, giám sát rủi ro phần mềm phải được tích hợp với hầu hết các hoạt động dự án. Về cơ bản điều này có nghĩa là kiểm tra thường xuyên trong các cuộc họp dự án và các sự kiện quan trọng.
    • Giám sát bao gồm:
      • Báo cáo trình trạng dự án và bao gồm các vấn đề quản lý rủi ro
      • Sửa đổi kế hoạch rủi ro theo bất kỳ thay đổi lớn trong lịch trình dự án
      • Xem xét và giảm thiểu rủi ro, loại bỏ những rủi ro có xác suất thấp nhất
      • Suy nghĩ về những rủi ro tiềm ẩn mới sau khi thay đổi lịch trình hoặc phạm vi dự án
      • Khi rủi ro xảy ra, phản ứng giảm thiểu tương ứng nên được lấy từ kế hoạch quản lý rủi ro
    • Các lựa chọn giảm thiểu bao gồm:
      • Chấp nhận: Xác nhận rằng một rủi ro đang ảnh hưởng đến dự án. Đưa ra quyết định rõ ràng để chấp nhận rủi ro mà không có bất kỳ thay đổi nào đối với dự án. Phê duyệt quản lý dự án là bắt buộc ở đây.
      • Ngăn ngừa/tránh: Điều chỉnh phạm vi dự án, tiến độ hoặc các ràng buộc để giảm thiểu ảnh hưởng của rủi ro.
      • Kiểm soát: Thực hiện hành động để giảm thiểu tác động hoặc giảm cường độ rủi ro.
      • Chuyển giao: Thực hiện một sự thay đổi tổ chức về trách nhiệm, trách nhiệm hoặc quyền hạn cho các bên liên quan khác sẽ chấp nhận rủi ro.
      • Tiếp tục theo dõi: Thường thích hợp cho các rủi ro tác động thấp, giám sát môi trường dự án để có khả năng tăng tác động của rủi ro.

Giao tiếp:
Trong suốt dự án, nó rất quan trọng để đảm bảo giao tiếp hiệu quả giữa tất cả các bên liên quan, nhà quản lý, nhà phát triển, đặc biệt là tiếp thị và đại diện khách hàng. Chia sẻ thông tin và nhận phản hồi về rủi ro sẽ tăng đáng kể khả năng thành công của dự án.

Kết luận

Quản lý rủi ro là một chuyên ngành sâu rộng và chúng tôi chỉ đưa ra một cái nhìn tổng quan ở đây. Chúng tôi để lại cho bạn một danh sách kiểm tra các thực tiễn tốt nhất để quản lý rủi ro đối với các dự án phát triển phần mềm và kỹ thuật phần mềm của bạn:

  • Luôn luôn nghĩ về quản lý rủi ro. Nếu không, nhóm dự án sẽ được điều khiển từ khủng hoảng này sang khủng hoảng khác.
  • Sử dụng danh sách kiểm tra và so sánh với các dự án tương tự trước đó.
  • Ưu tiên rủi ro, xếp hạng từng mức độ nghiêm trọng.
  • Phát triển danh sách rủi ro top 10 hoặc top 20 cho dự án của bạn. Giống như hầu hết các nhà quản lý dự án, bạn có thể có thể sử dụng lại danh sách này trong dự án tiếp theo!
  • Theo dõi mạnh mẽ các rủi ro đang nổi lên bằng cách gặp gỡ các bên liên quan chính, đặc biệt là với nhóm tiếp thị và khách hàng.
  • Như có thể, chia rủi ro lớn hơn thành rủi ro nhỏ hơn, dễ nhận biết và dễ quản lý.
  • Khuyến khích mạnh mẽ các bên liên quan suy nghĩ chủ động và truyền đạt về rủi ro trong toàn bộ dự án.

Bài viết được dịch từ nguồn:
https://www.castsoftware.com/research-labs/risk-management-in-software-development-and-software-engineering-projects