Software Engineering Principles and Practices / Software Project Management

Risk Management

In Software Engineering, Risk Management is the process of identifying, addressing, and eliminating software risks before they become threats to the project's success. As the saying goes, "If you don't actively attack the risks, the risks will actively attack you."


A Risk is a potential problem—it might happen, and it might not. If it has already happened, it’s not a risk; it’s an Issue.

🔄 The Risk Management Process

The industry standard follows a four-step iterative cycle:

  1. Risk Identification: Brainstorming what could go wrong. We look at:

    • Project Risks: Budget, schedule, personnel.

    • Technical Risks: Complexity, interface issues, hardware constraints.

    • Business Risks: The market changes, or the client goes bankrupt.

  2. Risk Analysis: Determining the Probability (how likely is it?) and the Impact (how bad will it be?).

  3. Risk Planning: Deciding what to do about the high-priority risks.

  4. Risk Monitoring: Constantly checking to see if the risks are becoming more or less likely as the project progresses.


📉 Risk Assessment: The Matrix

To prioritize risks, we use a Risk Matrix. This helps managers focus on the "Critical" risks rather than wasting time on minor annoyances.

$$Risk\,Exposure = Probability \times Impact$$

Impact \ Probability

Low

Medium

High

Catastrophic

Moderate Risk

High Risk

Critical Risk

Marginal

Low Risk

Moderate Risk

High Risk

Negligible

Low Risk

Low Risk

Moderate Risk


🛠️ Risk Mitigation, Monitoring, and Management (RMMM)

Once a risk is identified, we apply one of these four strategies:

  • Avoidance: Change the plan to eliminate the risk entirely (e.g., "This feature is too risky, let's remove it").

  • Transference: Move the risk to someone else (e.g., "Let's use a 3rd party service for payments so they handle the security risk").

  • Mitigation: Take action now to reduce the impact later (e.g., "Hire a backup developer in case the lead leaves").

  • Acceptance: Decide that the risk is small enough that we will just handle it if it happens.


📊 Common Software Risks

Risk Category

Examples

Staff Turnover

Experienced staff leave the project mid-way.

Management Change

New bosses change the project goals.

Requirements Change

The client changes their mind about how a feature works.

Technology Change

The database we chose becomes obsolete or unsupported.

Underestimation

The project takes twice as long as we thought.


💡 The Top 10 Risks (Boehm’s List)

Barry Boehm, a pioneer in software engineering, identified the top risks that kill projects. Topping the list are:

  1. Personnel shortfalls (Not enough talented people).

  2. Unrealistic schedules/budgets.

  3. Developing the wrong functions (Building something the user doesn't want).

  4. Gold Plating (Adding unnecessary "fancy" features that cause bugs).