软件工程教程 概论_第1页
软件工程教程 概论_第2页
软件工程教程 概论_第3页
软件工程教程 概论_第4页
软件工程教程 概论_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程王涛华东交通大学软件学院E-mial:wthdjd@163.com第一章概论如何理解“软件工程”?软件工程

(SoftwareEngineering,简称SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。软件工程采用系统工程学和管理学相结合的原理、方法和技术来指导、管理和实施软件的各种活动,包括软件开发、运行、维护和服务等。1.1.1软件工程的概念传统工业,如道路桥梁工程、民用建筑工程和化学工程等“软件工程”有代表性的定义:软件工程是一种工程形式,它运用计算机科学和数学原理,针对软件问题获得一种经济有效的解决方案。用系统的、规范的、可度量的方法,开发、运行和维护软件。}软件工程的基本目标高质量高生产力1.满足客户需求2.获得最好收益1.1.2软件工程的发展20世纪六七十年代,计算机硬件技术有了很大的发展,为计算机的广泛应用创造了条件,并要求软件与之相适应。然而当时的软件开发与维护技术无法满足日益增长的软件产品需求!!!表现如下:1.开发工具落后2.程序设计语言功能差3.软件可维护性差“软件危机”1968年的NATO(北大西洋公约组织)会议需要将工程技术的思想引入软件开发领域。会议上第一次提出了“软件工程”这个名词。1.软件工程的成型与发展历程软件工程的初步成型首先是从软件工程过程开始的。为获得高质量的软件产品,软件工程过程必须科学、合理。这就涉及到软件生命周期的描述采用何种模型的问题。螺旋模型渐增模型喷泉模型快速应用开发模型快速原型模型瀑布模型智能模型软件生命周期软件生命周期方法学把软件开发和维护分成软件定义、软件开发和软件维护三个时期,每个时期又分成若干个阶段。软件定义时期:确定软件开发必须完成的任务;论证软件的可行性;确定用户需求的详细功能和性能。这个时期可以划分为三个阶段:问题定义、可行性研究和需求分析。(2)软件开发时期:设计和实现软件的定义。软件开发时期包

括四个阶段:总体设计、详细设计、编码及单元测试、综合测试。(3)软件维护时期:软件维护是对投入使用的软件的修改,实

际上是对软件的一次重新定义和开发过程。1.问题定义:在问题定义阶段,软件开发人员应该清楚:“要解决什么问题”。2.可行性研究:知道了要解决的问题,在这个阶段应该清楚“用什么办法解决这个问题”,保证在技术上、实效上、法律上都是行得通的。3.需求分析:确定软件的功能和性能。4.总体设计:设计软件的总体结构,将一个大系统按照功能设计成小模块,每个模块完成一个相对独立的小功能。总体设计有时也称概要设计。

5.详细设计:这个阶段还不是编写程序,是对每个模块设计具体的算法和数据结构,可以包括具体细节,类似于工程设计中的施工图纸。详细设计有时也称模块设计。6.编码和单元测试:这个阶段的主要任务是根据详细设计的结果,用一种程序设计语言,编写正确的源程序,并且对每段程序进行严格测试。要求源程序容易理解、容易维护。7.综合测试:通过测试使软件系统达到用户的要求。最基本的测试集成测试和验收测试。8.软件维护:软件投入运行后的维护活动。面向过程(Procedure-oriented,简称PO)面向对象(Object-oriented,简称OO)统一建模语言(UnifiedModelingLanguage,UML)基于净室技术、敏捷技术、重构技术、人工智能技术互联网和图像化接口技术基于面向对象基础的构件技术计算机辅助软件工程(ComputerAidedSoftwareEngineering,简称CASE)

21世纪软件发展的趋势软件即服务人机交互应用模式资源共享与管理应用模式中间件技术、对等计算、语义网、自治计算随需即取等2.软件工程学科的基本确立1983年,IEEE给软件工程下了定义,即“软件工程是开发、运行、维护和修复软件的系统方法”。B.W.Boelim提出关于软件工程的7条基本原理:用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进的软件工程实践的必要性原则、方法与技术软件工程在软件开发、管理、维护中所作的研究

软件工程学就是研究“如何借助科学的理论和现代工程技术来指导软件的开发,从而达到用较少的投资获得高质量的、可靠的软件的目的”

。程序设计时期软件时期软件工程时期后软件工程时期软件工程学4个发展时期我们现在处于该时期!3.软件工程管理的规范化和标准化软件工程管理,就是从工程学角度出发,对软件工程的项目范围、项目周期、产品质量、知识资源、人力资源和项目成本等六大要素进行管理,克服软件危机,规避软件风险,提高软件开发效益和质量,降低软件开发成本。方法与技术工具与环境标准与规范组织与管理完整意义上的软件工程4.启示与总结纵观软件工程的发展历史,我们可以得到以下启示:(1)研究工程理论和实践需要有系统科学的思想(2)软件工程管理任重道远(3)软件工程的新技术新方法将不断涌现1.2软件开发技术软件开发技术,它包括软件生存期模型、软件开发方法、软件开发工具和环境以及软件管理技术。1.2.1软件生存期模型软件生存期模型(也称软件生命周期模型)——是描述软件开发过程中各种活动如何执行的模型。

目前典型的软件开发模型有:

瀑布模型、增量模型、螺旋模型、喷泉模型和变换模型等。不同的开发方法有不同的软件过程模型。瀑布模型瀑布模型的优点它提供了一个模版,模版使得分析、设计、编码、测试和维护的方法可以在该模版下有一个共同的指导。虽然有不少缺陷,但比在软件开发中随意的状态要好得多。瀑布模型的缺点实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易有微小的变化而造成大的混乱。经常情况下用户难以表达真正的需求,而这种模式却要求如此,这种模型是不欢迎具有二义性问题存在的。瀑布模型的缺点用户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时若发现大的错误,可能引起用户的惊慌,而后果也可能是灾难性的。采用这种线性模型,经常在过程的开始和结束时,要等待其他成员完成后,才能进行下去,有可能花在等待的时间比开发的时间有长。我们称之为“堵塞状态”。用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用……一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。快速原型模型增量模型增量模型的优点人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量先发布部分功能给用户,对用户起到镇静剂的作。具有一定的市场。螺旋模型螺旋模型的优点对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。螺旋模型的缺点需要相当的风险分析评估的技术,且成功就依赖于这种技术。显然,若存在一个没有被发现的大风险,将会出现问题,甚至可能导致演化过程失去控制。喷泉模型优点:喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。喷泉模型的缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。变换模型变换模型的优点形式化规约可直接作为程序验证的基础,可以尽早地发现和纠正错误(包括那些在其他情况下不能发现的错误)。开发出来的软件具有很高的安全性和健壮性,特别适合安全部门或者软件错误会造成经济损失的开发项目。变换模型的缺点开发费用高,而且需要的时间长。不能将该模型作为对客户通信的机制,因为客户对这些数学语言一无所知。具有开发无缺陷软件的承诺1.2.2软件开发方法软件开发方法主要包括:面向过程的开发方法面向对象的开发方法基于构件的开发方法传统的软件开发方法:结构化开发方法(StructuredDeveloping)、Jackson方法、原型化方法(PrototypingMethod)、HIPO法等。面向对象的软件开发方法OOSD(Object-OrientedSoftwareDevelopment)基于构件的开发(Component-BasedDevelopment,简称CBD)或基于构件的软件工程(Component-BasedSoftwareEngineering,简称CBSE)基于构件的开发(Component-BasedDevelopment,简称CBD)是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。已经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工程发展方向之一。接口和契约构件

CBD开发模式构件技术和对象技术的关系构件框架基于构件开发的相关概念:1.构件软件构件是一个仅带特定契约接口和显式语境依赖的结构单元,软件构件可以独立部署,易于第三方整合。2.接口和契约接口(Interface)是用户与构件发生交互的连接渠道,第三方只能通过构件接口的规格说明理解和复用构件,接口规格说明也是一种“契约”(Contract),它足够精确地描述构件实现的功能,同时又不把构件限定于唯一的实现方法,3.构件框架构件框架(Framework)是构件实例“即插即用”的支撑结构。通过一定的环境条件和交互规则,构件框架允许一组构件形成一个“孤岛”,独立地与外部构件或其他框架交互和协作,因此构件框架及其内含的构件也可以视为一个构件。4.CBD开发模式开发任务创建检索和评价适配(adaptation)组装测试和验证配置和部署维护和演进……不同于传统的软件生命周期开发方法5.构件技术和对象技术的关系构件技术与面向对象技术紧密相关。构件和对象都是对现实世界的抽象描述,通过接口封装了可复用的代码实现。然而两者在以下三方面不同:概念层面复用策略技术手段当今,构件技术已经成为计算环境的基本组成之一,众多中间件产品和开发工具提供了对不同构件模型的实现支持,然而有关CBD开发方法学,至今仍有一些问题尚未解决!1.3软件开发环境软件开发环境(SoftwareDevelopmentEnvironment,SDE)一般以对象库为基础来组织环境,支持封装性、实例化、类属和继承,达到了较高的集成度和开放性的统一。1.3.1软件开发环境简介人机界面软件工具算法语言如C、C#、C++和Java等1.3.2软件开发环境的分类软件开发环境可按以下几种角度分类:1.按软件开发模型及开发方法分类,有支持瀑布模型、演化模型、螺旋模型、喷泉模型以及结构化方法、信息模型方法、面向对象方法等不同模型及方法的软件开发环境。2.按功能及结构特点分类,有单体型、协同型、分散型和并发型等多种类型的软件开发环境。3.按应用范围分类,有通用型和专用型软件开发环境。其中专用型软件开发环境与应用领域有关,故又软件开发方法(SoftwareDevelopmentMethod)是指软件开发过程所遵循

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论