六盘水师范学院孙新杰1第2章软件项目管理软件项目管理的概念软件度量软件进度安排与跟踪软件质量项目计划项目管理软件配置管理六盘水师范学院孙新杰22.1软件项目管理的概念•项目:以一套独特而相互联系的任务为前提,有效的利用资源,为实现一个特定目标所作的工作。项目的成功受以下几个因素的制约:技术范围、成本、进度、用户满意度、人员等。•项目管理的职责:确保项目目标的实现,即在预算内按时完成质量合格的产品。•软件项目管理:是对传统项目管理进行软件工程化的一种扩展与拓延,是它在软件工程的任何技术活动之前开始,并持续贯穿于整个软件定义、开发和支持阶段的庇护性活动,是决定一个产品或项目能否成功最重要的指标之一。六盘水师范学院孙新杰34个P(People、Product、Process、Project)对软件项目管理有实质性的影响:人员必须被组织成有效的开发团队。产品需求被划分成较小的组成部分,便于分配给软件开发小组。开发过程应根据人员和产品选择合适的开发模型。项目必须被组织成便于控制和管理的方式,使有计划的进行。六盘水师范学院孙新杰4◆人员:人员是一个成功软件项目中最重要的因素。可分为5类:⑴高级管理者:负责定义业务问题,影响着项目。⑵技术管理者:组织、激励和控制开发人员。⑶开发人员:负责开发一个产品或应用所需的技术。⑷客户(customer):负责说明待开发的软件需求。⑸最终用户(user):直接使用发布的软件。六盘水师范学院孙新杰5每一个软件项目都有上述的人员参与。必须被组织成有效的小组,最大限度的发辉每个人的技术和能力,激励他们进行高质量的工作,并协调他们实现有效的通信。Constantine提出4个“组织范型”:(1)封闭式范型:传统的控制层次,垂直通信,难以创新。(2)随机式范型:小组管理较松散,依赖于成员个人的主动性。不适合“有次序地完成”。(3)开放式范型:具有封闭式范型的控制性,又包含随机式范型的创新性。适合于解决复杂问题。可能不像其他类型小组那么有效率。(4)同步式范型:依赖于问题的自然划分,小组成员各自解决问题的独立部分。主动通信差。建立一个有凝聚力的小组,要有团队精神。六盘水师范学院孙新杰6◆产品:进行项目计划之前,应该首先定义产品的目的和范围,考虑可选的解决方案,标识技术和管理的约束。无这些信息,就不可能进行合理的、准确的成本估算、有效的风险评估、适当的项目任务划分、可管理的项目进度安排。“目的”指从用户的角度标识出该产品的总体目标而不考虑这些目标如何实现。“范围”指标识出与产品相关的主要数据、功能和行为。确定了目的和范围,就可以根据产品交付的期限、预算的限制、可用的人员、技术接口及各种其他因素,选择最好的解决方案途径。六盘水师范学院孙新杰7◆过程根据以下条件选择一个合适的软件过程模型:⑴开发人员及需要该产品的用户⑵产品本身的特征⑶项目组的工作环境采用如下的框架活动集合:客户交流、计划、风险分析、工程实施、构造及发布、用户评估。这些活动可被修改以适应不同软件项目的特征和项目组的需求。每个活动可被分解为更详细的工作任务。如客户交流活动可能需要下列任务:六盘水师范学院孙新杰8⑴列出需要澄清问题的清单⑵安排与用户进行讨论的会议⑶评审用户要求及范围的陈述⑷研究推荐的解决方案⑸为正式的会议准备工作文档⑹共同制订能反映软件的数据、功能和行为特征的规约,形成软件范围的文档⑺评审文档⑻根据需求修改文档……庇护性活动贯穿于整个过程。六盘水师范学院孙新杰9◆项目有计划的控制软件项目,Boehm提出了一种方法,强调项目目标、里程碑、进度、责任、管理和技术方法以及需要的资源,称之为W5H2原则。通过下面一系列的提问和回答,可以导出项目的关键特征并产生项目计划的大纲:⑴为什么(Why)该系统被开发?值得吗?⑵将做什么(What)?什么时候(When)做?建立项目进度,标识关键的项目任务和里程碑。⑶某功能由谁(Who)负责?开发人员的角色和责任。⑷哪里需要(Where)?客户、用户和其他投资者也有责任。⑸工作将如何(How)进行?定义项目的管理和技术策略。⑹资源需要多少(Howmuch)?六盘水师范学院孙新杰10软件项目管理中的主要元素及之间的关系开发人员、小组、角色、任务、工作产品、进度表(UML类图)之间的关系六盘水师范学院孙新杰11软件项目管理的主要内容:•定义问题(确定新系统的作用域-目标)•确认项目的可行性•建立项目的进度计划•建立项目的质量保证体系•建立项目配置管理体系和准则•项目版本变更管理•跟踪、监控项目的进展•风险管理•团队建设(人员管理,包括绩效评估等)六盘水师范学院孙新杰122.2可行性研究1、可行性研究的任务和目的GB8566-88《计算机软件开发规范》中指出:可行性研究的主要任务是了解客户的要求及现实环境,从技术、经济和社会因素等方面研究并论证本软件项目的可行性,编写可行性研究报告供项目管理人员评审,以便作出是否开发软件项目的决策。六盘水师范学院孙新杰13◆技术可行性度量一个系统解决方案的实用性及技术资源的可用性。考虑的问题:(1)开发风险分析(2)资源分析(3)相关技术的发展(现有技术能否实现新系统、技术难点、建议采用技术的先进性)六盘水师范学院孙新杰14◆经济可行性主要内容:成本/效益分析不可能得到精确的分析结果․系统成本:①软件开发费用②购置并安装软硬件机有关设备的费用估算③系统安装、运行和维护费用④人员培训费用․系统效益包括经济效益和社会效益经济效益:可通过直接的或统计的方法估算社会效益:定性的方法估算六盘水师范学院孙新杰15◆社会因素可行性政策、法律、使用、环境等2、可行性研究的步骤(1)复查确认系统目标、规模(2)研究现行系统的工作流程(3)导出目标系统高层逻辑模型(4)导出和评价供选择的方案(5)推荐可行的方案(6)编写可行性研究报告,送审六盘水师范学院孙新杰163、可行性研究报告的编写提示(1)引言:编写目的、背景、定义、参考资料;(2)可行性研究的前提:要求、目标、条件、假定和限制、进行可行性研究的方法、评价尺度;(3)对现有系统的分析:工作流程、工作负荷、费用开支、人员、设备、局限性;(4)所建议的系统:说明、数据流程和处理流程、改进之处、影响、局限性、技术条件的可行性;(5)可选择的其它系统方案;(6)投资及收益分析:支出、收益、收益/投资比、投资回收期等;(7)社会条件方面的可行性(法律、使用)。六盘水师范学院孙新杰17例:一个软件系统的开发费用(一次):人员:2名系统分析员(450小时/名,45美元/小时)$40,5005名系统开发人员(275小时/名,36美元/小时)$49,5001名数据通讯专家(60小时/名,42美元/小时)$2,5201名数据库管理员(30小时/名,42美元/小时)$1,2602名技术写作者(120小时/名,25美元/小时)$6,0001名秘书(160小时/名,15美元/小时)$2,4002名在转换期间数据输入人员$960(40小时/名,12美元/小时)六盘水师范学院孙新杰18培训:三天的开发人员内部培训课程$7,00030个用户,三天的内部培训课程$10,000复印$500磁盘、纸张等消耗品$650购买硬件、软件:20台工作站Windows软件$1,00020台工作站内存升级$8,000网络软件$17,50020台工作站办公软件产品$20,000系统开发总费用$167,790(成本)六盘水师范学院孙新杰19一个系统的年运行费用(每年):人员:维护程序员/分析员(250小时/年,42美元/小时)$10,500网络管理员(300小时/年,50美元/小时)$15,000购买硬件、软件升级:硬件$5,000软件$6,000物资和杂项$3,500每年总运行费用$40,000六盘水师范学院孙新杰202.3软件度量软件度量(metrics)域分为过程度量、项目度量和产品度量。对过程、项目及产品的特定属性进行度量产生指导管理及技术动作的指标,使得管理者和开发者能够:•改善软件过程•辅助软件项目计划•跟踪及控制软件项目的进展•评价软件产品的质量六盘水师范学院孙新杰21软件度量的方式:直接度量间接度量•软件工程过程的直接度量包括所投入的成本和工作量。•软件产品的直接度量包括产生的代码行数(LOC)、执行速度、存储量大小、在某种时间周期中所报告的错误数。•软件产品的间接度量包括功能性、复杂性、效率、可靠性、可维护性和许多其它的质量特性。六盘水师范学院孙新杰221.过程和项目的度量◆过程度量:使一个组织从战略上考察已有过程的功效,如开发范型、工程任务的划分、工作产品、里程碑等,使管理者评估那些部分起了作用。度量数据的收集跨越所有的项目,经历较长的时间,目的是改善软件过程。间接的度量一个软件过程的功效:•软件发布之前发现的错误数•交付给用户后报告的缺陷数•花费的工作量、时间、成本•与进度计划是否一致六盘水师范学院孙新杰23个体软件过程(如PSP)提供了表格、脚本、标准以帮助开发人员估算、计划以及度量、跟踪自己工作的方法。过程度量对于一个组织(如企业)提高其总体的过程成熟度能提供很大的帮助。如一个产品中,需求规约缺陷占了25.5%,原因如图所示。通过分析一个完整的鱼骨图可以导出能改进软件过程以降低错误和缺陷率的频率。六盘水师范学院孙新杰24◆项目度量:是战术的,使项目管理者能够以实时的方式改进项目的工作流程及技术方法,如软件项目的工作量及时间的估算。项目度量的基础是历史项目中收集的数据。随着项目的进展,所花费的工作量及时间和预算的值进行比较,从而控制项目的进展。另外,可根据文档的页数、评审的时间、功能点及源代码行数来度量软件的生产率。六盘水师范学院孙新杰25项目度量可在项目进行的基础上评估产品的质量,以指导在必要时修改技术方法以改进质量。软件项目度量建议每个项目都应该测量:•输入:完成工作所需要的资源(如人员、环境);•输出:软件工程过程中产生的工作产品;•结果:最终产品的有效性。项目度量集成起来产生对整个软件组织公用的过程度量。六盘水师范学院孙新杰262.软件度量的方法(1)面向规模的度量是对软件和软件开发过程的直接度量。可以建立一个面向规模的数据表格来记录项目的某些信息。该表格列出了在过去几年完成的每一个软件开发项目和关于这些项目的相应面向规模的数据。六盘水师范学院孙新杰27基于所生产软件的“规模”,使用代码行作为其他计算的规范化因子。计算:•每千行代码(KLOC)的错误数。•每KLOC的缺陷数。•每个LOC的花费成本。•每KLOC的文档页数•每人月的错误数。•每人月的代码行。•每页文档的成本。六盘水师范学院孙新杰28可制作一个如下的表:对该方法的有效性有争议:支持:易计算,很多软件估算模型以它为关键的输入。反对:LOC依赖于语言,不适用于非过程化语言,在分析与设计完成之前难以估算。项目名KLOC工作量(人月)成本(万元)文档页数错误缺陷人员BETA1236101556085六盘水师范学院孙新杰29(2)面向功能的度量“功能”不能直接测量,利用其他的测量数据间接地导出。Albrecht提出来的一种称为功能点的度量。用下表计算5个信息域的值:六盘水师范学院孙新杰30其中:•用户输入数:每个用户向系统提供的不同应用的输入数据。•用户输出数:系统向每个用户提供的信息,如报表、屏幕信息、出错信息等。•用户查询数:每个不同的询问/响应的交互操作。•文件数:可以是数据库的一部分或是一个独立的文件。•外部接口数:与系统中其他设备通过外部接口读写信息的次数。“简单、平均、复杂”中的常量值是加权因子,根据经验确定。六盘水师范学院孙新杰31利用以下公式计算功能点(FP):FP=总计数值×(0.65+0.01×Fi)其中Fi(i=1~14)是回答14个方面问题而得到的复杂度调整值(值域为0~5),如输入、输出、查询及内部处理复杂吗?代码复用吗?有分布处理吗等等计算出功能点。就可进行以下度量:•每个功能点的错误数。•每个功能点的缺陷数。•每个功能点的成本。•每个功能点的文档页数。•每人