1、13、软件项目管理,授课教师:崔晓晖 联系方式: 授课学时:40,软件项目管理,软件项目管理先于任何技术活动之前开始,贯穿于软件的整个生命周期之中。软件项目管理过程从一组项目计划活动开始,而制定计划的基础是工作量估算和完成期限估算。,软件工程,主要内容,1. 估算软件规模2. 工作量估算3. 进度计划4. 人员组织5. 质量保证6. 软件配置管理7. 能力成熟度模型,软件工程,1. 估算软件规模,1.1 代码行技术1.2 功能点技术,软件工程,1.1 代码行技术,依据以往开发的类似产品的经验和历史数据,估计每个功能所需的源程序行数。把每个功能所需的源程序行数累加起来,得到整个软件所需的源程序行
2、数。,软件工程,1.1 代码行技术,为了对程序规模的估计更接近实际值,可以由多名有经验的工程师分别做出估计。 每个人估计程序的最小规模(a),最大规模(b)和最可能规模(m)。算出3种规模的平均值,用如下公式计算程序规模的估计值:代码行技术估算软件规模时,当程序较小时常用单位是代码行数(LOC),当程序较大时常用的单位是千行代码数(KLOC)。,软件工程,1.1 代码行技术,优点:代码是所有软件开发项目都有的“产品”,容易计算。 缺点: 代码只是一个软件成分,用它的规模来代表整个软件的规模不太合理; 用不同的语言编写代码的长度也不相同; 不适合非过程性的语言。,提出了功能点技术,软件工程,1.
3、2 功能点技术,依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。度量单位:功能点(Function Point, FP),软件工程,1.2 功能点技术,信息域特性 输入项数(Inp) 输出项数(Out) 查询数(Inq) 主文件数(Maf) 外部接口(Inf),软件工程,主要内容,1. 估算软件规模2. 工作量估算3. 进度计划4. 人员组织5. 质量保证6. 软件配置管理7. 能力成熟度模型,软件工程,2. 工作量估算,使用由经验导出的公式来预测 是软件规模(KLOC或FP)的函数 工作量的单位:通常是 人月(pm) 三种估算模型 静态单变量模型 动态多变量模型 COCOMO2模型
4、,软件工程,主要内容,1. 估算软件规模2. 工作量估算3. 进度计划4. 人员组织5. 质量保证6. 软件配置管理7. 能力成熟度模型,软件工程,3. 进度计划,项目管理者的目标:定义全部任务项目任务,识别关键任务,跟踪关键任务的进展状况,以保证能及时能发现拖延进度情况。为达到上述目标,管理者必须制定一个足够详细的进度表,以便监督项目进度并控制整个项目。,软件工程,3. 进度计划,在项目计划的早期,指定一个宏观进展,把宏观进度的表中的每个条目都精化成一个详细的进度表,从而标志出完成一个活动所必须实现的一组特定任务,并安排好实现这些任务的进度。,软件工程,3. 进度计划,3.1 估算开发时间
5、3.2 Gantt图 3.3 工程网络 3.4 估算工程进度 3.5 关键路径 3.6 机动时间,软件工程,3.1 估算开发时间,对于一个估计工作量为20人月的项目,可能的进度表: 1个人20个月 4个人5个月 20个人一个月?,软件工程,3.1 估算开发时间,项目组规模对生产率的影响,软件工程,3.2 Gantt图,甘特图(Gannt Chart)常用来表示细化的进度计划。在用甘特图进行进度求精时,时间单位可以分解到每周、每工作日乃至每个工时,资源可以对应到每个人。,软件工程,3.2 Gantt图,软件工程,3.3 工程网络,软件工程,3.4 估算工程进度,最早时刻EET与最迟时刻LET,软
6、件工程,3.5 关键路径,事件的最早时刻和最迟时刻相同,这些事件定义了关键路径(用粗线箭头表示)工程项目的管理人员应该密切注视关键作业进度情况,软件工程,3.6 机动时间,机动时间=(LET)结束 -(EET)开始-持续时间,软件工程,主要内容,1. 估算软件规模2. 工作量估算3. 进度计划4. 人员组织5. 质量保证6. 软件配置管理7. 能力成熟度模型,软件工程,4. 人员组织,软件项目成功的关键是有高素质的软件的软件开发人员。 但是,为了成功的完成项目,项目组成员必须以一种有意义且有效的方式彼此交互和通信,建立有凝聚力的项目组。 项目组织方式,取决于: 所承担的项目的特点 以往的组织经
7、验 管理者的看法和爱好 ,软件工程,4. 人员组织,4.1 民主制程序员组 4.2 主程序员组 4.3 现代程序员组,软件工程,4.1 民主制程序员组,特点 小组成员完全平等,享有充分民主,通过协商做出技术决策。 通信 小组成员之间的通信是平行的,如果小组内有n个成员,则可能的通信信道共有 n*(n-1)/2。 规模 一般2-8名成员为宜。若项目规模很大,建立多个小组。 各小组间的接口是良好定义的,并尽可能地简单。,软件工程,4.2 主程序员组,两个重要特性:专业化和层次化。,软件工程,4.3 现代程序员组,软件工程,4.3 现代程序员组,软件工程,主要内容,1. 估算软件规模2. 工作量估算
8、3. 进度计划4. 人员组织5. 质量保证6. 软件配置管理7. 能力成熟度模型,软件工程,5. 质量保证,软件质量是贯穿软件生存期的一个极为重要的问题,关于软件质量的定义有多种说法,从实际应用来说,软件质量定义如下: 与所确定的功能和性能需求的一致性 与所成文的开发标准的一致性 与专业开发的软件所期望的隐含特性一致性,软件工程,5. 质量保证,软件质量的保证措施 技术复审 走查 审查 测试 正确性证明,软件工程,主要内容,1. 估算软件规模2. 工作量估算3. 进度计划4. 人员组织5. 质量保证6. 软件配置管理7. 能力成熟度模型,软件工程,6. 软件配置管理,软件配置是在软件的整个生命
9、周期内管理变化的一组活动。具体: 标志变化 控制变化 确保适当的实现变化 向需要知道这些信息的人报告变化,软件工程,主要内容,1. 估算软件规模2. 工作量估算3. 进度计划4. 人员组织5. 质量保证6. 软件配置管理7. 能力成熟度模型,软件工程,7. 能力成熟度模型,能力成熟度模型(capability maturity model, CMM) 基本思想: 问题是管理软件过程的方法不恰当造成的,采用新技术并不会自动提高软件生产率和软件质量,应下大力气改进对软件过程的管理。,软件工程,7. 能力成熟度模型,CMM通过定义能力成熟度的5个等级,引导软件开发机构不断识别出软件过程的缺陷,并指出应该做哪些修改,但是,它并不提供这些改进的具体措施。 5个等级: (1)初始级 (2)可重复级 (3)已定义级 (4)已管理级 (5)优化级,软件工程,2018/12/15,软件工程,39,谢谢!,