希赛王勇.202111.软考高级-信息系统项目管理师 | 完结

29 阅读6分钟

在信息系统项目管理师(软考高级)的知识体系中,整体管理起到了"大脑"和"粘合剂"的作用。它不专注于某一具体领域(如只管进度或只管质量),而是负责协调所有其他领域,确保项目各要素能够有机整合为一个整体。

按照薛大龙老师的教学逻辑,整体管理的核心流程可以概括为:制定章程 -> 制定计划 -> 指导与管理工作 -> 管理项目知识 -> 监控项目工作 -> 实施整体变更控制 -> 结束项目或阶段

下面我将梳理这一全流程,并重点解析关键的输入输出,最后用 Python 代码模拟其中最核心的"变更控制"逻辑。

一、 整体管理七大流程详解

1. 制定项目章程

这是项目的"出生证"。

  • 作用:正式批准项目成立,授权项目经理动用组织资源。
  • 核心输入:商业论证(为什么要做)、协议(合同)。
  • 关键输出项目章程(包含高层级需求、里程碑名单、预先批准的财务资源)。
  • 考点记忆章程由发起人签发,而不是项目经理。

2. 制定项目管理计划

这是项目的"行动指南"。

  • 作用:综合所有子计划(范围、进度、成本、质量等)和基准,确定项目如何执行、监控和收尾。
  • 核心输入:章程、其他过程的输出。
  • 关键输出项目管理计划(注意:这是一个包含基准的综合性文件,不是单一的文档)。

3. 指导与管理工作

这是项目的"发动机"。

  • 作用:按照计划执行实际工作,产生可交付成果。
  • 核心输入:批准的项目管理计划、可交付成果(尚未验证)。
  • 关键输出可交付成果(工作产品数据)、工作绩效数据(原始数据)。

4. 管理项目知识

这是项目的"知识库"。

  • 作用:利用现有知识,并生成新知识(经验教训)。
  • 核心输入:项目管理计划、工作绩效报告。
  • 关键输出经验教训登记册(非常重要,也是考试常考点)。

5. 监控项目工作

这是项目的"仪表盘"。

  • 作用:跟踪、审查和调整项目进展,对比计划与实际的偏差。
  • 核心输入:工作绩效数据 -> 转化为 工作绩效信息(对比后的带偏差信息)。
  • 关键输出工作绩效报告(给干系人看的预测、状态报告)。

6. 实施整体变更控制

这是项目的"守门员"。

  • 作用:审查所有变更请求,批准或拒绝,并调整基准。
  • 核心输入:变更请求、工作绩效报告。
  • 关键输出批准的变更请求项目管理计划更新项目文件更新
  • 考点记忆CCB(变更控制委员会)  是这个过程的关键工具(虽然不是必需的,但在软考中常考)。

7. 结束项目或阶段

这是项目的"终点站"。

  • 作用:正式结束项目或阶段,移交成果,释放资源,总结经验。
  • 核心输入:验收的可交付成果。
  • 关键输出最终产品、服务或成果移交组织过程资产更新(主要是历史信息)。

二、 核心数据流转逻辑(考点速记)

软考非常喜欢考查数据的转化关系,这在上午选择题和下午案例分析中都是高频考点。

  1. 数据 -> 信息 -> 报告

    • 工作绩效数据:原始状态(如:用了100小时)。
    • 工作绩效信息:对比分析(如:比计划多用了10小时,落后了)。
    • 工作绩效报告:汇总展示(如:目前项目成本超支,建议采取纠偏措施)。
  2. 变更流程
    发现问题 -> 提交变更请求 -> 分析影响 -> CCB审批 -> 更新计划 -> 执行变更。

三、 代码实战:模拟整体变更控制(CCB)流程

整体管理中最复杂的逻辑在于变更控制。我们如何判断一个变更请求(CR)是否应该被批准?如何确保变更不失控?

下面我用 Python 写一个简单的"变更控制模拟器",帮助你理清这个逻辑。

python

复制

import datetime

class ChangeRequest:
    """变更请求对象"""
    def __init__(self, cr_id, title, impact, reason):
        self.id = cr_id
        self.title = title
        self.impact = impact # 1:Low, 2:Medium, 3:High
        self.reason = reason
        self.status = "Open" # Open, Approved, Rejected
        self.create_time = datetime.datetime.now()

class ProjectManagementPlan:
    """项目管理计划(简化版)"""
    def __init__(self, scope, cost, schedule):
        self.scope = scope
        self.cost = cost # 预算
        self.schedule = schedule # 工期(天)
        self.version = "V1.0"

class CCBSystem:
    """变更控制委员会系统"""
    
    def __init__(self, project_plan):
        self.project_plan = project_plan
        self.change_log = []
        self.approved_changes = []

    def evaluate_change(self, cr):
        """
        评估变更逻辑(简化版)
        """
        print(f"\n[CCB] 正在评估变更请求: {cr.id} - {cr.title}")
        
        # 1. 分析影响
        if cr.impact == 3:
            print(f"[!] 变更影响等级: HIGH. 需要更新基准。")
            return False # 假设为了演示,先拒绝高影响变更
        elif cr.impact == 2:
            print(f"[*] 变更影响等级: MEDIUM. 需要追加预算。")
            # 模拟自动审批逻辑(实际需人工评审)
            approval = self.auto_approve_logic(cr)
            return approval
        else:
            print(f"[+] 变更影响等级: LOW. 无需更新基准,快速通道。")
            return True

    def auto_approve_logic(self, cr):
        """自动审批模拟"""
        # 简单逻辑:如果是Bug修复则通过,如果是新增功能则拒绝
        if "Bug" in cr.reason:
            return True
        else:
            return False

    def process_change_request(self, cr):
        """处理变更请求流程"""
        # 1. 接收变更
        self.change_log.append(cr)
        
        # 2. 分析与批准
        is_approved = self.evaluate_change(cr)
        
        if is_approved:
            cr.status = "Approved"
            self.approved_changes.append(cr)
            # 3. 更新项目管理计划(关键步骤)
            self.update_project_plan(cr)
            print(f"[CCB] 变更 {cr.id} 已批准。")
        else:
            cr.status = "Rejected"
            print(f"[CCB] 变更 {cr.id} 已拒绝。")

    def update_project_plan(self, cr):
        """更新项目管理计划"""
        # 如果变更影响了基准,版本号升级
        if cr.impact == 2 or cr.impact == 3:
            self.project_plan.version = self.project_plan.version + ".1" # V1.0 -> V1.0.1
            print(f"[Plan] 项目管理计划已更新至 {self.project_plan.version}")

    def generate_report(self):
        print("\n=== 变更控制报告 ===")
        for cr in self.change_log:
            print(f"ID: {cr.id} | 标题: {cr.title} | 状态: {cr.status}")

# ==================== 模拟场景 ====================

# 1. 初始化项目计划
my_plan = ProjectManagementPlan(scope="ERP开发", cost=500000, schedule=180)

# 2. 初始化 CCB 系统
ccb_system = CCBSystem(my_plan)

# 3. 提交变更请求 A (低影响)
cr_a = ChangeRequest("CR-001", "修正登录页面颜色错误", 1, "UI体验优化")
ccb_system.process_change_request(cr_a)

# 4. 提交变更请求 B (中影响,需要追加预算)
cr_b = ChangeRequest("CR-002", "新增报表导出功能", 2, "用户需求增加")
ccb_system.process_change_request(cr_b)

# 5. 提交变更请求 C (高影响Bug)
cr_c = ChangeRequest("CR-003", "修复数据库死锁问题", 3, "系统稳定性Bug")
ccb_system.process_change_request(cr_c)

# 6. 输出报告
ccb_system.generate_report()
print(f"\n最终项目计划版本: {my_plan.version}")

四、 备考总结与建议

  1. 背熟定义:整体管理的7个过程名、顺序以及各自的输入输出是上午题的基础。

  2. 区分概念

    • 项目章程 vs 项目范围说明书:前者粗(高层级),后者细。
    • 工作绩效数据 vs 工作绩效信息:前者是原料,后者是半成品。
    • 纠正措施 vs 预防措施:前者纠正过去,后者预防未来。
  3. 论文素材:在写论文时,整体管理是背景。你可以描述自己是如何通过"实施整体变更控制"来处理项目中的突发需求,如何通过"结束项目"来总结经验教训。这能体现你的大局观。

整体管理贯穿项目的始终,掌握了它,你就掌握了项目管理的"总开关"。祝备考顺利!