910 likes | 1.12k Views
软件工程. 周志钊 zhouzhizhao08@163.com. 预算. 计 划. 进 度. 标 准. 组 织. 软件项目管理. 经理管什么?. 软件项目管理. 项目的定义 : 项目是在一定的组织机构内,在限定的资源条件下,在计划的时间里,按满足一定性能、质量和数量的要求去完成的一次性任务。. 软件项目管理. 项目管理的定义: 项目管理就是为实现项目目标,有效地组织和利用各种资源,严格地控制项目进度,以满足用户及有关方面需求的管理工作的总称。 具体而言,项目管理就是将知识、技能、工具和技术应用于项目活动,以满足项目的需求。. 软件项目管理.
E N D
软件工程 周志钊 zhouzhizhao08@163.com
预算 计 划 进 度 标 准 组 织 软件项目管理 经理管什么?
软件项目管理 • 项目的定义: 项目是在一定的组织机构内,在限定的资源条件下,在计划的时间里,按满足一定性能、质量和数量的要求去完成的一次性任务。
软件项目管理 • 项目管理的定义: 项目管理就是为实现项目目标,有效地组织和利用各种资源,严格地控制项目进度,以满足用户及有关方面需求的管理工作的总称。 具体而言,项目管理就是将知识、技能、工具和技术应用于项目活动,以满足项目的需求。
软件项目管理 • 软件项目管理必须从项目的开头介入,并贯穿于整个软件生存周期的全过程。 • 软件项目管理的范围主要集中于3个P上,即:People(人员)、Problem(问题)和Process(过程)。 • 软件项目管理的主要任务是: • 根据选定的软件开发过程框架(即软件开发模型)和对其估算的结果制定软件项目实施计划;再根据计划对人员进行组织、分工;按照计划的进度,以及成本管理、风险管理、质量管理的要求,控制并管理软件开发和维护的活动,最终以最小的代价完成软件项目规定的全部任务。
估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用。估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用。 成本管理 制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进行评审,对最终软件产品进行确认,确保软件质量。 质量管理 制定配置管理计划,对程序、数据、文档的各种版本进行管理,确保软件的完整性和一致性。 配置管理 软件项目管理 • 软件项目的成本管理、软件质量管理和软件配置管理有一定的特殊性和独立性,可单独立项。任务分别是:
产品 过程 资源 指软件开发过程得到的文档和程序,如:需求规格说明、设计规格说明、源代码、测试报告等 与软件项目有关的活动,如软件项目计划、开发活动、维护活动、管理活动等 进行软件项目所需要的各种支持,如人力、经费、方法、工具、软硬件环境等 软件项目管理的对象
软件度量 • 要进行软件开发项目的控制、管理,必须要有量化的参数指标。 • 软件度量是软件产品、软件开发过程及自愿简单属性的定量描述。如程序规模、操作符个数、程序中错误的个数等。 • 面向规模的度量 • 面向功能的度量
为什么要对软件进行度量 ① 表明软件产品的质量; ②弄清软件开发人员的生产率; ③ 给出使用了新的软件工程方法和工具所得到的(在生产率和质量两方面)的效益; ④ 建立项目估算的“基线”; ⑤ 帮助调整对新的工具和附加培训的要求。
面向规模的度量 • 面向规模的度量是以软件的代码行(LOC,Line of Code)数为基础的直接度量。 • L表示软件的代码行数,单位为KLOC(千行代码)或LOC; • E表示开发软件所需工作量,单位为人月(PM)或人年(PY); • S表示软件成本,单位为美元或元; • N表示错误个数; • Pd表示软件文档页数; • M表示开发所用的人数。
面向规模的度量 1.软件开发的生产率P: P = L / E 2.开发每行代码的平均成本C: C = S / L 3.代码出错率EQR: EQR = N / L 4.软件的文档率D: D = Pd / L
面向规模的度量 • 【例2.1】已知有一个国外典型的软件项目的记录,开发人员M=6人,其代码行数=20.2KLOC,工作量E=43PM,成本S=314000美元,错误数N=64,文档页数Pd=1050页。试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。 解:根据给出的已知数据,可得: P = L / E =20.2 KLOC /43 PM = 0.47 KLOC / PM = 470 LOC / PM C = S / L = 314000美元 / 20.2 KLOC = 15.54 美元 / LOC EQR = N / L = 64个 / 20.2KLOC = 3.17 个 / KLOC D = Pd / L = 1050 页 / 20.2 KLOC = 51.98 页 / KLOC
面向规模的度量 • 优点:简单、直接。 • 缺点:①代码行数的估算依赖于程序设计语言的功能和表达能力。 ②对设计精巧的软件项目产生不利影响。 ③在开发初期估算代码行十分困难。 ④只适用于过程式程序设计语言。
面向功能的度量 1.简单功能点度量 1979年,Albrecht首先提出了功能点度量方法。这是一种面向功能的间接度量方法,即从软件定义的基本功能出发,来估算软件系统的规模。因此,该方法可以在软件开发项目的初期,在软件定义过程中即可预测待开发软件的规模。
面向功能的度量 • 功能点(Function Point, FP)的度量公式如下: • FP = CT×TCF = CT [0.65 + 0.01∑F i ] • 其中: • CT——基本功能点。 • CT值按表3-1来计算,它的值为5个参数加权值的总和。 14 i=1
面向功能的度量 1)用户输入数:用户为软件系统提供的输入参数的个 数(不包括查询); 2)用户输出数:软件为用户提供的输出参数(报告、 屏幕帧、错误信息等)的个数; 3)用户查询数:一次输入导致软件以输出方 式实时产生某种即时响应的个数; 4)文件数: 逻辑主文件的个数; 5)外部接口数:机器可读的接口(如磁盘或磁带上的 数据文件等)的个数。
面向功能的度量 在FP度量公式中: TCF——技术复杂性调节因子。 0.65和0.01——经验数据。 Fi(i=1,2,…,14)——复杂性调节值。 Fi所代表的因素如表3-2所示,每个Fi可根据实 际情况取0、1、2、3、4、5中的一个值。 其中:0—没有影响、1—偶然的、2—适中、 3—普通、4—重要、5—极重要的影响。 TCF取值范围:0.65 ~ 1.35。
面向功能的度量 2.功能点度量 • 简单功能点度量方法没有直接考虑软件本身的算法的复杂性问题。所以它仅适用于度量算法简单的事务处理等系统。 • 1986年Jones对简单功能点度量进行了推广,在计算软件系统的基本功能点CT时,引入了算法复杂性因素,即使用表3-1计算CT 。我们称这种推广的度量方法为功能点度量。
面向功能的度量 • 用功能点计算软件项目的有关参考量: 1)生产率P(平均每人月开发的功能点数,以功 能点 / PM为单位): P = FP / E 2)平均成本C(以美元/功能点或元/功能点为单位): C = S / FP
面向功能的度量 3)代码出错率EQR(即每功能点的平均错误 数,以个/功能点为单位)为: EQR = N / FP 4)软件的文档率D(即平均每功能点的文档 页数,以页/功能点为单位)为: D = Pd / FP
面向功能的度量 3.功能点度量方法的优缺点 优点: ①可用于软件项目开发的初期阶段的项目估 算。因为在可行性研究和需求分析阶段已 能基本确定输入、输出等各个参考量; ②与程序设计语言无关。适合于过程或非过 程式语言。 缺点: ①某些参考量的收集有一定困难; ②度量值的主观因素较多,如Fi取值; ③功能点FP本身没有直观的物理意义。
面向功能的度量 4.软件的代码行与功能点的关系 软件的功能点数和选用的程序设计语言无关,但对于同一个软件(功能点数已定),如用不同的程序设计语言来实现,所得到的软件的代码行数可能会有较大差别。Albrecht等人通过多个软件统计出了用不同程序设计语言实现每个功能点所需代码行数,即计算出各语言的LOC/FP的平均值,如下表所示。
软件项目工作量估算 • 常用的软件项目的估算方法主要有以下4种 1.自顶向下的估算方法 2.自底向上的估算方法 3.差别估算法 4.根据经验估算公式
自顶向下的估算 • 基本思想:首先根据已完成项目的总成本或总工作量来推算待开发软件的总成本或总工作量,然后再按比例将其分配到各开发任务中去。即从整体到局部。 • 优点:估算工作量小、速度快。 • 缺点:对项目中的特殊困难估计不足,有可能产生遗漏,估算出的值盲目性较大。
自顶向下的估算 • 【例2.2】由过去已完成的项目的工作量,估算出“软件库存情况更新”项目的总工作量为53。然后将其按比例分配到各个阶段,如下表所示。从中可以看出软件开发各阶段工作量的分配情况。
自底向上的估算 • 基本思想是:把待开发软件细分,直到每一个子任务或阶段都已经明确所需要的开发工作量或成本,然后再把它们累加起来,得到待开发软件的总工作量或总成本。 • 优点:计算各个部分的准确性较高。 • 缺点:缺少各个子任务之间相互联系的工作量和系统工作量(如项目管理、配置管理、质量管理),估算值往往偏低,必须用其他方法进行校正。
差别估算法 • 基本思想:把待开发的软件项目与过去完成的软件项目进行比较,从各子任务中区分出类似的和不同的部分。类似的部分按已知的实际量计算,不同的部分则采用某种方法进行估算。差别估算法综合了以上两种方法的优点。 • 优点:估算的准确程度高。 • 缺点:不容易划分相似的界限。
经验估算公式法 • 通过众多实际软件项目的经验,总结出一些有价值的软件成本和工作量估算的经验模型。这些模型对于软件项目管理具有一定的指导意义和验证效果。
经验估算公式法 • 利用前面介绍的方法或凭实际经验,对每个功能分别按代码行或功能点的乐观值a、一般值m和悲观值b,并用如下的加权平均公式计算LOC或FP的期望值(expectation): X =( a +4 m +b)/ 6 软件的LOC或FP的期望值估算出来后,就可以根据已有的标准生产率对成本和工作量等进行估算了。
成本和工作量估算 • 【例2.3】对CAD软件项目进行估算。 采用自底向上的估算方法。即首先,将CAD项目按功能分解为7个子项目,并估算出每个子项目LOC的乐观值a、一般值m和悲观值b,由此可估算出每个子项目的代码行的期望值X。再根据已知的开发类似子项目的生产率P和平均成本C即可估算出每一个子项目的成本和工作量,最后将7个子项目的成本和工作量分别累加,即可估算出软件项目的总成本S和总工作量E。估算的各种值如下表所示。
软件项目的经验估算模型 1.IBM模型——IBM公司对软件项目的 数据利用最小二乘法拟合,得到的经验估算公式: E = 5.2 × L0.91 D=4.1×L0.36 = 2.136× E0. 3956 S = 0.54 × E0.6 DOC = 49 × L1.01 E为工作量(PM);L为源代码行数( KLOC ); D为项目持续的时间,以月为单位; S为人员需要量(人);DOC为文档数量(页)。
软件工作量经验估算模型 2. Putnam模型——Putnam提出了大型软件项目的动态多变量估算模型。 该模型以工作量在30人年以上的大型软件项目的实测数据为依据。 它是动态多变量模型,适用于软件开发的各个阶段。 大型软件项目的开发工作量分布可以用Rayleigh-Norden曲线表示。
软件项目的工作量分布曲线 工作量 (人年) 系统定义、需求分析 开 发 运行维护 总工作量 测试和确认 设计编码 维护 功能设计 规格说明 系统定义 管理 0 td 时间t(年) 开发占总工作量的40% 维护占总工作量的60%
由Rayleigh-Norden曲线可以导出一个“软件方程” • td是开发持续时间 (年), K是软件开发与维护在内的整个生存期所花费的工作量 (人年),L是源代码行数 (LOC),Ck是技术状态常数,因开发环境而异。
Putnam模型 • Putnam估算模型如下: L = Ck E1/3 td 4/3 E = L3 / (Ck3 td4) Ck为技术状态常数,与开发环境有关,如下: 2000 较差,没有方法学的支持,缺乏文档 和评审,采用批处理方式; Ck= 8000 一般,有方法学的支持,有适当的文 档和评审,采用交互执行方式; 11000 较好,有集成化的CASE工具和环境。
Putnam模型的优缺点 • 优点:揭示了软件项目的源程序代码长度、 软件开发时间和工作量三者之间的关系,在理论上有重要意义。 • 缺点: 没有反映软件产品、项目、参加人员、软硬件资源等属性。
软件项目的经验估算模型 3.CoCoMo模型(Constructive Cost Model 构造性成本模型) • CoCoMo模型按其详细程度分三个层次: 基本CoCoMo模型; 中间CoCoMo模型; 详细CoCoMo模型。
(1)基本CoCoMo模型 • 其工作量和开发时间的估算公式如下: E = a Lb D = c Ed • 其中: L ——软件代码行的估算值(以KLOC计); E ——工作量(以PM计); D——开发时间(以月计); a、b、c、d——经验常数。
(2)中间CoCoMo模型 • 中间CoCoMo模型在估算工作量时,在基本CoCoMo模型的基础上再乘以由15个因素组成的工作量调节因子EAF,于是有: • E = a Lb EAF = a Lb ∏ F i • 其中: • L ——软件的代码行数(以KLOC计); • E ——工作量(以PM计); • a、b ——经验常数; 15 i=1