| name | risk-assessment |
| description | Identify, analyze, and prioritize project risks using qualitative and quantitative methods. Develop mitigation strategies to minimize impact and maximize project success probability. |
Risk Assessment
Overview
Risk assessment is a systematic process of identifying potential threats to project success and developing strategies to mitigate, avoid, or accept them.
When to Use
- Project initiation and planning phases
- Before major milestones or decisions
- When introducing new technologies
- Third-party dependencies or integration
- Organizational or resource changes
- Budget or timeline constraints
- Regulatory or compliance concerns
Instructions
1. Risk Identification Techniques
class RiskIdentification:
RISK_CATEGORIES = {
'Technical': [
'Technology maturity',
'Integration complexity',
'Performance requirements',
'Security vulnerabilities',
'Data integrity'
],
'Resource': [
'Team skill gaps',
'Staff availability',
'Budget constraints',
'Equipment/infrastructure',
'Vendor availability'
],
'Schedule': [
'Unrealistic deadlines',
'Dependency delays',
'Scope creep',
'Approval delays',
'Resource conflicts'
],
'External': [
'Regulatory changes',
'Market conditions',
'Vendor stability',
'Political/economic factors',
'Natural disasters'
],
'Organizational': [
'Stakeholder misalignment',
'Priority changes',
'Organizational restructuring',
'Politics/conflicts',
'Requirement changes'
]
}
@staticmethod
def brainstorm_risks(project_context):
"""
Facilitated brainstorming session to identify risks
"""
risks = []
for category, risk_types in RiskIdentification.RISK_CATEGORIES.items():
for risk_type in risk_types:
risks.append({
'category': category,
'description': risk_type,
'identified_by': [],
'probability': None,
'impact': None
})
return risks
@staticmethod
def analyze_assumptions_as_risks(assumptions):
"""
Convert project assumptions into potential risks
"""
assumption_risks = []
for assumption in assumptions:
assumption_risks.append({
'risk_type': 'Assumption Violation',
'description': f"Assumption '{assumption}' is invalid",
'trigger': f"Evidence that {assumption} is false",
'impact': 'High' if assumption.startswith('Critical') else 'Medium'
})
return assumption_risks
2. Risk Analysis Matrix
class RiskAnalysis {
constructor() {
this.riskMatrix = [];
this.priorityMap = [];
}
static PROBABILITY = {
1: { name: 'Very Low', percentage: 0.1, color: 'Green' },
2: { name: 'Low', percentage: 0.3, color: 'Green' },
3: { name: 'Medium', percentage: 0.5, color: 'Yellow' },
4: { name: 'High', percentage: 0.7, color: 'Orange' },
5: { name: 'Very High', percentage: 0.9, color: 'Red' }
};
static IMPACT = {
1: { name: 'Negligible', value: , : },
: { : , : , : },
: { : , : , : },
: { : , : , : },
: { : , : , : }
};
() {
probability = .[risk.];
impact = .[risk.];
riskScore = risk. * risk.;
riskExposure = probability. * impact.;
{
: risk.,
riskScore,
riskExposure,
: .(riskScore),
: .(riskScore),
: riskExposure > ? :
};
}
() {
(riskScore >= ) ;
(riskScore >= ) ;
(riskScore >= ) ;
(riskScore >= ) ;
;
}
() {
{
: riskScore,
: .(riskScore),
: riskScore >=
};
}
() {
matrix = {
: [],
: [],
: [],
: [],
: []
};
risks.( {
analysis = .(risk);
priority = analysis..();
(matrix[priority]) {
matrix[priority].({
...risk,
...analysis
});
}
});
matrix;
}
}
3. Risk Response Planning
Risk Response Strategies:
Risk 1: Integration Delay with Third-Party API
Probability: High (4/5)
Impact: Major (4/5)
Risk Score: 16 (Critical)
Response Strategy: MITIGATION
Actions:
- Engage vendor early in planning (Week 1)
- Develop fallback solution in parallel (Week 2-4)
- Allocate 20% more development time (buffer)
- Weekly sync with vendor team
- Performance testing starts Month 2
Owner:
4. Risk Monitoring & Control
class RiskMonitoring {
constructor() {
this.risks = [];
this.triggers = [];
this.escalations = [];
}
createRiskRegister(risks) {
return risks.map((risk, index) => ({
id: `RK-${String(index + 1).padStart(3, '0')}`,
description: risk.description,
category: risk.category,
probability: risk.probability,
impact: risk.impact,
riskScore: risk.probability * risk.impact,
responseStrategy: risk.strategy,
owner: risk.owner,
status: 'Active',
triggers: risk.triggers,
contingencyPlan: risk.contingency,
createdDate: new Date(),
lastReviewDate: new Date(),
:
}));
}
() {
{
: risk.,
: [
{
: ,
: ,
:
},
{
: ,
: ,
:
},
{
: ,
: ,
:
}
],
:
};
}
() {
statusReport = {
: (),
: {
: riskRegister.,
: riskRegister.( r. === ).,
: riskRegister.( r. === ).,
: riskRegister.( r. === ).
},
: riskRegister.( r. >= ),
: riskRegister.( r. >= && r. < ),
: riskRegister.( r. === )
};
statusReport;
}
}
Best Practices
✅ DO
- Identify risks early in project planning
- Involve diverse team members in risk identification
- Quantify risk impact when possible
- Prioritize based on risk score and exposure
- Develop specific mitigation plans
- Assign clear risk ownership
- Monitor triggers regularly
- Review and update risk register monthly
- Document lessons learned from realized risks
- Communicate risks transparently to stakeholders
❌ DON'T
- Wait until problems occur to identify risks
- Assume risks will not materialize
- Treat all risks as equal priority
- Plan mitigation without clear trigger conditions
- Ignore early warning signs
- Make risk management a one-time activity
- Skip contingency planning for critical risks
- Hide negative risks from stakeholders
- Eliminate all risk (impossible and uneconomical)
- Blame individuals for realized risks
Risk Management Tips
- Risk ownership motivates accountability
- Regular risk review prevents surprises
- Risk response should be cost-effective
- Some risk tolerance is healthy and necessary
- Documented risks are easier to manage