风险评估 概述 风险评估是一个系统化的过程,用于识别可能威胁项目成功的潜在风险,并制定减轻、避免或接受这些风险的策略。 何时使用
- 项目启动和规划阶段
- 在主要里程碑或决策之前
- 引入新技术时
- 第三方依赖或集成
- 组织或资源变化
- 预算或时间线限制
- 监管或合规问题
指令
- 风险识别技术 风险识别框架
class RiskIdentification: RISK_CATEGORIES = { ‘Technical’: [ ‘技术成熟度’, ‘集成复杂性’, ‘性能要求’, ‘安全漏洞’, ‘数据完整性’ ], ‘Resource’: [ ‘团队技能差距’, ‘员工可用性’, ‘预算限制’, ‘设备/基础设施’, ‘供应商可用性’ ], ‘Schedule’: [ ‘不切实际的截止日期’, ‘依赖延迟’, ‘范围蔓延’, ‘审批延迟’, ‘资源冲突’ ], ‘External’: [ ‘监管变化’, ‘市场条件’, ‘供应商稳定性’, ‘政治/经济因素’, ‘自然灾害’ ], ‘Organizational’: [ ‘利益相关者不一致’, ‘优先级变化’, ‘组织重组’, ‘政治/冲突’, ‘需求变化’ ] }
@staticmethod
def brainstorm_risks(project_context):
"""
引导式头脑风暴会议以识别风险
"""
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):
"""
将项目假设转化为潜在风险
"""
assumption_risks = []
for assumption in assumptions:
assumption_risks.append({
'risk_type': '假设违反',
'description': f"假设'{assumption}'无效",
'trigger': f"证据表明{assumption}是错误的",
'impact': 'High' if assumption.startswith('Critical') else 'Medium'
})
return assumption_risks
### 2. **风险分析矩阵**
```javascript
// 定性和定量风险分析
class RiskAnalysis {
constructor() {
this.riskMatrix = [];
this.priorityMap = [];
}
// 概率等级 1-5
static PROBABILITY = {
1: { name: '非常低', percentage: 0.1, color: 'Green' },
2: { name: '低', percentage: 0.3, color: 'Green' },
3: { name: '中等', percentage: 0.5, color: 'Yellow' },
4: { name: '高', percentage: 0.7, color: 'Orange' },
5: { name: '非常高', percentage: 0.9, color: 'Red' }
};
// 影响等级 1-5
static IMPACT = {
1: { name: '微不足道', value: 1, scope: '轻微不便' },
2: { name: '轻微', value: 10, scope: '一些延迟或成本' },
3: { name: '中等', value: 100, scope: '显著延迟或成本' },
4: { name: '重大', value: 1000, scope: '关键失败风险' },
5: { name: '灾难性', value: 10000, scope: '项目取消' }
};
analyzeRisk(risk) {
const probability = this.PROBABILITY[risk.probability];
const impact = this.IMPACT[risk.impact];
// 风险分数 = 概率 × 影响
const riskScore = risk.probability * risk.impact;
// 风险暴露 = 概率 × 财务影响
const riskExposure = probability.percentage * impact.value;
return {
riskId: risk.id,
riskScore,
riskExposure,
priority: this.calculatePriority(riskScore),
severity: this.calculateSeverity(riskScore),
mitigationUrgency: riskExposure > 100 ? 'Immediate' : 'Planned'
};
}
calculatePriority(riskScore) {
if (riskScore >= 16) return 'Critical';
if (riskScore >= 12) return 'High';
if (riskScore >= 6) return 'Medium';
if (riskScore >= 2) return 'Low';
return 'Very Low';
}
calculateSeverity(riskScore) {
return {
score: riskScore,
rating: this.calculatePriority(riskScore),
responseNeeded: riskScore >= 12
};
}
// 风险矩阵
createRiskMatrix(risks) {
const matrix = {
critical: [],
high: [],
medium: [],
low: [],
veryLow: []
};
risks.forEach(risk => {
const analysis = this.analyzeRisk(risk);
const priority = analysis.priority.toLowerCase();
if (matrix[priority]) {
matrix[priority].push({
...risk,
...analysis
});
}
});
return matrix;
}
}
3. 风险响应计划
风险响应策略:
风险 1: 与第三方 API 集成延迟
概率: 高 (4/5)
影响: 重大 (4/5)
风险分数: 16 (关键)
响应策略: 缓解
行动:
- 早期与供应商共同规划 (第 1 周)
- 并行开发备选方案 (第 2-4 周)
- 分配 20% 更多的开发时间 (缓冲)
- 每周与供应商团队同步
- 第二个月开始性能测试
负责人: 技术负责人
预算影响: +$15,000
时间线: 6 周 vs. 计划的 4 周
---
风险 2: 利益相关者范围蔓延
概率: 高 (4/5)
影响: 中等 (3/5)
风险分数: 12 (高)
响应策略: 避免 & 缓解
行动:
- 建立变更控制流程 (第 1 周)
- 第一阶段锁定需求 (第 2 周)
- 每月范围审查会议
- 为第二阶段创建功能积压
- 严格的变更请求评估标准
负责人: 项目经理
避免成本: 每周 5 小时 PM 时间
替代方案: 接受 2 周时间线延长
---
风险 3: 关键人员离职
概率: 中等 (3/5)
影响: 重大 (4/5)
风险分数: 12 (高)
响应策略: 缓解 & 应急
行动:
- 知识转移文档 (持续进行)
- 交叉培训第二开发人员 (第 1 周)
- 保持最新的运行手册
- 竞争性薪资审查 (HR)
- 设置导师计划
负责人: HR 经理
应急计划: 1 周内雇佣承包商
估计成本: $20,000
4. 风险监控 & 控制
// 风险跟踪和监控仪表板
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(),
closeDate: null
}));
}
identifyRiskTriggers(risk) {
return {
riskId: risk.id,
triggers: [
{
trigger: '供应商沟通延迟 >1 周',
indicator: '未收到供应商回应',
escalationAction: '联系供应商 PM,评估替代方案'
},
{
trigger: '团队成员缺席 >3 天',
indicator: '计划外休假',
escalationAction: '激活交叉培训计划'
},
{
trigger: '性能测试未达到基线',
indicator: '响应时间 > 500ms',
escalationAction: '紧急优化冲刺'
}
],
reviewFrequency: '每周站立会议'
};
}
monitorRisks(riskRegister) {
const statusReport = {
timestamp: new Date(),
summary: {
total: riskRegister.length,
active: riskRegister.filter(r => r.status === 'Active').length,
mitigated: riskRegister.filter(r => r.status === 'Mitigated').length,
closed: riskRegister.filter(r => r.status === 'Closed').length
},
criticalRisks: riskRegister.filter(r => r.riskScore >= 16),
highRisks: riskRegister.filter(r => r.riskScore >= 12 && r.riskScore < 16),
triggeredRisks: riskRegister.filter(r => r.triggered === true)
};
return statusReport;
}
}
最佳实践
✅ 做
- 尽早在项目规划中识别风险
- 让不同团队成员参与风险识别
- 尽可能量化风险影响
- 根据风险分数和暴露进行优先级排序
- 制定具体的缓解计划
- 明确风险所有权
- 定期监控触发器
- 每月审查和更新风险登记册
- 从实现的风险中记录经验教训
- 向利益相关者透明沟通风险
❌ 不做
- 等到问题发生才识别风险
- 假设风险不会实现
- 将所有风险视为同等优先级
- 没有明确的触发条件就计划缓解措施
- 忽视早期警告信号
- 将风险管理作为一次性活动
- 为关键风险跳过应急计划
- 向利益相关者隐藏负面风险
- 消除所有风险(不可能且不经济)
- 因实现的风险而责怪个人
风险管理提示
- 风险所有权激发责任感
- 定期风险审查防止意外
- 风险响应应该是成本效益的
- 一定程度的风险容忍是健康且必要的
- 记录的风险更容易管理