软件项目管理

软件项目管理
mengnankkzhou基本概念
软件项目的特殊性(4点)与 软件项目管理的特殊性是什么?
软件项目的特殊性 (4点):
- 不可见性 (Invisibility): 软件是逻辑实体,看不见摸不着,进度难以直观衡量。
- 复杂性 (Complexity): 技术复杂、业务逻辑复杂,且需求多变。
- 一致性/顺从性 (Conformity): 软件必须适应硬件、环境和遗留系统,而不是环境适应软件。
- 可变性 (Changeability): 软件容易被修改,导致“需求蔓延”。
软件项目管理的特殊性:
- 它是智力密集型的创造性活动。
- 独特性强,没有完全相同的两个项目。
- 不确定性高,很难精准预测进度和成本。
软件项目的招标步骤通常包括哪些?
- 招标 (Solicitation): 甲方发布招标公告(RFP/RFQ)。
- 投标 (Bidding): 乙方编写标书并投递。
- 开标 (Opening): 公开开启标书。
- 评标 (Evaluation): 专家评审技术和商务部分。
- 决标/授标 (Awarding): 确定中标单位。
- 签约 (Contracting): 签署正式合同。
四大开发模型是什么?Scrum 的三大角色、四个会议、以及职责分别是什么?
四大模型:
- 瀑布模型 (Waterfall): 线性顺序,文档驱动,适合需求明确的项目。
- 增量/迭代模型 (Incremental/Iterative): 分批交付,逐步完善。
- 螺旋模型 (Spiral): 强调风险分析,适合大型复杂项目。
- 敏捷模型 (Agile): 拥抱变化,快速迭代,以人为本。
Scrum 三大角色与职责:
- Product Owner (PO): 负责产品价值(ROI),管理Product Backlog,定义“做什么”。
- Scrum Master (SM): 负责流程与服务,清除障碍,保护团队,确保Scrum流程执行。
- Development Team: 负责交付,自组织,跨职能,把需求转化为可工作的软件。
Scrum 四个管理会议:
- Sprint Planning (计划会): 决定本轮迭代做什么(Sprint Backlog)。
- Daily Standup (每日站会): 昨天做了什么?今天打算做?有什么困难?
- Sprint Review (评审会): 演示产品,获取客户反馈(Demo)。
- Sprint Retrospective (回顾会): 总结过程中的优缺点,进行改进(Process)。
WBS与工作包的定义?需求分析与验证的区别?
WBS (Work Breakdown Structure): 将项目逐层分解为更小、更易管理的部分。
工作包 (Work Package): WBS 的最底层元素。特点是:可估算成本/时间、可分配责任人。
需求分析 vs 验证:
- 分析: 弄清楚用户想要什么,转化为需求规格说明书 (SRS)。
- 验证: 确认需求是否正确、完整、一致(即“我们是否在做正确的事”)。
各种进度图表的区别(甘特图、PDM、ADM、里程碑、燃尽/燃起图)?
甘特图 (Gantt): 棒状图,显示活动开始、结束和持续时间。实心通常代表已完成,空心代表计划。
PDM (前导图/单代号): 节点表示活动,箭头表示逻辑关系。最常用。
ADM (箭线图/双代号): 箭头表示活动,节点表示事件。
虚活动 (Dummy Activity): ADM特有,不消耗资源和时间,仅用于表示逻辑依赖或保证活动唯一性。
里程碑图: 标记关键时间点,持续时间为0,不消耗资源。
燃尽图 (Burndown): 剩余工作量随时间递减(敏捷常用)。
燃起图 (Burnup): 已完成工作量随时间递增。
质量管理中 QA 与 QC 的区别?敏捷质量管理特点?
QA (Quality Assurance 质量保证): 偏向过程。通过审计、过程定义,确保“过程是正确的”,预防缺陷。(例如:审计、培训)。
QC (Quality Control 质量控制): 偏向产品。通过测试、检查,发现并纠正结果中的缺陷。(例如:代码评审、单元测试)。
敏捷质量管理 (P200): 强调全员负责,测试驱动开发 (TDD),持续集成 (CI)。QA侧重于迭代过程改进(回顾会),QC侧重于验收测试(评审会)。
软件配置管理 (SCM) 的 SCCB、六个过程及分支策略?
SCCB (Software Configuration Control Board): 配置控制委员会。
职责: 评估变更请求,批准或拒绝变更,确保变更受控。
配置管理六个过程:
- 制定计划
- 配置项标识 (Naming/Identifying)
- 版本控制 (Version Control)
- 变更控制 (Change Control)
- 配置状态报告 (Status Accounting)
- 配置审计 (Auditing)
分支策略:
- 基于分支开发 (Gitflow等): 隔离性好,适合发布周期长的大型项目。缺点:合并痛苦。
- 基于主干开发 (Trunk-based): 持续集成,反馈快。缺点:对代码质量和自动化测试要求极高。
组织架构类型、风险管理(三要素、决策树)及合同类型?
组织架构:
- 职能型: 部门经理权力大,项目经理几乎无权。
- 项目型: 项目经理权力最大,资源独占。
- 矩阵型: 介于两者之间(弱矩阵、平衡矩阵、强矩阵)。
风险管理:
- 三要素: 风险事件 (Event)、概率 (Probability)、影响 (Impact)。
- 决策树分析 (EMV): $EMV (\text{期望货币值}) = \text{概率} \times \text{影响值}$。用于定量评估选择不同方案的损益。
合同类型:
- 总价合同 (Fixed Price): 范围明确。买方风险最小,卖方风险最大。
- 成本补偿合同 (Cost Reimbursable): 范围不清。买方风险最大(需实报实销)。
- 工料合同 (T&M): 介于两者之间,用于短期专家服务。
计算
详解代码行、功能点、COCOMO及用例点估算(含计算公式逻辑)。
代码行 (LOC): 简单但依赖语言,难以在早期准确估算。
COCOMO模型: 经验模型。基本公式 $E = a \times (KLOC)^b$。分为基本、中间、详细三级。
功能点估算 (FP): 与技术无关,基于用户视角。
- 五大要素: 外部输入 (EI)、外部输出 (EO)、外部查询 (EQ)、内部逻辑文件 (ILF)、外部接口文件 (EIF)。
- 计算: $FP = UFC(\text{未调整功能点}) \times TCF(\text{技术复杂度因子})$。
用例点估算 (Use Case Points, P117):
UUCW (Unadjusted Use Case Weight): 未调整的用例权重(根据用例复杂度)。
UAW (Unadjusted Actor Weight): 未调整的角色权重(根据参与者复杂度)。
UUCP (Unadjusted Use Case Points): $UUCP = UUCW + UAW$。
TCF (Technical Complexity Factor): 技术复杂度因子(13项技术指标)。
ECF (Environmental Complexity Factor): 环境复杂度因子(团队经验等)。
最终公式:
工作量 (PF): $Effort = UCP \times PF$ (PF为生产率因子,如 20工时/UCP)。
关键路径法 (CPM) 的计算逻辑与浮动时间?
关键路径 (Critical Path): 网络图中耗时最长的路径,决定了项目的最短工期。
计算核心:
- 正推 (Forward Pass): 计算最早开始(ES) 和 最早结束(EF)。取大值。
- 逆推 (Backward Pass): 计算最晚开始(LS) 和 最晚结束(LF)。取小值。
浮动时间 (Float/Slack): $Float = LS - ES$ 或 $LF - EF$。
- 关键路径上的浮动时间为 0。
- 注意: 浮动时间越多,进度安排越灵活,风险越小。浮动时间越少(接近0),项目延期风险越大。
挣值分析法 (EVM) 核心参数?
BCWS (PV): 计划值(计划做多少?)
BCWP (EV): 挣值(实际做完了多少的价值?)—— 这是最核心的参数。
ACWP (AC): 实际成本(实际花了多少钱?)
基本判断:
- $EV > AC$ (CPI > 1):成本节约。
- $EV > PV$ (SPI > 1):进度提前。
真题解析
1.甲乙方在招投标过程中的主要任务
甲方(招标方)的主要任务:
- 招标准备: 确定项目需求,编制招标文件(包括需求说明书、规格说明书等),确定评估标准。
- 发布招标公告: 向社会或特定群体发布招标信息。
- 资格预审: 对报名参加投标的单位进行资格审查。
- 开标、评标与决标: 组织专家对投标文件进行评审,按照既定标准打分,选定中标单位。
- 合同签署: 与中标单位进行谈判,签订正式合同。
乙方(投标方)的主要任务:
- 获取信息与可行性分析: 获取招标文件,分析自身能力与项目需求的匹配度(决定是否投标)。
- 编制投标文件: 包括技术标(技术方案、实施计划)和商务标(报价、资质证明)。
- 投标: 在规定时间内密封递交投标文件及缴纳保证金。
- 参与讲标/答疑: 针对评标专家的疑问进行现场解答或演示。
- 合同谈判与签署: 中标后与甲方确认合同细节并签约。
- 项目风险的三要素
项目风险通常由以下三个基本要素构成:
- 风险事件(Event): 可能发生的不利事件(例如:核心技术人员离职、服务器宕机)。
- 概率(Probability): 该事件发生的可能性大小。
- 影响(Impact/Loss): 如果该事件发生,对项目目标(成本、进度、质量)造成的损失或后果。
3.需求理论
马斯洛理论将人类需求从低到高分为五个层次,项目经理常用此理论来激励团队成员:
- 生理需求 (Physiological needs): 基本的衣食住行、工资待遇。
- 安全需求 (Safety needs): 职业稳定性、医疗保险、免受威胁。
- 社交需求 (Social needs/Love and belonging): 归属感、友谊、良好的团队氛围。
- 尊重需求 (Esteem needs): 成就感、地位、他人的认可和表扬。
- 自我实现需求 (Self-actualization): 发挥潜能、实现个人理想、挑战性工作。
4.项目的特征
项目主要具备以下显著特征:
- 临时性 (Temporary): 有明确的开始和结束时间。
- 独特性 (Unique): 每个项目的产品、服务或成果都是独特的,没有完全相同的两个项目。
- 渐进明细 (Progressive Elaboration): 项目的计划和范围是随着信息的逐渐丰富而逐步清晰和细化的。
- 资源约束性: 项目受限于预算、时间、人力等资源。
- 目的性: 项目是为了实现特定的目标或解决特定的问题。
5.矩阵型项目的组织结构的优缺点
优点:
- 资源利用率高: 专家可以在多个项目中共享,减少闲置。
- 灵活性强: 能迅速响应环境变化,组建跨职能团队。
- 沟通顺畅: 促进了职能部门与项目团队之间的信息交流。
- 目标明确: 项目经理专注于项目目标,职能经理专注于技术提升。
缺点:
- 双重汇报(双头领导): 成员同时受项目经理和职能经理领导,容易产生指令冲突。
- 权力斗争: 项目经理和职能经理之间可能争夺资源和控制权。
- 管理成本高: 需要更多的沟通协调会议,决策过程可能变慢。
6.几个模型的使用情况:
| 开发生命周期 | 适用情况 (特点) | 关键词 |
|---|---|---|
| 预测型 (Predictive/Waterfall) | 项目需求明确、技术成熟、变更很少、风险可控。强调按计划执行。 | 一次性交付、需求固定 |
| 迭代型 (Iterative) | 需求不明确、复杂度高,需要通过反复修改来优化产品。旨在通过重复循环来改进产品质量。 | 一次性交付、逐步求精 |
| 增量型 (Incremental) | 客户急需看到部分功能,或希望尽早投入市场。通过分批次交付可用的子系统来满足需求。 | 分批交付、速度优先 |
| 敏捷型 (Agile) | 需求频繁变更、环境不确定性高、需要快速响应变化。结合了迭代和增量,持续且频繁地交付价值。 | 频繁交付、拥抱变更 |







