薛大龙-软考高级-信息系统项目管理师 | 完结

30 阅读8分钟

信息系统项目管理师(软考高级)是很多技术人迈向管理岗的"敲门砖"。薛大龙老师的课程以其"考点化、条理化、实战化"著称,深受考生喜爱。

要想拿下这个高级资格,吃透十大知识领域(基于PMBOK体系)是关键。虽然软考新教材和PMBOK第七版在理念上有所更新,但核心考点依然集中在经典的五大过程组和十大知识领域上。

下面我按照薛大龙老师的授课逻辑,梳理十大领域的核心考点,并附上一些 Python 代码工具,帮助你更直观地理解那些晦涩的计算题。

一、 整体管理:项目的"大脑"

核心考点

  1. 项目章程:项目正式授权的文件,包含项目经理的权责。
  2. 项目管理计划:所有子计划的集合(范围、进度、成本、质量等)。
  3. 变更控制变更必须走流程(提出 -> 分析 -> 批准/拒绝 -> 更新 -> 通知)。
  4. 配置控制:版本管理(基线)。

薛大龙口诀章程启动计划,变更控制全程。

二、 范围管理:明确"做什么"和"不做什么"

核心考点

  1. 需求收集技术:访谈、问卷、观察、原型法、群体创新技术(头脑风暴、德尔菲法)。
  2. WBS(工作分解结构) :考试常考 WBS 层级和分解原则(100%原则)。
  3. 范围确认 vs 范围控制:前者是正式验收(客户签字),后者是防止范围蔓延

代码辅助:WBS 生成器

python

复制

class WBSTree:
    def __init__(self, root_name):
        self.root = {'name': root_name, 'children': []}

    def add_child(self, parent_path, child_name):
        """
        在指定路径下添加子节点
        parent_path: 列表,如 ['项目', '阶段一']
        """
        current_level = self.root['children']
        
        # 导航到父节点
        node = self.root
        for name in parent_path:
            found = False
            for child in node['children']:
                if child['name'] == name:
                    node = child
                    found = True
                    break
            if not found:
                print(f"[!] 未找到父路径: {parent_path}")
                return
        
        # 添加子节点
        node['children'].append({'name': child_name, 'children': []})

    def print_tree(self, node=None, level=0):
        if node is None:
            node = self.root
        print("  " * level + "- " + node['name'])
        for child in node['children']:
            self.print_tree(child, level + 1)

# 使用示例:构建一个软件开发项目的 WBS
project_wbs = WBSTree("ERP系统开发")
project_wbs.add_child([], "需求分析")
project_wbs.add_child([], "系统设计")
project_wbs.add_child(["系统设计"], "数据库设计")
project_wbs.add_child(["系统设计"], "接口设计")
project_wbs.add_child([], "编码实现")
project_wbs.add_child([], "测试")

project_wbs.print_tree()

三、 进度管理:解决"何时做"

核心考点

  1. 关键路径法(CPM) :总时差为 0 的路径,决定项目最短工期。
  2. 资源平衡 vs 资源平滑:前者改变工期,后者不改变工期。
  3. 三点估算(PERT) :公式 (O+4M+P)/6(O+4M+P)/6。

代码辅助:关键路径计算器

python

复制

def calculate_critical_path(activities):
    """
    计算关键路径(简化版:假设活动列表已按依赖关系排序)
    activities: 字典,格式 {'活动名': {'duration': int, 'preds': []}}
    """
    # 正推法:计算最早开始(ES)和最早完成(EF)
    es = {act: 0 for act in activities}
    ef = {act: 0 for act in activities}
    
    # 简单的拓扑顺序(实际项目中需更复杂算法)
    for act in activities:
        preds = activities[act]['preds']
        if preds:
            es[act] = max([ef[p] for p in preds])
        else:
            es[act] = 0
        ef[act] = es[act] + activities[act]['duration']
    
    project_duration = max(ef.values())
    
    # 逆推法:计算最晚开始(LS)和最晚完成(LF)
    ls = {act: 0 for act in activities}
    lf = {act: 0 for act in activities}
    
    # 初始化 LF
    for act in activities:
        lf[act] = project_duration
    
    # 按逆序处理
    acts_list = list(activities.keys())
    for act in reversed(acts_list):
        # 找到以当前活动为前置的所有后续活动
        successors = [a for a in activities if act in activities[a]['preds']]
        if successors:
            lf[act] = min([ls[s] for s in successors])
        ls[act] = lf[act] - activities[act]['duration']
    
    # 计算总时差
    slack = {act: ls[act] - es[act] for act in activities}
    
    # 找出关键路径(时差为0)
    critical_path = [act for act in activities if slack[act] == 0]
    
    print(f"项目总工期: {project_duration}")
    print(f"关键路径: {' -> '.join(critical_path)}")

# 测试
network_diagram = {
    'A': {'duration': 3, 'preds': []},
    'B': {'duration': 4, 'preds': ['A']},
    'C': {'duration': 2, 'preds': ['A']},
    'D': {'duration': 5, 'preds': ['B', 'C']},
    'E': {'duration': 2, 'preds': ['D']}
}

calculate_critical_path(network_diagram)

四、 成本管理:解决"花多少钱"

核心考点

  1. 挣值分析(EVA) :这是计算题的必考点,必须背熟公式。

    • CV=EV−ACCV=EV−AC (成本偏差)
    • SV=EV−PVSV=EV−PV (进度偏差)
    • CPI=EV/ACCPI=EV/AC (成本绩效指数)
    • SPI=EV/PVSPI=EV/PV (进度绩效指数)
  2. 完工估算(EAC) :根据当前 CPI 修正的总成本估算。

代码辅助:挣值分析仪表盘

python

复制

def eva_dashboard(pv, ev, ac):
    """
    挣值分析计算器
    pv: 计划价值
    ev: 挣值
    ac: 实际成本
    """
    cv = ev - ac
    sv = ev - pv
    cpi = ev / ac if ac != 0 else 0
    spi = ev / pv if pv != 0 else 0
    
    # 完工估算 (EAC) - 典型公式
    eac = ac + ((pv - ev) / cpi) if cpi != 0 else 0
    
    print(f"{'指标':<10} | {'数值':<10} | {'状态'}")
    print("-" * 35)
    print(f"{'CV':<10} | {cv:<10.2f} | {'超支' if cv < 0 else '节约'}")
    print(f"{'SV':<10} | {sv:<10.2f} | {'落后' if sv < 0 else '超前'}")
    print(f"{'CPI':<10} | {cpi:<10.2f} | {'<1 (糟糕)' if cpi < 1 else '>=1 (良好)'}")
    print(f"{'SPI':<10} | {spi:<10.2f} | {'<1 (糟糕)' if迪spi < 1 else '>=1 (良好)'}")
    print("-" * 35)
    print(f"完工估算 (EAC): {eac:.2f}")

# 模拟案例
# 场景:计划100万,干了80万的活,花了90万
eva_dashboard(pv=100, ev=80, c=90)

五、 质量管理:确保"做得好"

核心考点

  1. 质量 vs 等级:质量是"符合要求",等级是"功能多少"。

  2. 质量保证(QA) vs 质量控制(QC)

    • QA:过程审计,关注预防
    • QC:检查产品,关注探测
  3. 七种基本工具:因果图(鱼骨图)、控制图、帕累托图(80/20法则)。

代码辅助:帕累托图数据生成器

python

复制

import matplotlib.pyplot as plt

def generate_pareto_chart(issues):
    """
    生成帕累托图数据(模拟)
    issues: 字典,格式 {'问题类型': 数量}
    """
    sorted_issues = sorted(issues.items(), key=lambda x: x[1], reverse=True)
    types = [x[0] for x in sorted_issues]
    counts = [x[1] for x in sorted_issues]
    
    # 计算累计百分比
    total = sum(counts)
    cumulative = []
    acc = 0
    for count in counts:
        acc += count
        cumulative.append(acc / total * 100)
    
    # 打印数据(实际项目中可画图)
    print(f"{'问题类型':<15} | {'数量':<6} | {'累计占比(%)'}")
    print("-" * 40)
    for i in range(len(types)):
        print(f"{types[i]:<15} | {counts[i]:<6} | {cumulative[i]:.1f}%")
    
    return types, counts, cumulative

# 示例:软件Bug分布
bug_data = {
    "界面UI": 45,
    "功能逻辑": 30,
    "性能问题": 15,
    "安全漏洞": 8,
    "文档错误": 2
}
generate_pareto_chart(bug_data)

六、 人力资源管理:解决"谁来做"

核心考点

  1. 激励理论:马斯洛需求层次、赫兹伯格双因素理论(保健因素 vs 激励因素)。
  2. 团队建设阶段:形成期 -> 震荡期 -> 规范期 -> 执行期 -> 解散期。
  3. 权力类型:职位权力、惩罚权力、奖励权力、专家权力、参照权力。

代码辅助:团队冲突解决策略选择器

python

复制

def resolve_conflict(conflict_type, urgency, relationship_importance):
    """
    根据冲突类型、紧急程度、关系重要性建议解决策略
    """
    if urgency == "High" and relationship_importance == "Low":
        return "强制/命令" # 快速决策,牺牲关系
    elif relationship_importance == "High" and urgency == "Low":
        return "合作/解决问题" # 双赢,投入时间
    elif conflict_type == "不重要":
        return "撤退/回避"
    else:
        return "妥协/调解"

print(resolve_conflict("技术分歧", "Medium", "High")) # 输出: 合作/解决问题

七、 沟通管理:解决"信息差"

核心考点

  1. 沟通渠道数量计算公式:N(N−1)/2N(N−1)/2。其中 NN 是干系人数量。
  2. 沟通技术 vs 沟通方法:技术是工具(邮件、会议),方法是方式(交互式、推式、拉式)。
  3. 绩效报告:状态报告(过去)、进展报告(当前)、预测报告(未来)。

代码辅助:沟通渠道计算器

python

复制

def comm_channels(n):
    return n * (n - 1) // 2

# 场景:项目组有 10 个干系人
print(f"10 个干系人之间的沟通渠道数: {comm_channels(10)} 条")

八、 风险管理:未雨绸缪

核心考点

  1. 风险识别技术:文档审查、信息收集技术(头脑风暴、德尔菲法)、SWOT分析。

  2. 定性分析:概率影响矩阵。

  3. 应对策略

    • 负面风险(威胁):规避、转移、减轻、接受。
    • 正面风险(机会):开拓、分享、提高、接受。

代码辅助:风险概率影响矩阵

python

复制

risk_matrix = [
    # (概率, 影响) -> 风险等级
    (0.9, 0.8, "High"),  # 高概率,高影响
    (0.1, 0.2, "Low"),
    (0.5, 0.7, "High"),
    (0.3, 0.4, "Medium")
]

for prob, impact, level in risk_matrix:
    print(f"概率: {prob:.0%}, 影响: {impact:.0%} -> 风险等级: {level}")

九、 采购管理:管理外部资源

核心考点

  1. 合同类型

    • 固定总价(FFP):卖方风险大。
    • 成本加固定费用(CPFF):买方风险大。
    • 时间材料(T&M):混合型。
  2. 采购文件:RFP(建议书邀请书)、RFQ(报价邀请书)。

  3. 合同收尾审计正式验收

十、 干系人管理:管理期望

核心片段

  1. 权力/利益方格

    • 高权力高利益:重点管理。
    • 低权力低利益:监督。
  2. 干系人参与度评估矩阵:不知道 -> 抵制 -> 中立 -> 支持 -> 领导。

总结:薛大龙版备考策略

  1. 背诵口诀:每个领域都有核心口诀(如"章程启动计划,变更控制全程"),务必背熟。
  2. 计算题专项训练:下午案例分析的最后一题通常是计算题(进度或成本),必须拿满分。
  3. 论文准备:准备 8-10 个核心主题(如风险管理、质量管理),每个主题都要有自己实战项目的"故事线"。

信息系统项目管理师不仅考查记忆,更考查系统思维。通过上面的代码工具,你可以把抽象的管理概念转化为可计算的逻辑,理解会更深刻。祝你备考顺利!