#用于个人笔记整理
一、项目概述
1、项目
项目是在一定的时间、资源、环境等约束条件下,为了达到特定的目标所做的一次性任务。它通常具有以下特征:
明确的目标:项目具有明确的目的和预期成果。
独特性:每个项目都是独一无二的,具有特定的需求和条件。
临时性:项目有明确的开始和结束时间。
资源有限性:项目需要在有限的资源(如人力、物力、财力)下完成。
2、项目管理与软件生命周期
项目管理是指通过规划、组织、领导和控制等手段,对项目范围、进度、成本和质量等方面进行综合管理的过程。有效的项目管理可以确保项目按时、按质、按量完成。
软件开发生命周期则是指软件开发过程中包含的各个阶段和活动,包括需求收集与分析、概要设计、详细设计、编码与单元测试、集成测试、系统测试、验收交付以及运维与维护等。项目管理与软件开发生命周期密切相关,有效的项目管理可以提高软件开发效率、控制项目进度和质量。
在软件开发生命周期中,项目管理活动贯穿始终,包括:
项目启动:明确项目的背景和目标,完成项目可行性分析和项目概要计划。
需求收集与分析:与客户进行需求讨论,确定系统功能和性能要求。
设计:包括概要设计和详细设计,确定系统的总体结构和模块划分。
开发:根据设计文档进行编码,并进行单元测试。
测试:包括集成测试和系统测试,验证系统是否符合用户需求和设计要求。
验收交付:将软件交付给用户,并进行验收测试。
运维与维护:在使用过程中,及时响应用户需求,解决软件使用中的问题。
3、里程碑
在项目管理中,里程碑是项目进度的关键标记,它代表着项目的重要阶段或事件。常见的项目管理里程碑包括:
项目启动:项目正式开始,确定项目的目标、范围和预期结果,进行资源分配和预算制定。
需求分析与定义:深入了解用户需求和期望,完成详细需求收集和分析。
项目计划制定:根据项目的需求和目标,制定出详细的项目计划,包括任务分配、时间规划、预算制定等。
项目执行:按照项目计划进行项目的实施,包括开发、测试、发布等活动。
项目控制:对项目的进度进行监控和控制,确保项目按计划进行,包括风险管理、变更控制等。
项目收尾:对项目进行总结和评估,完成项目的验收、总结报告和后续维护等工作。
项目评审:对项目的整个过程进行评审,从中学习和改进,包括问题反馈、改进措施和经验分享等。
里程碑的设立有助于项目经理和团队成员监控项目的进展情况,及时发现问题并采取相应的措施,确保项目能够按计划顺利进行。同时,里程碑也是项目团队和项目干系人之间沟通和协调的重要工具,有助于各方了解项目的进展情况并做出相应的决策。
二、项目估算
1、公式估算
1. 基于人月数的估算
公式:开发费用 = 人月数 × 每个人月的代价
解释:
人月数:指的是完成整个项目所需的总人力时间,以“人月”为单位。这通常是通过将项目分解为多个任务,并估算每个任务所需的工作量(以人月为单位)来得到的。
每个人月的代价:指的是一个开发人员一个月的工资、福利、税费等所有相关成本的总和。这个数值可能因地区、公司规模、员工级别等因素而有所不同。
优点:
易于理解和计算。
便于进行人力资源的规划和调配。
缺点:
估算人月数时可能存在较大的主观性。
忽略了不同开发人员的效率差异。
2. 基于源代码行数的估算
公式:开发费用 = 源代码行数 × 每行平均费用
解释:
源代码行数:指的是项目最终生成的源代码的总行数。这通常是在项目完成后统计得到的,但在估算时可能需要基于类似项目的经验或行业标准进行预测。
每行平均费用:指的是生成一行源代码所需的平均成本。这个数值同样可能因多种因素(如编程语言、代码质量、开发环境等)而有所不同。
优点:
与项目的实际产出(源代码)直接相关。
在某些情况下,可能更准确地反映项目的复杂性和工作量。
缺点:
源代码行数并不总是能准确反映项目的复杂性和工作量(例如,某些复杂的逻辑可能只需要几行代码,而某些简单的任务可能需要大量的代码)。
估算每行平均费用时可能存在较大的不确定性。
2、模型估算
1.普特南(Putnam)模型
特点:
动态多变量模型:普特南模型是一个动态多变量模型,它考虑了多个变量对项目成本的影响,包括源代码行数、开发持续时间、技术状态常数等。
应用:该模型适用于需要详细考虑多个变量对项目成本影响的场景,如复杂的软件开发项目。
2.基本COCOMO模型
特点:静态单变量模型,主要基于源代码行数来估算软件开发工作量。
应用:适用于快速估算整个软件系统的开发工作量,对于需要快速了解项目规模和工作量的场景非常有用。
3.中级COCOMO模型
特点:静态多变量模型,在基本模型的基础上增加了对多个成本驱动属性的考虑,如产品可靠性、开发团队经验等。
应用:适用于需要更详细估算软件开发工作量的场景,能够更准确地反映项目的复杂性和工作量。
4.详细COCOMO模型
特点:将软件系统模型分为系统、子系统和模块三个层次,进一步细化了对软件开发成本的估算。
应用:适用于大型、复杂的软件项目,能够提供更详细、更准确的成本估算,帮助项目管理者更好地进行资源分配和时间规划。
三、进度管理
1、活动图\网络图
节点:代表项目中的各项活动或任务。
箭头:表示活动之间的依赖关系或执行顺序。箭头从一个活动的结束指向另一个活动的开始,表示后者依赖于前者的完成。
关键路径:在活动网络图中,从项目开始到结束的最长路径称为关键路径。关键路径上的任何活动延迟都会导致整个项目的延期。
松弛时间(也称浮动时间或缓冲时间)是指在不延误项目完成日期的前提下,某项活动可以推迟开始或完成的时间量。它表示了活动在时间上的灵活性。