1.52k likes | 1.66k Views
软件工程. 第 16 章 软件项目管理. 项目. 罗伯特 .J. 格雷厄姆 ( 美国著名学者 ) : 因为项目是适应环境变化的普遍方式,故而一个组织的成功与否将取决于其管理项目的水平 项目管理权威机构 PMI :项目管理协会 Project Management Institute 项目的定义 (PMI) : 一种在一段时间内为了创造某种独特的产品或服务而采取的一种努力. 软件项目管理. 软件危机后的普遍性结论:软件项目成功率非常低的原因可能是项目管理能力太弱
E N D
软件工程 第16章 软件项目管理
项目 • 罗伯特.J.格雷厄姆(美国著名学者):因为项目是适应环境变化的普遍方式,故而一个组织的成功与否将取决于其管理项目的水平 • 项目管理权威机构PMI:项目管理协会Project Management Institute • 项目的定义(PMI):一种在一段时间内为了创造某种独特的产品或服务而采取的一种努力 复旦大学计算机科学技术学院 软件工程(第二版)
软件项目管理 • 软件危机后的普遍性结论:软件项目成功率非常低的原因可能是项目管理能力太弱 • 软件项目管理是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内,有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成 复旦大学计算机科学技术学院 软件工程(第二版)
内容摘要 • 软件项目管理概述 • 软件度量 • 软件项目估算 • 项目进度管理 • 风险管理 • 软件项目的组织 • 软件质量管理 • 软件配置管理 • 小结 复旦大学计算机科学技术学院 软件工程(第二版)
内容摘要 • 软件项目管理概述 • 软件度量 • 软件项目估算 • 项目进度管理 • 风险管理 • 软件项目的组织 • 软件质量管理 • 软件配置管理 • 小结 复旦大学计算机科学技术学院 软件工程(第二版)
软件项目管理 • 项目管理是通过项目经理和项目组织的努力,运用系统理论的方法对项目及其资源进行计划、组织、协调、控制,旨在实现项目的特定目标的管理方法体系 • (软件)项目管理的基本内容:项目定义、项目计划、项目执行、项目控制、项目结束 复旦大学计算机科学技术学院 软件工程(第二版)
软件项目管理的关注点(4P) • 人员(People) • 人员是软件工程项目的基本要素和关键因素 • 在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型 • 产品(Product) • 定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等 • 过程(Process) • 通常将项目分解为任务—子任务等,其分解准则是基于软件工程的过程 • 项目(Project) • 采用科学的方法及工具对项目基本内容进行管理 复旦大学计算机科学技术学院 软件工程(第二版)
软件项目管理中的五类人员 • 项目管理人员 • 负责软件项目的管理工作,其负责人通常称为项目经理 • 高级管理人员 • 可以是领域专家,负责提出项目的目标并对业务问题进行定义 • 开发人员 • 掌握了开发一个产品或应用所需的专门技术,可胜任包括需求分析、设计、编码、测试、发布等各种相关的开发岗位 • 客户 • 一组可说明待开发软件的需求的人,也包括与项目目标有关的其他风险承担者 • 最终用户 • 产品或应用提交后与产品/应用进行交互的人 复旦大学计算机科学技术学院 软件工程(第二版)
软件项目管理中的产品 • 定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束 • 目的:从客户的角度定义该产品的总体目标,但不必考虑这些目标如何实现 • 软件范围定义了与软件产品相关的数据、功能和行为,及其相关的约束: • 周境(context):说明待建造的软件与其他相关系统、产品或环境的关系,以及相关的约束条件 • 信息目标:说明目标系统所需要的输入数据及应产生的输出数据 • 功能和性能:说明软件应提供的功能来完成输入数据到输出数据的变换以及给出对目标软件的性能要求 复旦大学计算机科学技术学院 软件工程(第二版)
软件项目方法 • 对项目进行有计划和可控制的管理 • 明确目标及过程:充分理解被解决的问题,明确定义项目目标及软件范围,为项目小组及活动设置明确、现实的目标,并充分发挥相关小组的自主性 • 保持动力:提供激励措施使人员变动最小 • 跟踪进展:对每个任务的进展进行跟踪,并对其软件过程和质量进行度量 • 做出聪明的决策:项目管理者和软件小组的决策应该 “保持其简单” • 项目总结:从每个完成的项目中获取可学习的经验 复旦大学计算机科学技术学院 软件工程(第二版)
选择项目 标识项目的基础设施 标识项目的范围和目的 可行性研究 启动软件项目 建立项目组织 制定项目计划 选择软件过程模型 标识项目的产品和活动 执行计划 项目评审 结束 软件项目管理通用过程 复旦大学计算机科学技术学院 软件工程(第二版)
软件项目启动 • 在软件项目启动前对项目进行可行性分析,以明确项目的目标和范围,从而确定:合理精确的成本分析;实际可行的任务分解;可管理的进度安排 • 在多个项目方案中选择一个相对完善的方案 • 考虑交付期限、预算、个人能力、技术界面等限制条件 • 在正式启动软件项目前组成项目组,并召开项目启动会议,内容包括:项目组的初步交流;进一步对项目目标理解;对组织形式、管理方式、方针的一致认识;明确岗位职责 复旦大学计算机科学技术学院 软件工程(第二版)
项目组织 • 在项目经理领导下,组织不同类型的项目组成员共同协作完成软件项目 • 存在多种可选的项目组织结构,组织结构的选择对项目的成败具有很大影响 • 规划软件工程项目组织结构时考虑如下因素: • 待解决问题的困难程度 • 目标系统的规模,可用代码行或功能点来度量 • 项目组的生存期,即项目小组需要共同工作的时间 • 问题可被分解的程度 • 对目标系统要求的质量和可靠性 • 可供开发时间的紧迫性,即交付时间的严格程度 • 项目组内部的通信的复杂性,即成员(小组)之间正式或非正式通信的机制 复旦大学计算机科学技术学院 软件工程(第二版)
项目计划 • 项目计划是项目组织根据软件项目的目标及范围,对项目实施中进行的各项活动进行周密的计划 • 项目计划根据项目目标确定项目的各项任务、安排任务进度、编制完成任务所需的资源预算等 • 项目计划包括:工作计划、人员组织计划、设备采购计划、变更控制计划、进度控制计划、财务计划、文件控制计划、应急计划等 复旦大学计算机科学技术学院 软件工程(第二版)
软件度量 • 软件度量是指计算机软件范围内的测量,主要是为产品开发的软件过程和产品本身定义相关的测量方法和标度 • 对软件开发过程度量的目的是为了对过程进行改进 • 对产品进行度量的目的是为了提高产品的质量 • 度量的作用是为了有效地采用定量的方式来进行管理 • 管理人员利用度量来了解软件工程过程的执行情况和产品质量 • 需要考虑: • 合适的度量是什么 • 所收集的数据如何使用 • 用于比较个人、过程或产品的度量是否合理 复旦大学计算机科学技术学院 软件工程(第二版)
项目估算 • 项目估算是制定项目计划的基础 • 项目所需的人力(以人月为单位)、项目持续时间(以年份或月份为单位)、成本(以元为单位)等 • 参照以前类似项目中的相关数据进行估算 • 若存在类似历史项目则可进行类比估算 • 若缺少可类比的项目数据则采用特定的估算技术(例如功能点估算方法等) • 通常采用多种估算技术进行交叉检查 复旦大学计算机科学技术学院 软件工程(第二版)
风险管理 • 风险:人员、经费、进度及需求等方面存在的可能影响项目按计划完成的不确定因素 • 风险管理:标识软件项目中的风险,预测风险发生的概率以及风险造成的影响,并对风险进行评估,找出那些可能导致项目失败的风险,然后采取相应的措施来缓解风险 • 风险管理贯彻于整个软件工程过程中 复旦大学计算机科学技术学院 软件工程(第二版)
进度安排 • 进度安排 • 将项目划分成可管理的子项目、任务和活动 • 确定任务之间的依赖关系,找出影响项目按期完成的关键任务 • 为每个任务分配时间、工作量以及指定责任人,定义每个任务的输出结果及其关联的里程碑 • 在项目实施过程中将在进度计划基础上跟踪实际执行情况,从而及时发现偏差并采取措施加以调整以确保项目按期完成 复旦大学计算机科学技术学院 软件工程(第二版)
跟踪与控制 • 跟踪是控制的前提,它实际上是在项目实施过程中对影响项目进展的内外部因素进行及时的、连续的、系统的记录和报告的活动,其核心在于反映项目变化、提供相关信息的报告 • 控制是通过工具和技术对项目计划与实际执行进行对比,并对项目的未来走向进行预测,在此基础上进行项目的各种调整 复旦大学计算机科学技术学院 软件工程(第二版)
软件配置管理 • Software Confignation Management(SCM) • 任务:标识和确定系统中的配置项,在系统整个生命期内控制这些项的发布和变更,记录并报告配置的状态和变更要求,验证配置项的完整性和正确性 • SCM存在于整个软件过程中,是一种保护性活动 复旦大学计算机科学技术学院 软件工程(第二版)
内容摘要 • 软件项目管理概述 • 软件度量 • 软件项目估算 • 项目进度管理 • 风险管理 • 软件项目的组织 • 软件质量管理 • 软件配置管理 • 小结 复旦大学计算机科学技术学院 软件工程(第二版)
术语定义 参照GB/T 16260.1-2006《产品质量:质量模型》 GB/T 25000.1《软件产品质量要求与评价:SQuaRE指南》 • Metric(度量):定义测量方法和测量标度 • Measurement(测量):使用一种度量,把标度值(可以是数字或类别)赋予实体的某个属性 • Measure(verb 测量):进行一次测量(measurement) • Measure(noun 测度):作为测量结果被赋予值的变量 • direct measure(直接测量):不依赖于任何其他属性测量的一种属性测量 • indirect measure(间接测量):从一个或一个以上其他属性的测量导出的一种属性测量 • internal measure(内部测量):产品本身的一种直接或间接的测量 • external measure(外部测量):通过系统行为的测量导出的产品(作为系统的一部分)的一种间接测量 复旦大学计算机科学技术学院 软件工程(第二版)
软件度量 • 度量对象:软件产品、软件过程、资源 • 外部属性:面向管理者和用户的属性 • 体现了软件产品/软件过程与相关资源和环境的关系,如成本、效益、开发人员的生产率 • 通常可采用直接测量的办法进行 • 内部属性:软件产品或过程本身的属性 • 如软件产品的结构、模块化程度、复杂性、程序长度等 • 有些内部属性只能用间接测量的方法度量,需要特定的测量方法或模型 复旦大学计算机科学技术学院 软件工程(第二版)
软件度量分类 • 分类1: • 面向规模的度量用于收集与软件规模有关的软件工程输出信息和质量信息 • 面向功能的度量则集中在程序的“功能性”和“实用性” • 面向人的度量则收集有关人们开发计算机软件所用方式的信息和人员理解有关工具的方法和效率的信息 • 分类2: • 软件生产率度量主要关注于软件工程活动的制品 • 软件质量度量可指明软件满足明确的和隐含的用户需求的程度 • 技术度量主要集中在软件产品的某些特征(如逻辑复杂性、模块化程度)上,而不是软件开发的全过程 复旦大学计算机科学技术学院 软件工程(第二版)
面向规模的度量 • 软件规模通常是指软件的大小(size),一般用代码行度量 • 优点:方便、直观 • 缺点:很大程度上取决于程序设计语言以及软件设计的质量 • 测量出软件规模后可方便地度量其他软件属性,包括: 复旦大学计算机科学技术学院 软件工程(第二版)
面向功能的度量 • 一种针对软件的功能特性进行度量的方法 • 主要考虑软件系统的“功能性”和“实用性” • 功能点度量:基于软件信息域的特征(可直接测量)和软件复杂性进行规模度量 • 功能点度量方法步骤: • 计算信息域特征的值CT • 计算复杂度调整值 • 计算功能点FP 复旦大学计算机科学技术学院 软件工程(第二版)
计算信息域特征的值CT 对五个信息域特征及其含义(上表)统计相应的特征值,然后根据信息域特征的复杂程度选择适当的加权因子进行计算(下表),得到总计的CT值 复旦大学计算机科学技术学院 软件工程(第二版)
计算复杂度调整值 复杂度调整值Fi(i=1到14)是基于对左表中问题的回答而得到的值,对每个问题回答的取值范围是0到5,见右表 复旦大学计算机科学技术学院 软件工程(第二版)
计算功能点FP • 功能点计算公式FP= CT*(0.65+0.01*F) • 其中:CT是步骤1得到的“总计数值”,F是步骤2得到的Fi之和 • 一旦计算出功能点,则用类似代码行的方法来计算软件生产率、质量及其他属性 复旦大学计算机科学技术学院 软件工程(第二版)
扩展的功能点度量 • 功能点度量的不足:最初主要用于商业信息系统的度量,强调数据维,即信息域特征值,而忽略了功能和行为(控制) • Jones提出了称为特征点(Feature Point)的扩展的功能点度量方法 • 在功能点信息域特征中增加了一个算法特征,并将算法定义为“特定计算机程序中所包含的一个界定的计算问题” 复旦大学计算机科学技术学院 软件工程(第二版)
功能点与LOC的换算(部分) 复旦大学计算机科学技术学院 软件工程(第二版)
软件质量模型 • 软件质量定义 • GB/T25000.1-2010《软件产品质量要求与评价(SquaRE)- SquaRE指南》中将软件质量定义为:在规定条件下使用时,软件产品满足明确或隐含要求的能力。 • 典型的软件质量模型 • McCall模型 • GB/T 16260质量模型 • ISO/IEC25010质量模型 复旦大学计算机科学技术学院 软件工程(第二版)
McCall模型 质量要素反映软件的质量,决定产品质量的软件属性用作评价准则,量化的度量体系可测量软件质量属性的优劣 复旦大学计算机科学技术学院 软件工程(第二版)
McCall软件质量要素 • 软件产品的运行、修改和迁移三个方面 • 11个软件质量要素 复旦大学计算机科学技术学院 软件工程(第二版)
McCall软件质量要素定义 • 正确性(correctness):一个程序满足它的需求规约和实现客户任务目标的程度 • 可靠性(reliability):一个程序期望以所需的精确度完成它的预期功能的程度 • 效率(efficiency):一个程序完成其功能所需的计算资源和代码的数量 • 完整性(integrity):对未授权人员访问软件或数据的可控制程度 • 可用性(usability):学习、操作、准备输入和解释程序输出所需的工作量 • 可维护性(maintainability):定位和修复程序中一个错误所需的工作量 • 灵活性(flexibility):修改一个运作的程序所需的工作量 • 可测试性(testability):测试一个程序以确保它完成所期望的功能所需的工作量 • 可移植性(portability):把一个程序从一个硬件和/或软件系统环境移植到另一个所需的工作量 • 可复用性(reusability):一个程序(或一个程序的部分)可以在另外一个应用程序中复用的程度,与程序完成的功能的包装和范围相关 • 可互操作性(interoperability):连接一个系统和另一个系统所需的工作量。 复旦大学计算机科学技术学院 软件工程(第二版)
质量要素之间的关系 其中△表示正相关,▼表示负相关 复旦大学计算机科学技术学院 软件工程(第二版)
软件质量要素评价准则 • 软件质量要素难以直接测量,因此需要为每个质量要素定义一组软件质量属性用作质量要素的评价准则,要求 • 能够完整、准确地描述软件质量要素 • 容易量化和测量 • McCall定义了21种软件质量属性 复旦大学计算机科学技术学院 软件工程(第二版)
软件质量要素评价准则-1 (1)可审计性(auditability) 和标准的符合性可被检查的容易程度。 (2)准确性(accuracy) 计算和控制的准确度。 (3)通信共性(communication commonality) 标准接口、协议和带宽的使用程度。 (4)完备性(completeness) 所需功能完全实现的程度。 (5)简洁性(conciseness) 以代码行数来评价的程序的简洁程度。 (6)一致性(consistency) 在软件开发项目中一致的设计和文档技术的使用。 (7)数据共性(data commonality) 在整个程序中对标准数据结构和类型的使用。 复旦大学计算机科学技术学院 软件工程(第二版)
软件质量要素评价准则-2 (8)容错性(error tolerance) 当程序遇到错误时所造成的损失。 (9)执行效率(execution efficiency) 一个程序的运行性能。 (10)可扩展性(expandability) 结构、数据或过程设计可被扩展的程度。 (11)通用性(generality) 程序构件潜在的应用宽度。 (12)硬件独立性(hardware independence) 软件独立于其运行于之上的硬件的程度。 (13)自检测性(instrumentation) 程序监视它自身操作并且标识产生的错误的程度。 (14)模块性(modularity) 程序部件的功能独立性。 复旦大学计算机科学技术学院 软件工程(第二版)
软件质量要素评价准则-3 (15)可操作性(operability) 程序操作的容易度。 (16)安全性(security) 控制和保护程序和数据的机制的可用度。 (17)自文档性(self-documentation) 源代码提供有意义的文档程度。 (18)简单性(simplicity) 一个程序可以没有困难地被理解的程度。 (19)软件系统独立性(software system independence) 程序独立于非标准编程特性、操作系统特性和其他环境限制的程度。 (20)可追踪性(traceability) 从一个设计表示或实际程序部件跟踪到需求的能力。 (21)易培训性(training) 软件支持使得新用户使用系统的能力。 复旦大学计算机科学技术学院 软件工程(第二版)
质量要素与评价准则的关系 复旦大学计算机科学技术学院 软件工程(第二版)
量化的度量 • 处于软件质量度量模型的最底层是 • 定义了每个质量属性(评价准则)的可量化的度量指标 • 通过对这些指标的测量(可以是主观的,也可以是客观的)和加权计算得到质量属性的测量值 • 在McCall的模型中未给出具体的度量指标,度量者可根据不同的软件类型定义不同的度量指标体系 复旦大学计算机科学技术学院 软件工程(第二版)
质量要素值的计算 在计算质量要素值之前,首先要将质量属性的测量值归一化,即将其变换到0到1范围内的实数 假设:Fj是第j个质量要素,Mk是第k个质量属性(评价准则),Cjk是Mk在Fj中的加权系数。那么,Fj可用下列公式计算: , 其中: 当 时表示第j个质量要素与第k个质量属性无关 复旦大学计算机科学技术学院 软件工程(第二版)
GB/T 16260质量模型 • GB/T 16260.1《产品质量第1部分:质量模型》是参照ISO/IEC 9126-2001制定的国家标准 • 由质量特性、子特性和度量三个层次组成 • 两种模型: • 内部质量和外部质量的模型 • 使用质量的模型 复旦大学计算机科学技术学院 软件工程(第二版)
内部质量、外部质量、使用质量 • 内部质量(internal quality)是基于内部视角的软件产品特性的总体。即软件产品本身的质量,这些质量属性能反映软件产品在特定条件下使用时满足明确和隐含需要的能力 • 外部质量(external quality)是基于外部视角的软件产品特性的总体。即软件产品作为计算机系统的一个组成部分,反映系统在特定条件下使用时,软件产品使得系统的行为能满足明确和隐含需要的能力 • 使用质量(quality in ues)是基于用户观点的软件产品用于指定的环境和使用周境时的质量。即在特定的使用周境中,软件产品使得特定用户在达到有效性、生产率、安全性和满意度等方面的特定目标的能力 复旦大学计算机科学技术学院 软件工程(第二版)
外部和内部质量的质量特性与子特性-1 ⑴ 功能性(functionality) 当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。包括如下子特性 • 适合性(suitability):软件产品为指定的任务和用户目标提供一组合适的功能的能力 • 准确性(accuracy):软件产品提供具有所需精度的正确或相符的结果或效果的能力 • 互操作性(interoperability):软件产品与一个或更多的规定系统进行交互的能力 • 安全保密性(security):软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问 • 功能性的依从性(functionality compliance):软件产品遵循与功能性相关的标准、约定或法规以及类似规定的能力 复旦大学计算机科学技术学院 软件工程(第二版)
外部和内部质量的质量特性与子特性-2 ⑵ 可靠性(reliability) 在指定条件下使用时,软件产品维持规定的性能级别的能力。包括如下子特性 • 成熟性(maturity):软件产品为避免由软件中故障而导致失效的能力 • 容错性(fault tolerance):在软件出现故障或者违反其指定接口的情况下,软件产品维持规定的性能级别的能力 • 易恢复性(recoverability):在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力 • 可靠性的依从性(reliability compliance):软件产品遵循与可靠性相关的标准、约定或法规的能力 复旦大学计算机科学技术学院 软件工程(第二版)
外部和内部质量的质量特性与子特性-3 ⑶ 易用性(usability) 在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。包括如下子特性 • 易理解性(understandability):软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用条件的能力 • 易学性(learnability):软件产品使用户能学习其应用的能力 • 易操作性(operability):软件产品使用户能操作和控制它的能力 • 吸引性(attractiveness):软件产品吸引用户的能力 • 易用性的依从性(usability compliance):软件产品遵循与易用性相关的标准、约定、风格指南或法规的能力 复旦大学计算机科学技术学院 软件工程(第二版)
外部和内部质量的质量特性与子特性-4 ⑷ 效率(efficiency) 在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。包括如下子特性 • 时间特性(time behaviour):在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力 • 资源利用性(resource utilisation):在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力 • 效率依从性(efficiency compliance):软件产品遵循与效率相关的标准或约定的能力 复旦大学计算机科学技术学院 软件工程(第二版)
外部和内部质量的质量特性与子特性-5 ⑸ 可维护性(maintainability) 软件产品可被修改的能力。修改可能包括纠正、改进或软件对环境、需求和功能规格说明变化的适应。包括如下子特性 • 易分析性(analysability):软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力 • 易改变性(changeability):软件产品使指定的修改可以被实现的能力 • 稳定性(stability):软件产品避免由于软件修改而造成意外结果的能力 • 易测试性(testability):软件产品使已修改软件能被确认的能力 • 维护性的依从性(maintainability compliance):软件产品遵循与维护性相关的标准或约定的能力 复旦大学计算机科学技术学院 软件工程(第二版)