《计算机软件工程课件26153.pptx》由会员分享,可在线阅读,更多相关《计算机软件工程课件26153.pptx(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第11章 软件工程管理n管理的目的与内容n软件估算模型n软件成本估计n人员的分配与组织n项目进度安排n软件知识产权保护1管理的目的与内容n目的n按预定的时间和费用,完成软件的计划、开发和维护n内容n费用管理n估算软件的开发费用n管理开发费用的有效使用n质量管理(包括配置管理)n项目的其它管理n项目进度安排n人员的分配与组织2软件估算模型n静态单变量资源模型nPutnam资源模型nCOCOMO模型3静态单变量资源模型n资源=c1 x(估计的软件特征)c2n资源n开发工作量(E)、开发时间(T)或开发人数(P)n估计的软件特征n源程序长度(L)或软件工作量(E)nc1 ,c2n依赖于开发环境和软件
2、应用领域的常数4Putnam资源模型nL=cK1/3T4/3 或 K=L3/(c3T4)nL(行):源程序长度nT(年):开发时间nK(人-年):全生存期工作量nc:与开发环境有关的常数5COCOMO模型nCOnstructive COst MOdeln以静态单变量模型为基础n将软件分类:n组织n半独立n嵌入n增加工作量调节因子6不同类型软件的不同类型软件的 COCOMO模型模型 软件类别模型方程适用范围组织型E=3.2L1.05T=2.5E0.38高级语言应用程序,如科学计算,数据处理企业管理程序等半独立型E=3.0L1.12T=2.5E0.35大多数实用程序,如编辑程序、连接程序编辑程序等
3、嵌入型E=2.8L1.20T=2.5E0.32与硬件关系密切的系统程序,如操作系统数据库管理系统,实时处理与控制程序等7调节因子和它的值范围调节因子和它的值范围 属性调节因子调节值范围例13.1中使用的值产品属性要求的可靠性等级数据库规模产品复杂度0.75-1.400.94-1.160.70-1.651.000.941.30计算机属性对程序执行时间的约束对程序占用存储容量的约束开发环境的变动开发环境的响应时间1.00-1.661.0-1.560.87-1.300.87-1.151.111.061.001.00人员属性分析员水平程序员水平对应用领域的熟悉程度对开发环境的熟悉程度对所用语言的熟悉程
4、度1.46-0.711.42-0.701.29-0.821.21-0.901.14-0.950.860.861.001.101.00项目属性开发方法的现代化软件工具的数质量完成时间的限制1.24-0.821.24-0.831.23-1.100.911.101.008软件成本估计n自顶向下成本估计n由底向上成本估计n算法模型估计9自顶向下成本估计n首先估算总成本n然后在项目内部进行成本分配n特尔斐Delphi法n多个专家各自填表n综合专家意见,摘要通知大家n开始新一轮估计n多次反复,直到专家意见接近10由底向上成本估算n先将开发任务分解为许多子任务n子任务分成子子任务n估计各个任务单元的成本n汇
5、合成项目总成本11算法模型估计n算法模型就是资源模型n由历史数据导出n选择适用的模型n模型估计法与自顶向下估计或由底向上估计结合使用12人员的分配与组织nRayleigh-Norden曲线n两条重要定律n人员组织13Rayleigh-Norden曲线tdt人力浪费的人力不足的人力过晚的人力14两条重要的定律n人员-时间权衡定律nBrooks定律n向一个已经延晚的项目追加开发人员,可能使它完成得更晚E=常数/(T或td)415人员组织n层次型组织结构n软件经理 项目经理 开发小组n民主开发小组n无我程序设计n主程序员小组n一元化领导n主程序员分配工作n主程序员决定重大问题16项目进度安排n计划评
6、审技术n建立PERT图n找出关键路径n标出最迟开始时间nPERT图的使用nGannt图17PERT图例子测试数 据编码产品测 试测试软 件测试计 划起点分析终点文档设计18关键路径编码产品测 试测试软 件测 试数 据测试计 划起点终点文档设计分析(0,0)(0,3)(0,2)(3,5)(2,8)(3,7)(7,9)(7,11)(15,15)(11,15)19第12章 软件质量管理n从质量保证到质量认证n质量保证n软件可靠性n程序正确性证明nCMM软件能力成熟度模型nISO9000 国际标准n软件度量20从软件质量保证到质量认证从软件质量保证到质量认证 n质量管理的三个阶段n质量检验n全面质量管
7、理TQC n质量认证nCMM软件能力成熟度模型 nISO 9000国际标准 21质量保证n软件的质量属性n功能性n可靠性n易用性n效率n可维护性n可移植性n质量保证的活动内容22质量保证的活动内容 复审:计划与开发方法:设计、编码控制:软件配置软件测试23软件可靠性n可靠性的定义和分级n定义:在给定的时间内,程序按照规定的条件成功地运行的概率n可靠性等级n可靠性模型n软件容错技术24可靠性分级表分级故障的后果开发工作量比例因子甚低低正常高甚高工作略有不便有损失,但容易弥补弥补损失比较困难重大的经济损失危及人的生命0.750.881.001.151.4025可靠性模型n正比于遗留故障数的宏观模型
8、n平均故障时间模型(MTTF模型)n错误植入模型26软件容错技术n容错软件(有抗故障功能的软件)n屏蔽错误n修复错误n减少影响n冗余技术n结构冗余n时间冗余n信息冗余n容错软件的设计27静态冗余结构和动态冗余结构M1M2M3VM1M2MnIUu1u2u3I主模块备用备用28容错软件设计建立需求说明,设计软件的非容错结构分析错误类型确定容错范围确定采用的冗余技术,修改结构评估容错效果29程序正确性证明n用数学的方法,证明程序具有某些性质SPPSRR30CMM软件能力成熟度模型nCMM的基本概念n软件过程n关键过程域nCMM模型n5级,18个关键过程域,52个过程目标,316种关键实践31过程能力
9、等级特点关键过程域1初始级(Initial)软件过程是无序的,对过程几乎没有定义,成功取决于个人的努力。管理是消防队救火式的。2可重复级(Repeatable)建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程规则和纪律,能重复早先类似应用项目取得的成功。需求管理软件项目策划软件项目跟踪和监督软件子合同管理软件质量保证软件配置管理3已定义级(Defined)已将软件管理和工程两个方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经过批准、剪裁的标准软件过程来开发和维护软件。组织过程定义组织过程焦点培训大纲集成软件管理软件产品工程组际协调同行专家评审4已管理
10、级(Managed)收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解和控制。定量的过程管理软件质量管理5优化级(Optimizing)过程的量化反馈和先进的新思想、新技术促使过程不断改进。缺陷预防技术变更管理过程变更管理32CMM应用n能力评估n软件过程评估n软件能力评价n过程改善n引用CMM关键实践n改善本机构的软件过程33ISO 9000 国际标准n质量术语标准nISO 8402-1994n质量保证标准nISO 9001n质量管理标准nISO 9004-134软件企业实施ISO9000标准n知识准备n立法n宣传n执行n监督n改进35软件度量n项目度量n项目度量的内容n面向
11、功能的项目度量n过程度量36项目度量的基本度量S.R.Schach,1992U.S.AirForce,93M-017报告常用单位Size规模Size规模LOC,KLOCEffort工作量Effort工作量人-月Duration时间Schedule进度月Quality质量Quality质量错误数/KLOCCost成本Rework返工元37第第13章章 软件工程环境软件工程环境 n什么是软件工程环境nCASE环境的组成与结构nCASE环境实例nRational SUITE Enterprise Studio n青鸟系统 38软件工程环境n软件工程环境n统一集成机制下的一系列软件工具n支持与软件开发
12、相关的过程、活动和任务n软件开发环境的特点n友善和统一的用户界面n集成化的软件工具n数据集成n界面集成n控制集成n过程集成n平台集成39理想环境模型自动化(A)AUTOMATION方法(M)METHODS过程(P)PROCESS40CASE环境nCASE计算机辅助软件工程n现代化软件开发环境的总称n软件开发环境n程序设计支持环境n软件支持环境n集成化项目支持41CASE环境的组成CASE工具集成化框架为可移植性服务的机构操作系统硬件平台环境体系结构42CASE集成框架的典型结构用户界面层界面工具箱表示协议工具层工具管理服务CASE工具工具管理服务工具层对象管理层集成服务配置管理服务共享中心库层
13、CASE数据库访问控制功能43CASE结构示例44CASE环境 Rational SUITEn软件开发过程框架n需求管理工具n面向对象分析设计工具n配置管理工具n变更管理工具n测试工具45CASE环境 青鸟系统n全面支持面向对象软件开发n开放性环境集成机制n支持多种软件开发方法n既是通用性软件工程环境,又能成为特定领域的专用性应用开发平台46第14章 软件工程高级课题nWeb工程n基于体系结构的软件开发n面向方面的软件开发n形式化软件开发47Web工程nYogesh Deshpande和Steve Hansen在1998年就提出了Web工程的概念。Web工程作为一门新兴的学科,提倡使用一个过程
14、和系统的方法来开发高质量的基于Web的系统。它使用合理的、科学的工程和管理原则,用严密的和系统的方法来开发、发布和维护基于Web的系统。48Web工程与软件工程工程与软件工程 nWeb工程与软件工程的区别 nWebApp强调信息的含量;传统软件工程则强调系统功能的完善 n WebApp关注视觉和感觉;传统的软件界面则奉行“简单为美”的原则 n多数WebApp是数据驱动的;传统的软件开发多是功能驱动的或过程驱动的 nWebApp能够适应不同的用户;传统的软件系统的用户群体则通常圈定在某个范围之内 nWebApp必须在短期内开发完成,很难应用传统软件工程中使用的形式化方法和测试技术 nWeb工程要
15、求艺术、技术和科学在更大范围内相互结合 49Web开发nWeb开发团队nWeb决策人员n内容提供人员nWeb开发人员nWeb发布人员nWeb支持人员nWeb管理员n最终用户50Web开发nWeb工程过程nWeb工程过程活动贯穿Web生命周期 nWebApp常常以增量的方式开发;n需求经常发生变化;n开发期限较短。nWeb分析n内容分析n交互分析n功能分析n配置分析n导航关系分析n安全分析 51Web开发nWeb设计n设计原则和目标设计原则和目标 n设计要尽可能简单 n布局要尽可能美观 n整体要尽可能保持一致 n界面设计界面设计 n设计方法设计方法 n设计中的问题设计中的问题 n设计人员的检查设
16、计人员的检查 52Web开发nWeb测试测试n内容测试:检查内容的正确性、一致性、无歧义等问题;n功能测试:查找不符合用户需求的错误;n结构测试:确保其结构是符合WebApp的内容和功能的,确保它是可扩展的,支持新的内容或功能;n导航测试:确保所有的导航用法和意义都被实现,以便发现导航错误(如空链接、错误链接等);n易用性测试:确保每个不同的用户群能被WebApp界面支持,能学会并运用所有需要的导航用法和意义;n性能测试:在不同操作条件、配置和负载下进行,确保系统能响应用户的交互操作,能在可接受的性能下降的条件下处理极端的负载量;n兼容性测试:在客户机和服务器上设定不同的配置条件下执行WebA
17、pp。目的是找出那些只在特定配置下会出现的错误;n协同工作测试:确保WebApp能很好地与其他的应用程序和数据库交互;n安全性测试:评估潜在的易攻击性,任何一个成功的入侵都认为是安全方面的失败。53基于体系结构的软件开发n基于构件和体系结构的软件开发方法正逐渐成为近代软件工程研究的重点 n应用软件的体系结构应用软件的体系结构 n程序的体系结构程序的体系结构 n业务的体系结构业务的体系结构 n技术的体系结构技术的体系结构 n信息的体系结构信息的体系结构 n编程范型对体系结构的影响编程范型对体系结构的影响 n编程范型对复用粒度的影响编程范型对复用粒度的影响n软件体系结构技术仍在发展软件体系结构技术
18、仍在发展54面向方面的软件开发n在软件系统的设计过程中,人们首先关注的往往是与系统业务相关的模块,然后也会考虑分布在多个核心模块中的公共行为n前者称为核心关注点,后者称为横切关注点n面向对象的编程技术(OOP)技术可以很好地完成对核心关注点的设计与开发,而对横切关注点却有些力不从心n横切关注点会跨越多个模块,是多维的,而OOP 的设计方法却是一维的,把多维的需求映射到一维上,便产生了许多需要探讨的问题。55面向方面的软件开发n面向方面编程(Aspect-Oriented Programming,AOP)是对软件工程的一种革新性思考,是由施乐公司帕洛阿尔托研究中心(Xerox Palo Alto
19、 Research Center)的Gregor Kiczales等在1997年提出的,主要用来解决横切关注点问题nAOP开发环境Aspect JnAOP为开发者提供了一种描述横切关注点的方法,人们可以通过它单独实现横切模块nAOP提供了一种机制,使得核心模块和横切模块能够融合在一起,从而构造出最后的实际系统56面向方面编程n1关注点(Concem)n关注点也就是要考察或解决的问题。n2方面(Aspect)n方面是一个抽象的概念,从软件的角度来说是指在应用程序不同模块中的某一个领域或方面。从程序抽象的角度来说,可以对照OOP中的类来理解。n3连接点(Join point)n连接点也就是运用程序
20、执行过程中需要插入方面模块的某一点。连接点主要强调的是一个具体的“点”概念。这个点可以是一个方法、一个属性、构造函数、类静态初始化块,甚至一条语句。n4织入(weaving)n织入是指把解决横切问题的方面模块,与系统中的其它核心模块通过一定策略或规则组合到一起的过程。57AOP语言规范nAOP语言的两个方面n关注点的实现n织入规则规范nAOP设计的开发步骤:n(1)方面分解:分解需求提取出横切关注点和一般关注点。这一步把核心模块级关注和系统级的横切关注点分离开来。n(2)关注点实现:各自独立的实现这些关注点。n(3)方面的重新组合:在这一步,方面集成器通过创建一个模块单元方面来指定重组的规则。
21、重组过程(也叫织入或结合)则使用这些信息来构建最终系统。58AOP和OOP比较nOOP和AOP的关系nOOP是AOP的技术基础nAOP是对OOP的继承和发展 n区别n可扩展性可扩展性 n可重用性可重用性 n易理解性和易维护性易理解性和易维护性 59面向方面的软件开发 面向方面的软件开发过程60形式化的软件开发r形式化方法的定义形式化方法的定义 r形式化方法的基本含义是借助数学的方法来研究计算机科学中的有关问题 r用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术,这样的形式化方法提供了一个框架,可以在框架中以系统的而不是特别的方式刻画、开发和验证系统 r狭义地,形式化方法是软件规格(
22、Specification)和验证(Verfication)的方法 r将形式化方法用于软件开发的主要目的是保证软件的正确性 r形式化方法的特点形式化方法的特点 提供了规格环境的基础形式化描述的分析模型。设计、实现和单元测试等过程被一个形式化的、逐步求精的、正确性得到保证的变换过程所替代。形式化方法适合对安全性、可靠性、保密性要求极高的系统开发 n形式化方法模型形式化方法模型 n基于形式化规格及程序变换的软件开发模型 61形式化软件开发过程形式化的软件开发过程形式化的软件开发过程需求定义需求定义形式化描述形式化描述形式化转换形式化转换集成和系统验证集成和系统验证r形式化开发方法形式化开发方法是将
23、软件系统的需求描述,采用某种规是将软件系统的需求描述,采用某种规约的形式化方式,转换成一个可执行程序。约的形式化方式,转换成一个可执行程序。r在转换过程中,形式化描述被逐步求精地转换成有严格在转换过程中,形式化描述被逐步求精地转换成有严格数学方法保证其正确的一系列系统表示,直到形式化描数学方法保证其正确的一系列系统表示,直到形式化描述被转换成一个对等的可执行程序。述被转换成一个对等的可执行程序。62小结nWeb工程是一门十分年轻的学科,刚刚引起专家、学者和开发人员的注意,还需要进化和成熟。n鉴于软件体系结构直接关系到软件性能的好坏,基于软件体系结构的开发目前正方兴未艾,已经成为当今软件开发中一个突出的研究课题。n面向方面编程(AOP)是对软件工程的一种革新性思想,也是对OOP的继承和发展。本章介绍了AOP的基本概念和语言规范,简叙了面向方面的软件开发(AOSD),并从可扩性、可重用性、易理解性和易维护性等方面对AOP 与OOP进行了初步比较。n形式化的软件开发起源于深入探讨程序开发过程的数学理论,最早可追溯到对程序设计语言编译技术的研究。本章介绍了形式化方法的定义,狭义地说,将它归纳为形式化规格(Formal Specification)和形式化验证(Formal Verification)的方法,讨论了应用转换模型来进行形式化开发的过程。63