软件工程方法.ppt
《软件工程方法.ppt》由会员分享,可在线阅读,更多相关《软件工程方法.ppt(124页珍藏版)》请在课桌文档上搜索。
1、软件工程方法,主要内容,1.软件产品及其特点2.软件工程过程及过程模型3.软件项目管理4.面向过程的软件工程方法5.面向对象的软件工程方法6.软件的质量保证体系8.计算机辅助软件工程(CASE),软件产品及其特点,什么是软件?,能够完成预定功能和性能的可执行的指令;使得程序能够适当地操作信息的数据结构;描述程序的操作和使用的文档。,软件特点,软件是逻辑的而不是物理的产品;软件是由开发或工程化形成的,而不是传统意义上的制造产生的;软件不会”磨损”,但会退化。尽管目前已经进入到基于部件组装的时代,但是绝大多数软件是客户定制方式生产的。,软件发展的历史,早期阶段:(50年代初-60年代中期)面向批处
2、理有限的分布自定义软件第二队段:(60年代中期-70年代末)多用户实时数据库软件产品,软件发展的历史,第三阶段:(70年代中期-80年代中期)分布式系统嵌入”智能”低成本硬件消费者的影响第四阶段:(80年代中期-现在)强大的桌面系统面向对象技术专家系统人工神经网络并行计算网络计算机,软件面临的问题,硬件的发展一直超过软件的发展,使得我们建造的软件难以发挥硬件的所有潜能。我们建造新程序的能力远远不能满足人们能新程序的需求,同时我们开发新程序的速度也不能满足商业和市场的要求。计算机的普遍使用已使得社会越来越依赖于可靠的软件。如果软件失败,会造成巨大的经济损失,甚至有可能给人类带来灾难。我们一直在不
3、断努力建造具有高可靠性和高质量的计算机软件。拙劣的设计和资源的缺乏使提我们难以支持和增强已有软件。,软件工程过程及过程模型,软件工程过程及过程模型,过程规定了所有的主要处理活动过程使用资源,服从一套约束(如时间进度),并产生中间和最终产品。过程可能由许多子过程(它们通过某种方式联接在一起)组成。过程可能被定义为一个过程层次,这样组织起来以便每个子过程有它们自己的过程模型。每个处理活动都有其入口和出口,以便我们知道活动何时开始与结束。活动以一定次序组织起来,以便一个活动相对其他活动应该何时开始清楚。每个过程有一套指导原则来解释每项活动的目标。约束或控制可以应用到一项活动、资源或产品。例如,预算或
4、进度可能限制一个活动可占时间的长度,或者,一件工具可以限制资源利用的方式。软件开发过程有时称为软件生命周期(software life cycle),因为它描述了一件软件产品的生命:从它的概念到实现、交付、使用、和维护。,软件工程过程的阶段,需求分析和定义系统设计程序实现单元测试综合测试系统测试系统交付维护,软件过程模型(SOFTWARE PROCESS MODEL),瀑布模型(Waterfall Model)V模型(VModel)原型模型(prototyping Model)操作规格(Operational Specification)模型转换模型(Transformation Model)
5、增量开发(Incremental Developmevt)反复开发(iteraeive development),瀑布模型(Waterfall Model),每个过程活动相联系的便是里程碑和可交付物,以便项目经理能评估项目实际的项目很少按照该模型给出的顺序进行。用户常常难以清楚地给出所有需求。用户必须有耐心开发者常常被不必要地耽搁,瀑布模型(Waterfall Model),瀑布模型(Waterfall Model),V模型(VModel),V模型是瀑布模型的变种 V模型左侧与右侧的联接暗示如果在验证和确认期间发现问题,那么V的左侧能被重新执行来修改并改进需求。设计和编码。,原型模型(prot
6、otyping Model),原型模型容许快速地建设起系统的全部或部分的理解或澄清。总目标是减少开发中的风险或不确定。,操作规格模型(Operational Specification),通过演示系统的行为的方式来评价或执行系统需求。操作规格模型允许功能和设计合并,转换模型(Transformation Model)增量开发(Incremental Developmevt),最初的项目风险和最初的项目需求,重新评估项目计划 成本 工作计划范围/内容,第N次迭代的计划成本计划,访问第N次,消除 风险,重新评估项目风险,第N次迭代的开发成本的开支和 质量保证系统,针对最高的风险确定使用范例的工作计
7、划,第N次迭代,转换模型(Transformation Model),前期迭代的结果 最近的风险估计 可控的资源(包括模型,代码和 测试数据),新发布说明更新的风险评估可控的资源,初始计划,需求分析,分析和设计,开发实现,测试,准备新发布,选定的使用方案,软件项目管理,软件项目的度量软件项目计划软件项目的风险管理进度安排及跟踪,软件项目的度量,项目度量,项目度量的目的是双重的。首先,这些度量能够指导进行一些必要的调整以避免延迟,并减少潜在问题及风险,从而使得开发时间减到最少。其次,项目度量可在项目进行的基础上评估产品质量,并且可在必要时修改技术方法以改进质量。,软件测量,产品的直接测量,包括产
8、生的代码行(line of code LOC)、执行速度、内存大小及某段时间内报告的缺陷。产品的间接测量,包括功能、质量、复杂性、有效性、可靠性、可维护性及,面向规模的度量,每千行代码(KLOC)的错误数每千行代码(KLOC)的缺陷数每行代码(LOC)的成本每千行代码(KLOC)的文档页数每人月错误数每人月代码行(LOC)每页文档的成本,面向功能的度量,加权因子测量参数计数简单平均复杂用户输入数*345=用户输出数*457=用户查询数*346=文件数*71015=外部界面数*5710=总计数值FP=总计数值*(0.65+0.01*Fi)其中Fi(i=1到14)取值0-5,面向功能的度量,Fi:
9、1.系统需要可靠的备份和复原吗?2.需要数据通信吗?3.有分布处理功能吗?4.性能很关键吗?5.系统是否在一个已有的、很实用的操作环境中运行?6.系统需要联机数据项吗?7.联机数据项是否需要在多屏幕或多操作之间切换以完成输入?8.需要联机更新主文件吗?9.输入、输入、文件或查询很复杂吗?10.内部处理复杂吗?11.代码需要被设计成可复用的吗?12.设计中需要包括转换及安装吗?13.系统的设计支持不同组织的多次安装吗?14.应用的设计方便用户修改和使用吗?,面向功能的度量,每个功能点(FP)的错误数每个功能点(FP)的缺陷数每个功能点(FP)的成本每个功能点(FP)的文档页数每个人月完成的功能点
10、(FP)数,扩展的功能点度量,复杂度加权因子测量元素 低 平均 高内部数据结构*7+*10+*15=外部数据*5+*7+*10=用户输入数*3+*4+*6=用户输出数*4+*5+*7=用户查询数*7+*4+*6=变换*3+*10+*15=变迁*n/a+*n/a+*n/a=3D函数点指数,软件项目计划,项目估算,估算是一门科学,也是一门艺术估算软件开发工作的资源、成本及进度需要:经验以前完成项目中有用的信息当仅存在定性的数据时进行定量测量的勇气,项目的不确定性,对项目计划中的不确定性产生重大影响的因素复杂性项目的规模结构不确定性的程度历史信息的可用程度,项目计划的目标,项目计划的目标是提供一个框
11、架,使得管理者能够对资源、成本及进度进行合理的估算,并随着项目的进展不断更新项目计划的目标是通过一个信息发现的过程实现的,软件的范围,软件项目计划的第一个活动是确定软件范围软件范围包括:功能、性能、约束条件、接口及可靠性功能包括:系统将做什么?系统将在何时做?有几种操作方式?系统能在何时、怎样被改变或增强?,软件的范围,性能包括:对执行速度,响应时间,或转出有限制?约束条件系统可占用多少物理空间有几种类型的用户 每种类型用户的技术水平怎样,软件的范围,接口包括:转入来自一个或多个别的系统?转出至一个或多个别的系统?有用于格式化数据的规定的方式?,软件的范围,可靠性:系统必须检测并隔离故障失败间
12、的平均时间规定为多少对一次失败后重启系统的最大时间,获取软件范围的信息,获取软件范围的信息的方法:座谈会、问卷调查第一组与项目无关的问题主要集中于用户、总体目标及利益上谁提出了关于这项工作的要求谁将会使用这个解决方案成功的解决方案将获得什么利益是否有其他的解决方案,获取软件范围的信息,第二组问题:进一步了用户对于解决方案的想法你(用户)认为一个成功的解决方案所产生的“好的”输出应该具有什么特征?这个解决方案针对什么问题?你能给我演示(或描述)一下该解决方案被实现的方式?,获取软件范围的信息,最后一组问题:主要集中于会议的效果你是回答这些问题的最合适的人选吗?你的回答是否是“正式的”?我提的问题
13、与你要解决的问题相关吗?我是否问了太多的问题?是否还有其他人能够提供更多的信息是否还有其他我应该问你的问题?,资源,软件计划的第二个任务是估算完成软件开发工作所需的资源:开发环境:硬件及软件工具可复用构件人员,软件项目估算,软件成本及工作量的估算永远不会是一门精确的科学。人员、技术、环境、策略等是影响软件最终成本及开发所需工作量的主要因素。为了可靠地估算成本及工作量:将估算拖延到项目的最后阶段。基于已经完成的类似的项目进行估算。使用简单的“分解技术”来进行项目成本及工作量的估算。使用一个或多个经验模型进行软件成本及工作量的估算。,软件项目估算,软件项目估算的准确性取决于以下因素:计划者是否适当
14、地估算待建造产品规模的程度。把规模估算转换成人的工作量、时间及成本的能力项目计划反映软件项目组能力的程度产品需求的稳定性及支持软件工程工作的环境,软件规模估算,四种估算问题规模的方法(由Putnamt Myers 92年提出):“模糊逻辑”法功能点法标准构件法修改法,“模糊逻辑”法,要点:计划者必须说明应用软件的类型建立其定性的规模估算在最初的范围内精化该估算利用个人的经验和项目历史数据库功能点法:,标准构件法与修改法,标准构件法要点:软件由若干不同的“标准构件”组成估算出每个标准构件的出现次数使用历史数据来确定每个标准构件交付时的大小修改法要点:项目中包含对已有软件的使用,但该软件必须做某种
15、程度的修改。估算必须完成的修改数目及类型。,估算误差的原因,有时各种估算之间存在着巨大的差别,原因是项目的范围未能被充分理解,或被计划者误解。基于问题的估算技术中所使用的生产率数据对于该应用是不合适的,或是太陈旧了,或是被误用。解决方案:确定引起差别的原因,重新估算,并调和各种估算的结果。,基于过程的估算,估算一个项目的最常用的技术是基于使用的过程进行估算,即,将过程分解为相对较小的活动或任务,再估算完成每个任务所需的工作量。要点:建立问题功能及相关的过程活动例子见P82,经验估算模型,计算机软件的估算模型使用由经验导出的公式来预测工作量,工作量是LOC或FP的函数。支持大多数估算模型的经验数
16、据是来源于一个有限的项目样品集。没有任何估算模型能够适用于所有类型的软件及所有的开发环境。这种模型得出的结果必须谨慎使用。,估算模型的结构,典型的估算模型是通过对以前的软件项目中收集到的数据进行回归分析而导出的。这种模型的总体结构具有如下形式:E=A+B*(ev)C文献中提出了许多面向LOC的估算模型:E=5.2*(KLOC)0.91 Walston-Felix模型E=5.5+0.73*(KLOC)1.16 Bailey-Basili模型E=3.2*(KLOC)1.05 Boehm的简单模型E=5.288*(KLOC)1.047 Doty模型,在KLOC9E=-13.39+0.0545FP A
17、lbrecht&Gaffney模型E=60.62*7.728*10-8FP Kemerer模型E=585.7+5.12FP Maston、Barnett&Mellichamp,COCOMO模型,由Boehm81年在其经典著作“软件工程经济学”中提出的,称为:构造性成本模型。Boehm的模型层次具有以下形式:模型1:基本COCOMO模型,将软件开发工作量(及成本)作为程序规模的函数进行计算,程序规模以估算的代码行来表示。E=abKLOCbb D=cbEdb模型2:中级COCOMO模型,将软件开发工作量(及成本)作为程序规模及一组“成本驱动因子”的函数来进行计算。E=aiKLOCbi*EAF模型3
18、:高级COCOMO模型,包含了中级模型的所有特性,并结合了成本驱动因子对软件工程过程中每一步骤的影响的评估。,软件方程式,软件方程式是一个多变量模型,它假设在软件开发项目的整个生命周期中的一个特定的工作量分布。E=LOC*B0.333/P3*(1/t4),小结,软件项目的估算包括:需要多长时间需要多少工作量需要多少人员需要多少资源(硬件及软件)包含的风险,小结,范围说明能够帮助计划者使用一种或多种技术进行估算,这些技术主要分为两大类:分解和经验建模。分解技术需要划分出主要的软件功能,接着估算实现每一功能所需的程序规模或人月数。经验技术使用根据经验导出的公式来预测工作量和时间。软件项目估算永远不
19、会是一门精确的科学,但将良好的历史数据与系统化的技术结合起来能够提高估算的精确度。,风险管理,被动和主动的风险策略,风险:没有办法消除的缺陷。被动的风险策略:最多是针对可能发生的风险来监督项目,直到它们变成真正的问题时,才会拨出资源来处理它们。主动的风险策略:早在技术工作开始之前就已经启动风险管理。标识出潜在的风险,评估它们出现的概率及产生的影响,且按重要性加以排序,然后软件项目组建立一个计划来管理风险。风险的特征:不确定性、损失,风险分类,项目风险:指潜在的预算、进度、人力(工作人员及组织)、资源、客户及需求等方面的问题以及它们对软件项目的影响。技术风险:指潜在的设计、实现、接口、验证和维护
20、等方面的问题。规约的二义性、技术的不确定性、陈旧的技术及”先进的”技术。商业风险:开发了一个没有人真正需要的优秀产品或系统(市场风险)开发的产品不再符合公司的整体商业策略(策略风险)建造了一个销售部门不知道如何去卖的产品由于重点的转移或人员的变动而失去了高级管理层的支持(管理风险)没有得到预算或人力上的保证(预算风险),识别风险,识别风险是试图系统化地确定对项目计划(估算、进度、资源分配)的威胁。标识风险的一个方法是建立风险条目检查表:产品规模与要建造或要修改的软件的总体规模相关的风险 商业影响与管理或市场所加诸的约束相关的风险客户特性与客户的素质以及开发者和客户定期通信的能力相关的风险过程定
21、义与软件过程被定义的程度以及它们被开发组织所遵守的程度相关的风险开发环境与用以建造产品的工具的可用性及质量相关的风险建造的技术与参与工作的软件工程师的总体技术水平及项目经验相关的风险,风险预测,建立风险表评估风险影响风险评估,风险缓解、监控和管理计划(RMMM计划),I.引言1.文档的范围和目的2.主要风险综述3.责任A.管理者B.技术人员II.项目风险表1.中止线上的所有风险的描述2.影响概率及影响的因素III.风险缓解、监控和管理N.风险#N,A.缓解I.一般策略II.缓解风险的特定步骤B.监控I.被监控的因素II.监控方法C.管理I.意外事件计划II.特殊的考虑IV.RMMM计划的迭代时
22、间安排表V.总结,项目进度安排及跟踪,项目延迟的原因,一个不现实的截止期限客户需求发生变化对工件量估计不足未将风险考虑项目计划事先无法预计的技术困难事先无法预计的人力困难由于项目组成员间的交流不畅面导致的延期项目管理者未发现进度拖后,未能采取适当的措施,项目管理者的目标,一个大型项目可以分解成许多小的活动。项目管理者的目标是定义所有项目任务,识别关键任务,然后跟踪关键任务的进展以保证“一天一次”的发现进度拖延情况。管理者必须建立一个具有一定详细程度的进度表,使得项目管理者能够监督进度,并控制整个项目。,项目进度安排的两种视角,基于计算机系统的最终发布日期已确定,在此约束下将工作量分布在预先确定
23、的时间框架内假定大致的时间界限已讨论过,但是最终发布日期是由项目开发组设定,且在对软件进行仔细分析之后定义最终发布日期,项目进度安排的原则,阶段划分相互依赖性时间分配工作量确认定义责任定义结果定义里程碑,人员与工作量间的关系,随着项目规模的增加,必然涉及到更多的人员参与随着项目人员的增加生产率呈下降的趋势原因是人与人之间通讯,为项目定义任务集合,过程模型都是由一个任务集合组成的,它使得项目组可以定义、开发和维护计算机软件。一个任务集合包括一组软件任务、里程碑和产品没有一个普遍适用于所有软件项目的任务集合,软件项目的分类,概念开发项目为探索某些新的商品概念或新技术的应用新应用开发项目根据特定的客
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 方法
链接地址:https://www.desk33.com/p-235718.html