《高级软件工程》PPT课件.ppt
《《高级软件工程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《高级软件工程》PPT课件.ppt(296页珍藏版)》请在三一办公上搜索。
1、高级软件工程,Advanced Software Engineering,2,主要内容,一、软件工程概述二、软件需求三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、Advanced Topics in Software Engineering,3,一、软件工程概述,软件工程的基本概念基于计算机的系统工程软件过程软件项目管理的基本内容,4,1.什么是软件?,Software=program+data+documentCustom softwareGeneric software,Shrink-wrapped softwareEmbedded softwareSafety-cr
2、itical softwareCOTS(Commercial Off-the-shelf)I will create a software to update the database.(some software,a piece of software,a software system),5,软件的分类,可以按功能、规模、工作方式、可靠性高低等进行划分有关软件的词汇Custom softwareGeneric softwareEmbedded softwareSafety-critical softwareCOTS(Commercial Off-the-shelf)I will creat
3、e a software to update the database.(some software,a piece of software,a software system),6,2.什么是软件工程?,1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。Fritz Bauer在会议上首次提出“软件工程”概念。软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。,7,Fritz Bauer:软件工程是为了经济地获得可靠的,能在实际的机器上高效运行的软件而建立和使用的科学的工程
4、原则。IEEE:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化思想应用于软件开发过程中,(2)上述方法的研究。软件工程的目标:低成本,高质量,按时交付,8,软件工程的本质特性,关注大型程序的构造软件工程的中心课题是控制复杂性软件需求不断变化旨在提高软件开发的效率团队合作是软件工程顺利实施的关键软件必须有效支持它的用户由一种文化背景的人替另一种文化背景的人创造产品,9,3.软件工程与计算机科学的区别,计算机科学研究的是构成计算机和软件系统基础的有关理论和方法,而软件工程则研究软件制作中的实际问题。理论上,所有软件工程都应该以计算机科学理论作为坚实的
5、基础,但对付实际的、复杂的问题时需要用软件工程的方法来解决。,10,4.软件工程与系统工程的区别,系统工程的产生比软件工程早。基于计算机的系统工程,研究由软件起主导作用的、有关负责系统的开发和进化的方方面面,包括硬件开发、系统决策、过程设计、系统实施和软件过程等。,11,5.什么是软件过程?,软件过程是指开发软件产品的一组活动及其结果。所有的软件过程都包含4项基本的活动:软件描述、软件开发、软件有效性验证和软件进化。不同的软件过程以不同的方式组织这4项活动,活动的结果会影响活动的进度。不同的机构可能用不同的过程来制作同一类产品。,12,过程定义的作用,一个过程定义了为达到确定的目标,需要什么人
6、在什么时间以何种方式做何种工作(Goal,Who,When,How,What)Process vs Music score对于 Customer,User,Developer,Manager,一个广泛适用的过程使得所有涉众更好地理解自己所扮演的角色、更清楚地知道自己及他人在什么时间做什么。促使过程的有机结合和改善,以获得“最好过程”。可以使公司内部的培训标准化。由于过程的可重复性,利于开发进度的安排,利于成本估算。,13,6.什么是软件过程模型?,模型与建模软件过程模型是从一特定的角度对软件过程的本质描述。软件过程模型包括构成软件过程的各种活动、软件产品以及所有涉众(stakeholder),
7、14,从不同的角度对软件过程的描述,就得到不同的过程模型种类。如工作流模型、数据流或活动模型、角色/动作模型等。工作流模型:描述软件过程中各种活动的序列及其输入、输出和相互依赖型。其中的活动皆为人的活动。数据流或活动模型:把软件过程描述成一组活动,其中每个活动都完成一定的数据转换。该模型中的活动层次低于工作流模型。角色/动作模型:描述参与软件过程的不同角色及其所负责的活动。,15,通用模型或范型(Paradigm,Methodology),Waterfall ModelThe Waterfall Model With Maintenance CircleThe Waterfall Model
8、With PrototypingThe Spiral Model(瀑布模型原型模型)The V ModelThe Phased Development ModelThe Incremental and Iterative ModelRUP,16,7.软件工程的成本及分布,软件成本分布取决于所采用的软件过程和所开发的软件类型。一般的成本分布:描述:设计:开发:集成与测试(15:25:20:40)需求极高的软件系统的集成与测试成本50%软件进化的成本软件维护的成本基于WEB的电子商务系统的成本模型,17,8.软件工程方法,结构化分析方法(DeMarco,1978,Yourdon E.和Consta
9、ntine L.等)JSD方法(Jackson,1983)OO方法(Booch,1994;Rumbaugh等,1991),18,UML(Unified Modeling Language),1994,OO思想已经贯穿整个软件生存期,具有影响的OOA&D方法达50余种。UML是一种对软件密集型系统进行可视化、详述、构造和文档化的建模语言,主要用于分析和设计阶段的系统建模。,19,UML 2.0,1994Booch方法Rumbaugh OMT Coad/YourdonFire Smith 方法 Jacobson OOSE,1995.10发布Unified Method 0.8,1996.6发布UM
10、L 0.9不包含过程指导,Rational联合12家公司成立UML组织,形成UML 1.0,1997.1提交给OMG,1997.11.4,OMG采纳UML 1.1,2002发布UML 2.0,20,统一过程(RUP),RUP的突出特点用况驱动(系统功能)以构架为中心(表现形式)迭代和增量开发(过程实施),21,Tendency for Change when Using OO Paradigm(Jacobson et al.1995),22,9.什么是CASE?,Computer-Aided Software EngineeringCASE是支持软件工程实施的一系列工具的集合。低端CASE工具
11、支持实现和测试的工具高端CASE工具支持分析和设计的工具,23,10.优良软件的属性,功能属性非功能属性,24,11.软件工程所面临的主要问题,遗留系统的挑战多样性的挑战交付上的挑战,25,软件工程总体面临的困难与风险,复杂性与大量的细节(火星探测器的失败)技术的不确定性(技术的发展与开发人员对技术的理解程度都不同)由于交流障碍而引起的需求不确定性需求是持续变化的不断的修改所带来的错误使得软件退化人为和市场的风险软件费用、可靠性、生产率、重用问题难以解决,26,12.职业和道德上的责任,软件工程是应该具有良好的职业道德无论是否签署了保密协议都严格保守雇主或客户的机密。实事求是地表述自己的工作能
12、力,不接受超出自己能力的工作。应知晓控制专利权、著作权等知识产权使用的法律。避免计算机滥用。ACM,IEEE、英国计算机协会等组织颁布了职业行为准则和职业道德准则(只涉及基本的道德行为),27,软件工程人员应当遵守的原则(IEEE/ACM,1999,节选),公众感软件工程人员应始终与公众利益保持一致。客户和雇主软件工程人员应当在与公众利益保持一致的前提下,满足客户和雇主的最大利益。产品应保证其产品及其附件达到尽可能高的行业标准。判断力软件工程人员应具有公正和独立的职业判断力。管理软件工程管理者和领导者应拥护并倡导合乎道德的适合软件开发和维护的管理办法。职业感应弘扬职业正义感和荣誉感,尊重社会公
13、众利益。同事软件工程人员应公平对待和协助每位同事。自己软件工程人员应毕生学习专业知识,倡导合乎职业道德的职业活动方式。,28,一、软件工程概述,软件工程的基本概念基于计算机的系统工程软件过程软件项目管理的基本内容,29,1.系统总体特性,功能特性非功能特性,如可靠性、安全性、保密性等。与系统总体可靠性紧密关联的3个方面:硬件可靠性软件可靠性(在第16、17章讨论)操作可靠性,30,2.系统及其环境,系统都是在一定的环境中存在的。系统环境必将影响系统的功能和性能。环境包含一系列相互作用的其它系统,有时,环境可能被看作是一个独立的系统。系统工程师一定要了解系统环境在许多情况下,系统的目的就是要改变
14、环境。一个系统的功能要受到环境变化的影响,这种影响可能很难估计。,31,3.系统建模,系统建模作为系统需求和设计活动的一部分,描述组成系统的组件以及组件之间的关系(系统体系结构)系统体系结构通常以方块图来描述。一个系统体系结构可以以功能为单位划分成子系统或功能组件,而不必关心由硬件还是软件实现。,32,功能组件可以分为六类:传感器组件:收集来自系统环境的信息。执行机构组件:引起一些系统环境的变化。计算组件:给定输入,执行计算并产生输出。通信组件:实现系统组件之间的彼此通信。调度组件:协调组件间的操作。接口组件:将一个组件中的表示转换成另一个组件中的表示。,33,4.系统工程过程,需求定义,系统
15、设计,组件开发,系统集成,系统安装,系统进化,系统退役,34,系统需求定义注重三种类型的需求:抽象的功能需求系统特性系统一定不能具有的性质系统设计所包括的活动有:分割需求(通常有多种分割方法,可以产生不同的方案)识别子系统为子系统分配需求(通常由于外购COTS子系统带来的限制而需要修改需求)描述子系统的功能定义子系统的接口,35,子系统开发所常见的问题:通常可以并行开发不同的子系统一些超出子系统范围的修改经常发生,但是对已经实现的硬件工程的修改往往带来非常昂贵的代价,这时修改往往落在软件上(软件的固有柔性,flexible),说明软件需求的变化更大更频繁。系统集成最好采取增量式过程,其理由是:
16、子系统的开发时间通常无法预计增量式集成可以减少错误定位的成本(错误定位可能引起不同子系统的承包商之间的争论,解决问题的谈判须花费时日),36,5.系统采购,系统获得的过程包括选择最好的购买方式和最佳的供货商。在做出采购决策之前,一些相关的系统描述和体系结构设计必须完成,以便确定哪些子系统可以通过直接购买,而不必或避免重新开发。通常单个机构无法完成大型复杂系统所有组件的设计、制造和测试。此时,客户必须选择和确定主承包商和子承包商。,37,承包商与子承包商模型,38,一、软件工程概述,软件工程的基本概念基于计算机的系统工程软件过程软件项目管理的基本内容,39,1.软件过程模型,一个软件过程模型是软
17、件过程的一个抽象表示。一般使用过程模型区分或解释不同的软件开发方法。在实际的软件开发中,很少单独使用单一的过程模型,4类软件过程模型生命周期模型(瀑布模型)进化式开发模型形式化系统开发模型面向复用的开发模型,瀑布模型,瀑布模型(Waterfall Model)软件生存周期模型(Classic Life Cycle Model)线性顺序模型(Linear Sequential Model),41,瀑布模型的三个特点,阶段间具有顺序性和依赖性推迟实现的观点质量保证的观点,42,瀑布模型的优点,开发过程基本上是线性顺序的,便于管理基于“明确、完备的需求”,可以获得好的开发效果,Cost to cha
18、nge,After release,The impact of change,Definition,Development,1.56x,1x,60100 x,The Waterfall Model With Maintenance Circle,45,进化式开发模型,进化式开发的思想:基于最初的需求,先开发一个原型系统给用户使用,然后,根据用户的反馈意见不断地修改这个系统,直到形成最后成熟的软件产品。所强调的是,需求可以不断地被补充和完善。进化式开发有两类探索式开发:其目标式与用户一起工作,共同探索需求,直到最后交付系统。抛弃式原型:开发原型的目标是理解用户需求。,46,从工程学和管理学角度看
19、,进化式开发有三方面的问题:过程不可见系统结构通常较差快速原型工具和技术往往与主流的工具和技术不相容实际使用的过程模型通常是混合模型The Waterfall Model With PrototypingThe V ModelThe Phased Development ModelThe Incremental and Iterative ModelThe Spiral Model,The Waterfall Model With Prototyping,运行、维护,需求分析,概要设计,详细设计,编码,单元集成测试,验收测试,系统测试,Validate Requirements,Verify
20、Design,The V Model,The Phased Development Model,Build Release 2,Build Release 1,Build Release 3,Time,Production system,Development system,Developers,Users,The Incremental and Iterative Model,Incremental Development,Iterative Development,51,增量开发的优点,能在较短的时间内向用户提交可以完成主要功能的产品逐步增加产品的功能,使用户有充裕的时间学习和适应新产品,
21、减少一个全新的产品给客户组织带来的冲击,The Spiral Model,53,螺旋模型的优点,有利于已有软件的重用有助于把软件质量作为软件开发的一个重要目标减少了过多测试或测试不足所带来的风险软件维护与软件开发没有本质区别,54,形式化系统开发,形式化开发模型类似于瀑布模型,但是软件需求描述被精练成一个用数学符号表达的详细的精确的形式化描述。需求描述经过一系列的变换过程,最终形成可执行程序。净室过程(Cleanroom,最初有IBM开发,增量式形式化开发和验证),一个形式化开发成功应用的例子。,Operational Specification Model,Transformational
22、Model,57,面向复用的开发,面向复用的开发依赖于可以存取的可复用组件集成这些组件的框架面向复用的开发过程需求描述组件分析需求修改使用复用的系统设计开发和集成系统有效性验证,58,2.软件描述,可行性研究需求导出和分析需求描述需求有效性验证,59,3.软件设计与实现,体系结构设计子系统的抽象描述(如包图)接口设计组件设计数据结构设计算法设计,60,4.软件有效性验证,单元测试功能模块测试子系统测试系统测试验收测试(如测试,测试),61,5.软件进化,软件进化,即软件在其生命周期内不断地随着需求的变更而变更的过程。软件系统的柔性决定了软件进化的现实避免昂贵的硬件修改软件进化亦存在一些问题软件
23、进化可以看作是软件开发过程和软件维护过程的统一。,62,6.自动化的过程支持,计算机辅助软件工程(CASE)有两个因素限制了CASE工具的使用软件工程本质上是一个富有创造力的设计活动,已经存在的CASE能使一些常规活动自动化,但尝试用人工智能技术代替人的创造性活动远未成功。软件过程强调的是团队活动以及涉众者之间的交流,在此,CASE也不能提高更多的支持。,63,CASE分类(Fuggetta,1993),64,CASE工具的功能分类,65,一、软件工程概述,软件工程的基本概念基于计算机的系统工程软件过程软件项目管理,66,软件项目管理要点,软件项目管理是必要的。软件项目管理与其它的工程管理有明
24、显的区别。软件项目管理者需要承担多种不同的任务,其中最重要的活动是项目规划、估算和进度控制。项目里程碑是一个项目活动可以预期的结果,到达一个里程碑就要把项目进展报告提交到管理层。为了有效控制项目进度,可以借助于各种各样的图表跟踪、表示项目进度。应识别和评估重大的项目风险,判断这些风险发生的可能性和后果。,67,1.管理活动,管理活动包括:人员管理软件成本估算质量管理过程改善软件配置管理,68,2.项目规划,项目规划的实质是项目管理者必须预测可能出现的问题,并准备有效的解决办法。项目规划的主要内容是制定项目计划、质量计划、有效性验证计划、配置管理计划、维护计划、人员培训计划等,69,3.项目调度
25、,项目管理者要估算完成各项活动所需的时间和资源,并按照一定的顺序把它们严密地组织起来。具体活动包括:识别活动(任务)识别活动依赖关系估算活动的资源为活动分配人员创建项目图表(条形图和活动网络图),70,4.风险管理,识别风险并制定计划,以最大限度地降低风险对项目的影响,这种活动叫做风险管理。(Hall,1998)三类风险产品风险:影响所开发软件产品的质量和性能的风险。项目风险:影响项目进度或项目资源的风险。业务风险:影响软件开发机构或产品购买机构的风险。风险管理过程风险识别风险分析风险规划风险监控,71,可能出现的软件风险,72,风险分析,73,风险因素分析,74,风险管理策略,75,高级软件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级软件工程 高级 软件工程 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5678007.html