您好,欢迎访问三七文档
第9章软件工程管理软件工程管理概述软件规模估算进度计划人员组织软件配置管理软件质量保证软件工程标准与软件文档软件工程管理概述1.软件产品的特点软件是逻辑产品,具有高度的抽象性同一功能的软件可以有多样性软件生产过程复杂,具有易错性软件开发与维护主要是根据用户需求“定制”的,其过程具有复杂性和易变性软件的开发和运行经常受到计算机系统环境的限制,因而软件有安全性和可移植性等问题软件生产有许多新技术需要软件工程师进一步研究和实践2.软件工程管理的重要性分阶段管理策略涉及多学科软件规模不断增大,管理难度增加,管理不善的后果严重3.软件工程管理的内容包括对软件开发成本、控制、开发人员、组织机构、用户、软件开发文档、软件质量等方面的管理。软件规模和开发工作量估算面向规模的度量(代码行技术)面向功能的度量(功能点技术)CoCoMo模型软件项目估算估算涉及到人、技术、环境、政策等多种因素,很难精确地估算出项目的开销。常用四种估算方法参照已有类似项目估计待开发项目成本和工作量将大的项目分解成若干子项目,分别估算出子项目成本和工作量,再估算整个项目按软件的生命期分别估算各阶段的工作量和成本,再汇总,从而估算出整个项目根据实验或历史数据给出软件项目工作量或成本的经验公式软件项目代码行和功能点估算是成本和工作量估算的基础。(规模)LOC或FP的期望值:e=(a+4m+b)/6代码行技术用软件项目的代码行(LOC)数表示软件项目的规模生产率P=L/E,E是软件项目的工作量,用人月(PM)度量,L用千行代码kLOC度量每行代码的平均成本C=S/L,S是软件项目总的开销文档与代码比D=Pd/L,Pd是软件项目的文档页数代码出错率EQR=Ne/L,Ne是软件项目的代码错误数例:下表提供了一个国外典型的软件项目记录利用这些数据,可以求出:P=12.1kLOC/24PM=504LOC/PMC=168000美元/12.1kLOC=13.88美元/LOCD=365Pd/12.1kLOC=30.16Pd/kLOCEQR=29个/12.1kLOC=2.4个/kLOC用代码行数估计软件规模简单易行缺点:代码行数的估算依赖于程序设计语言的功能和表达能力;采用代码行估算方法会对设计精巧的软件项目产生不利影响;在软件项目开发前或开发初期估算它的代码行数十分困难;代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模5个信息域特性为:用户输入数:各个用户输入是面向不同应用的输入数据(参数,不含查询数)个数。用户输出数:各个用户输出是面向应用的输出信息个数,包括报告,屏幕信息,错误信息等。用户查询数:查询是一种联机的交互操作,统计查询/响应的总计数。文件数:每一个逻辑主文件都应计数。逻辑主文件是指逻辑上的一组数据,可以是一个大数据库的一部分,可以是一个单独的文件。外部接口数:与系统中其他设备通过外部接口读写信息次数均应计数。功能点FP(FunctionPoint)。FP=UFP×(0.65+0.01×SUM(Fi))估算功能点的步骤1.计算未调整的功能点数UFPUFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf其中,ai(1≤i≤5)是信息域特性系数,值由相应特性的复杂级别决定。2.计算技术复杂因子TCF14种技术因素:技术因素、数据通信、分布式数据处理、性能标准、高负荷的硬件、高处理率、联机数据输入、终端用户效率、联机更新、复杂的计算、可重用性、安装方便、操作方便、可移植性、可维护性。复杂性校正值Fi1.系统是否需要可靠的备份和恢复?2.是否需要数据通信?3.是否有分布处理的功能?4.是否性能成为关键?5.系统是否运行在既存的高度实用化的操作环境中?6.系统是否需要联机数据项?7.联机数据项是否需要建立多重窗口显示和操作,以处理输入处理。8.主文件是否联机更新?9.输入、输出、文件、查询是否复杂?10.内部处理过程是否复杂?11.程序代码是否可复用?12.设计中是否包括了转移和安装?13.系统是否设计成可以重复安装在不同机构中14.系统是否设计成易修改和易使用?计算技术因子对软件规模的综合影响程度DI:技术复杂性因子TCP由下式计算:TCP=0.65+0.01×DI计算功能点数FPFP=UFP×TCP•一旦计算出功能点,就可仿照LOC的方式度量软件的生产率、质量和其它属性:生产率=FP/PM(人月)质量=错误数/FP成本=元/FP文档=文档页数/FP•功能点度量是为了商用信息系统应用而设计的。代码行度量与功能点度量的比较代码行度量(依赖开发语言)与功能点度量(不依赖开发语言)的比较LOC/FP(平均):汇编语言=300FORTRAN=100pascal=90Ada=70面向对象语言=30四代语言4GL=20代码生成器=15一行Ada语言代码的“功能”平均是一行FORTRAN语言代码“功能”的1.4倍,一行四代语言代码的“功能”平均是一行传统程序设计语言代码“功能”的3~5倍CoCoMo模型1981年Boehm提出“构造性成本模型”(ConstructiveCostModel)该成本估算模型是一种精确、易于使用的成本估算方法COCOMO模型的分类(按其详细程度,分三级)基本模型、中间模型、详细模型基本模型是静态单变量模型,用源代码行数(LOC)为自变量的经验函数计算软件开发工作量。中间模型在用LOC为自变量的函数计算软件开发工作量(称为名义工作量)的基础上,用涉及产品、硬件、人员、项目等方面的影响因素调整工作量估算。详细COCOMO模型包括中间模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。基本的CoCoMo模型公式其中:E表示工作量(人月PM)D表示开发时间(月)L是项目的代码行估计值(千行代码)bLaE)(dcED基本的CoCoMo模型参数a,b,c,d常数取值软件类型abcd适用范围组织型2.41.052.50.38各类应用程序半独立型3.01.122.50.35各类实用程序、编译程序等嵌入型3.61.202.50.32实时处理、控制程序、操作系统中间的CoCoMo模型•以基本的CoCoMo模型为基础,工作量估计公式中乘以调节因子EAFE表示工作量(人月PM)L是项目的代码行估•进一步考虑15种影响软件工作量的因素EAFLaEb)(iiFEAF151软件类型ab组织型3.21.05半独立型3.01.12嵌入型2.81.2015种影响软件工作量的因素fi产品因素:软件可靠性、数据库规模、产品复杂性;硬件因素:执行时间限制、存储限制、虚拟机易变性、环境周转时间;人的因素:分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验;项目因素:现代程序设计技术、软件工具的使用、开发进度限制。影响工作量因素fi情况取值1软件可靠性只用于局部地区,恢复问题不严重1.00(正常)2数据库规模20000字节0.94(低)3产品复杂性用于远程通信处理1.30(很高)4时间限制使用70%的CPU时间1.10(高)5存储限制64K中使用45K1.06(高)6机器使用商用微处理机1.00(额定值)7周转时间平均2小时1.00(额定值)8分析员能力优秀人才0.86(高)9工作经验远程通信工作3年1.10(低)10程序员能力优秀人才0.86(高)11工作经验微型机工作6个月1.00(正常)12语言使用经验12个月1.00(正常)13使用现代程序设计技术1年以上0.91(高)14使用软件工具基本的微型机软件1.10(低)15工期9个月1.00(正常)例一个规模为10KLOC的商用微机远程通信的嵌入型软件,使用中间COCOMO模型进行成本估算。名义工作量E1=2.8×(10)1.20=44.38实际工作量E=44.38×1.17=51.9中间CoCoMo模型与各种开发方案对工作量的影响建议参加项目的人数N为人数,D为开发时间(月),E为工作量(人月)一般来说,由N个程序员组成的小组,实现相同的规模的程序,相互通信数,设每次通信和交换意见的平均的工作量,则增加的通信开销为DEN/2/)1(2NNCN2/)1(NNEc一般情况下,由N个程序员组成的小组共同开发一个程序的工作量,满足:程序员小组的生产率:单个程序员与程序员小组生产率的比为事实:盲目增加程序员人数会推迟软件完成的日期rEcrEEE)/(cGEELOCP)/(cpEEERCoCoMo2模型1997年Boehm对CoCoMo模型进行了扩充,称为CoCoMo2.COCOMO2模型分成三个层次应用系统组成模型:用于估算构建原型的工作量,这种模型考虑到大量使用已有构件的情况早期设计模型:用于软件结构设计阶段后期设计模型:用于软件开发阶段COCOMO2模型把软件开发工作量表示成代码行(KLOC)的非线性函数:其中,α是模型系数,典型值为3.0,b是模型指数,fi是成本因素。COCOMO2模型使用了5个分级因素Wi(1≤i≤5),分别是:项目先例性、开发灵活性、风险排除度、项目组凝聚力和过程成熟度。其中每个成本因素划分为6个级别,每个级别的分级因素Wi取值如下:甚低Wi=5,低Wi=4,正常Wi=3,高Wi=2,甚高Wi=1,特高Wi=0。b的值:171**biEkLOCfi进度计划可以把用于一般开发项目的进度安排的技术和工具应用于软件项目。为监控软件项目的进度计划和工作的实际进展情况,为表现各项任务之间进度的相互依赖关系,需要采用图示的方法。在图示方法中,必须明确标明:各个任务的计划开始时间,完成时间;各个任务完成标志(即○文档编写和△评审);各个任务与参与工作的人数,各个任务与工作量之间的衔接情况;完成各个任务所需的物理资源和数据资源甘特图GanttChart在甘特图中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,而是以必须交付应交付的文档与通过评审为标准。因此在甘特图中,文档编制与评审是软件开发进度的里程碑。工程网络技术工程网络技术PERT技术(ProgramEvaluationandReviewTechnique)叫做程序评估与审查技术,CPM方法叫做关键路径法,它们都是安排开发进度,制定软件开发计划的最常用的方法。它们都采用网络图来描述一个项目的任务网络,也就是从一个项目的开始到结束,把应当完成的任务用图或表的形式表示出来。1.计算最早时刻2.计算最迟时刻3.关键路径4.机动时间•通常用两张表来定义网络图。•一张表给出与一特定软件项目有关的所有任务(也称为任务分解结构WorkBreakdownStructure);•另一张表给出应当按照什么样的次序来完成这些任务(有时称为限制表RestrictionList)。PERT技术和CPM方法都为项目计划人员提供了一些定量的工具。确定关键路径,即决定项目开发时间的任务链。在关键路径上的各个任务都是时间余量为零的关键任务,不能有任何时间延误。应用统计模型,对每一个单独的任务确定最可能的开发持续时间的估算值。计算边界时间,以便为具体的任务定义时间窗口。上述示例工程中各项任务的进度安排,可用Gantt图画出:(先安排关键路径上的任务)路径优化人员组织1.开发人员2.组织机构按课题划分的模式(ProjectFormat)按职能划分的模式(FunctionalFormat)矩阵形模式(MatrixFormat)程序设计小组的组织形式有3种:主程序员组、民主制程序员组及层次式小组3.用户用户的阻力和干扰:不积极配合、求全求快、功能软件项目组织的建立•开发组织采用什么形式,要针对软件项目的特点来决定,同时也与参与人员的素质有关。组织原则(1)尽早落实责任:在软件项
本文标题:ch9软件工程管理
链接地址:https://www.777doc.com/doc-163342 .html