您好,欢迎访问三七文档
软件工程王涛华东交通大学软件学院E-mial:wthdjd@163.com2软件工程教材江西高校出版社•如何理解“软件工程”?软件工程(SoftwareEngineering,简称SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。3软件工程教材江西高校出版社软件工程采用系统工程学和管理学相结合的原理、方法和技术来指导、管理和实施软件的各种活动,包括软件开发、运行、维护和服务等。思想基础传统工业,如道路桥梁工程、民用建筑工程和化学工程等4软件工程教材江西高校出版社“软件工程”有代表性的定义:软件工程是一种工程形式,它运用计算机科学和数学原理,针对软件问题获得一种经济有效的解决方案。用系统的、规范的、可度量的方法,开发、运行和维护软件。5软件工程教材江西高校出版社}软件工程的基本目标高质量高生产力1.满足客户需求2.获得最好收益6软件工程教材江西高校出版社20世纪六七十年代,计算机硬件技术有了很大的发展,为计算机的广泛应用创造了条件,并要求软件与之相适应。然而当时的软件开发与维护技术无法满足日益增长的软件产品需求!!!表现如下:1.开发工具落后2.程序设计语言功能差3.软件可维护性差7软件工程教材江西高校出版社“软件危机”1968年的NATO(北大西洋公约组织)会议需要将工程技术的思想引入软件开发领域。会议上第一次提出了“软件工程”这个名词。8软件工程教材江西高校出版社1.软件工程的成型与发展历程软件工程的初步成型首先是从软件工程过程开始的。为获得高质量的软件产品,软件工程过程必须科学、合理。这就涉及到软件生命周期的描述采用何种模型的问题。螺旋模型渐增模型喷泉模型快速应用开发模型快速原型模型瀑布模型智能模型9软件工程教材江西高校出版社•软件生命周期软件生命周期方法学把软件开发和维护分成软件定义、软件开发和软件维护三个时期,每个时期又分成若干个阶段。10软件工程教材江西高校出版社(1)软件定义时期:确定软件开发必须完成的任务;论证软件的可行性;确定用户需求的详细功能和性能。这个时期可以划分为三个阶段:问题定义、可行性研究和需求分析。(2)软件开发时期:设计和实现软件的定义。软件开发时期包括四个阶段:总体设计、详细设计、编码及单元测试、综合测试。(3)软件维护时期:软件维护是对投入使用的软件的修改,实际上是对软件的一次重新定义和开发过程。11软件工程教材江西高校出版社1.问题定义:在问题定义阶段,软件开发人员应该清楚:“要解决什么问题”。2.可行性研究:知道了要解决的问题,在这个阶段应该清楚“用什么办法解决这个问题”,保证在技术上、实效上、法律上都是行得通的。3.需求分析:确定软件的功能和性能。4.总体设计:设计软件的总体结构,将一个大系统按照功能设计成小模块,每个模块完成一个相对独立的小功能。总体设计有时也称概要设计。12软件工程教材江西高校出版社5.详细设计:这个阶段还不是编写程序,是对每个模块设计具体的算法和数据结构,可以包括具体细节,类似于工程设计中的施工图纸。详细设计有时也称模块设计。6.编码和单元测试:这个阶段的主要任务是根据详细设计的结果,用一种程序设计语言,编写正确的源程序,并且对每段程序进行严格测试。要求源程序容易理解、容易维护。7.综合测试:通过测试使软件系统达到用户的要求。最基本的测试集成测试和验收测试。8.软件维护:软件投入运行后的维护活动。13软件工程教材江西高校出版社•面向过程(Procedure-oriented,简称PO)•面向对象(Object-oriented,简称OO)•统一建模语言(UnifiedModelingLanguage,UML)14软件工程教材江西高校出版社基于净室技术、敏捷技术、重构技术、人工智能技术互联网和图像化接口技术基于面向对象基础的构件技术计算机辅助软件工程(ComputerAidedSoftwareEngineering,简称CASE)15软件工程教材江西高校出版社21世纪软件发展的趋势中间件技术、对等计算、语义网、自治计算随需即取等16软件工程教材江西高校出版社2.软件工程学科的基本确立1983年,IEEE给软件工程下了定义,即“软件工程是开发、运行、维护和修复软件的系统方法”。B.W.Boelim提出关于软件工程的7条基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进的软件工程实践的必要性17软件工程教材江西高校出版社原则、方法与技术软件工程在软件开发、管理、维护中所作的研究软件工程学就是研究“如何借助科学的理论和现代工程技术来指导软件的开发,从而达到用较少的投资获得高质量的、可靠的软件的目的”。18软件工程教材江西高校出版社程序设计时期软件时期软件工程时期后软件工程时期软件工程学4个发展时期我们现在处于该时期!19软件工程教材江西高校出版社3.软件工程管理的规范化和标准化软件工程管理,就是从工程学角度出发,对软件工程的项目范围、项目周期、产品质量、知识资源、人力资源和项目成本等六大要素进行管理,克服软件危机,规避软件风险,提高软件开发效益和质量,降低软件开发成本。方法与技术工具与环境标准与规范组织与管理完整意义上的软件工程20软件工程教材江西高校出版社4.启示与总结纵观软件工程的发展历史,我们可以得到以下启示:(1)研究工程理论和实践需要有系统科学的思想(2)软件工程管理任重道远(3)软件工程的新技术新方法将不断涌现21软件工程教材江西高校出版社软件开发技术,它包括软件生存期模型、软件开发方法、软件开发工具和环境以及软件管理技术。22软件工程教材江西高校出版社软件生存期模型(也称软件生命周期模型)——是描述软件开发过程中各种活动如何执行的模型。目前典型的软件开发模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和变换模型等。不同的开发方法有不同的软件过程模型。23软件工程教材江西高校出版社需求分析确认设计确认编码确认测试确认维护确认瀑布模型24软件工程教材江西高校出版社瀑布模型的优点•它提供了一个模版,模版使得分析、设计、编码、测试和维护的方法可以在该模版下有一个共同的指导。•虽然有不少缺陷,但比在软件开发中随意的状态要好得多。25软件工程教材江西高校出版社瀑布模型的缺点•实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易有微小的变化而造成大的混乱。•经常情况下用户难以表达真正的需求,而这种模式却要求如此,这种模型是不欢迎具有二义性问题存在的。26软件工程教材江西高校出版社瀑布模型的缺点•用户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时若发现大的错误,可能引起用户的惊慌,而后果也可能是灾难性的。•采用这种线性模型,经常在过程的开始和结束时,要等待其他成员完成后,才能进行下去,有可能花在等待的时间比开发的时间有长。我们称之为“堵塞状态”。27软件工程教材江西高校出版社用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用……一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。快速原型模型28软件工程教材江西高校出版社需求分析增量1发布编码1测试1增量2发布测试2编码2测试3增量3发布编码3设计增量1增量2增量3增量模型29软件工程教材江西高校出版社增量模型的优点•人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量•先发布部分功能给用户,对用户起到镇静剂的作。•具有一定的市场。30软件工程教材江西高校出版社螺旋模型31软件工程教材江西高校出版社螺旋模型的优点•对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。螺旋模型的缺点•需要相当的风险分析评估的技术,且成功就依赖于这种技术。•显然,若存在一个没有被发现的大风险,将会出现问题,甚至可能导致演化过程失去控制。32软件工程教材江西高校出版社演化实现维护设计分析喷泉模型优点:喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。33软件工程教材江西高校出版社喷泉模型的缺点•由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。34软件工程教材江西高校出版社与需求比较后修正形式化规格说明系统需求交换1交换2交换n……测试目标系统形式化开发记录变换模型35软件工程教材江西高校出版社变换模型的优点•形式化规约可直接作为程序验证的基础,可以尽早地发现和纠正错误(包括那些在其他情况下不能发现的错误)。•开发出来的软件具有很高的安全性和健壮性,特别适合安全部门或者软件错误会造成经济损失的开发项目。36软件工程教材江西高校出版社变换模型的缺点•开发费用高,而且需要的时间长。•不能将该模型作为对客户通信的机制,因为客户对这些数学语言一无所知。•具有开发无缺陷软件的承诺37软件工程教材江西高校出版社软件开发方法主要包括:面向过程的开发方法面向对象的开发方法基于构件的开发方法38软件工程教材江西高校出版社传统的软件开发方法:结构化开发方法(StructuredDeveloping)、Jackson方法、原型化方法(PrototypingMethod)、HIPO法等。39软件工程教材江西高校出版社面向对象的软件开发方法OOSD(Object-OrientedSoftwareDevelopment)基于构件的开发(Component-BasedDevelopment,简称CBD)或基于构件的软件工程(Component-BasedSoftwareEngineering,简称CBSE)40软件工程教材江西高校出版社基于构件的开发(Component-BasedDevelopment,简称CBD)是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。已经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工程发展方向之一。41软件工程教材江西高校出版社接口和契约构件CBD开发模式构件技术和对象技术的关系构件框架基于构件开发的相关概念:42软件工程教材江西高校出版社1.构件软件构件是一个仅带特定契约接口和显式语境依赖的结构单元,软件构件可以独立部署,易于第三方整合。2.接口和契约接口(Interface)是用户与构件发生交互的连接渠道,第三方只能通过构件接口的规格说明理解和复用构件,接口规格说明也是一种“契约”(Contract),它足够精确地描述构件实现的功能,同时又不把构件限定于唯一的实现方法,43软件工程教材江西高校出版社3.构件框架构件框架(Framework)是构件实例“即插即用”的支撑结构。通过一定的环境条件和交互规则,构件框架允许一组构件形成一个“孤岛”,独立地与外部构件或其他框架交互和协作,因此构件框架及其内含的构件也可以视为一个构件。44软件工程教材江西高校出版社4.CBD开发模式创建检索和评价适配(adaptation)组装测试和验证配置和部署维护和演进……不同于传统的软件生命周期开发方法45软件工程教材江西高校出版社5.构件技术和对象技术的关系构件技术与面向对象技术紧密相关。构件和对象都是对现实世界的抽象描述,通过接口封装了可复用的代码实现。然而两者在以下三方面不同:概念层面复用策略技术手段46
本文标题:软件工程教程-概论
链接地址:https://www.777doc.com/doc-4237188 .html