您好,欢迎访问三七文档
主讲陈春玲南京邮电大学软件学院025-8588080213809029453V4.1高级软件工程目的和要求:了解软件开发技术的发展与现状,掌握目前大型软件系统的开发方法和技术,培养用规范化的方法开发大型软件。重点和难点:建立起面向对象软件开发方法的思维方式,用统一建模语言(UML)对复杂的软件系统建立可视化的系统模型。先修课:面向对象程序设计,数据结构,操作系统学时:40教材与参考书:(1)周之英,《现代软件工程》(中、下),科学出版社(2)郑人杰等,《实用软件工程》(第二版),清华大学出版社(3)张龙祥,《UML与系统分析设计》,人民邮电出版社(4)MaryShaw,《SoftwareArchitecture》,清华大学出版社高级软件工程教学内容第一章软件工程概述1软件技术概述(概念与特点、计算机软件技术、软件复用)2软件危机(产生的原因、解决方法)3软件工程(概念、原理、开发方法简介、软件工程环境)第二章需求分析工程1需求分析工程概述2需求分析工程3需求分析技术第三章软件开发的结构化方法1问题的定义,可行性研究2结构化分析和设计3软件测试,程序调试第四章软件开发的面向对象方法1面向对象方法概述2面向对象分析和设计3面向对象测试第五章统一建模语言UML与实例1UML概述2UML视图3可视化建模工具Rose4UML实例第六章面向对象开发中的设计模式1设计模式概述2四种设计模式3设计模式编目4设计模式选择及使用第七章软件体系结构1软件体系结构概述2体系结构不匹配问题3软件体系结构描述语言4体系结构风格第八章分布式系统与部件技术1分布式系统与部件技术概述2CORBA技术3COM技术第一章软件工程概述第一章软件工程概述1.1软件技术概述1.2软件危机1.3软件工程1.4软件工程环境在学习了“高级程序设计语言”和“数据结构”后,编写小程序不会有太大问题。但要开发一个大型软件一定有许多困难,例如在接到项目后,应该从哪儿入手、用什么方法、按照哪些步骤进行开发,如何评价一个软件的好坏,等等,这些都是初次参加大型软件的开发人员要遇到的问题。因此,必须学习软件工程。第一章软件工程概述南京邮电大学软件学院陈春玲高级软件工程一、软件的概念与特点程序是一系列指令序列的集合,它能被计算机理解和执行。文档是指用自然语言或者形式化语言所编写的文字资料和图表,用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法,如程序设计说明书、流程图、用户手册等。1.1软件技术概述第一章软件工程概述1.1软件技术概述1.1.1软件的概念与特点1.1.2计算机软件技术1.1.3软件复用1.2软件危机1.3软件工程1.4软件工程环境高级软件工程软件是计算机系统中与硬件子系统相互依存的另一个子系统,是一个包含程序及其文档资料的完整集合,提供了用户与硬件子系统之间的接口。随着计算机科学技术的发展,人们对软件的认识也在不断深化,这从下面式子变化就可以看出:70年代以前:软件=程序;70年代:软件=程序+文档;80年代以后:软件=文档+程序。在软件的可维护性变得越来越重要的今天,文档的地位也提高到前所未有的高度,并且能够自动化地生成。与小型软件不同,大型软件具有如下特点:⑴规模大现在的软件动咎上百兆,需要处理的数据量大,占用的内存也大。对于实时软件,除了规模大以外,还要求可靠性高。⑵复杂性高大型软件由大量的模块集成,模块间的关系、调用方式以及数据和文件的关系都相当复杂。⑶开发周期长大型软件从立项到交付使用,需几十人、几百人经过几个月甚至几年的时间。⑷开发、维护和使用人员不同⑸多学科综合软件开发人员除了具有必备的软件知识外,还应该具有多方面的专业知识和经验。二、计算机软件技术计算机软件技术是指开发计算机软件所需的所有技术的总称。按照软件分支学科的内容划分,计算机软件技术相应有如下几个领域:(1)软件工程技术包括软件开发的原则与策略、软件开发方法与软件过程模型、软件标准与软件质量的衡量、软件开发的组织与项目管理和软件工程工具和环境等。第一章软件工程概述1.1软件技术概述1.1.1软件的概念与特点1.1.2计算机软件技术1.1.3软件复用1.2软件危机1.3软件工程1.4软件工程环境⑵程序设计技术包括程序的结构与算法设计、程序设计的风格、程序设计语言、程序设计方法和程序设计自动化、程序的正确性证明和程序的变换。⑶软件工具环境技术包括人机接口技术、软件自动生成、软件工具的集成、软件开发环境和软件的复用等。⑷系统软件技术包括操作系统、编译方法、分布式系统的分布处理与并行计算、并行处理技术和多媒体软件技术⑸数据库技术包括数据模型、数据库与数据库管理系统、分布式数据库、面向对象的数据库技术、工程数据库、多媒体数据库,以及数据仓库和数据挖掘等。⑹实时软件技术⑺网络技术包括网络软件技术、调试工程、网络管理、局域网技术、网络互连技术和智能网络等。三、软件复用1.软件复用(软件重用)概述从1968年提出可复用库的思想后,软件复用的概念被推广了。软件复用是指在构造新的软件系统过程中,对已存在的软件产品(设计结构、源代码、文档等)重复使用的技术。软件复用有三个层次:知识复用、方法复用和软件成分复用。前两个属于知识工程的范畴,这里只讨论软件成分的复用。第一章软件工程概述1.1软件技术概述1.1.1软件的概念与特点1.1.2计算机软件技术1.1.3软件复用1.2软件危机1.3软件工程1.4软件工程环境软件成分的复用包括以下三个级别:⑴代码的复用可以采用源代码剪贴、源代码包含和继承来实现。⑵设计结果的复用指复用某个软件系统的设计模型。适用于软件系统的移植。⑶分析结果的复用是指复用某个软件系统的分析模型。适用于用户需求未改变,而系统体系结构变化的场合。不属于软件复用的范畴:程序的重复运行、执行期间的重复调用等。软件复用的优点:由于软件复用利用已有的软件成分来构造新的软件,因此大大缩减了软件开发所需的人力、物力、财力和开发时间,并且能提高软件的可靠性和可维护性。2.软件复用技术软件复用技术分为两类:合成技术和生成技术。(1)合成技术利用部件(component,组件,构件)合成软件系统的技术。部件是可复用的一小段软件(可为二进制形式),可以是对某一函数、过程、子程序、数据类型、算法等可复用软件成分的抽象,封装了功能细节和数据结构,有详细的接口。Microsoft等公司提出了OLE/COM(ObjectLinkingEmbeding/ComponentObjectModel,对象链接和嵌入/组件对象模型)概念,并开发出各种独立的标准组件,用户使用这些组件集成自己的软件,提高了软件的质量,软件维护更加容易,同时降低了软件开发成本。目前有三个重要的部件技术:①OMG的CORBA技术②Microsoft的COM+技术③Sun公司JavaBeansAPI,基于Java的部件技术标准。CORBA技术,是异构系统中的分布式部件技术。CORBA(CommonObjectRequestBrokerArchitecture,公共对象请求代理体系结构)是由OMG(ObjectManagementGroup)提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用。在1990年开始制定并且逐步完善的部件标准。CORBA3.0。COM+是微软公司在新的企业应用体系结构下,将COM、DCOM和MTS统一起来,形成真正适合于企业级应用的部件技术。“COM+”容易使人产生误解,以为它是COM的新版本,其实COM+的含义远比COM丰富得多。COM+是一种中间件技术的规范,其要点是提供建立在操作系统上的、支持分布式企业级应用的“服务”。COM+是在20世纪末随着Windows2000发布才面世的。有三种方法将部件合成更大的部件:①连接标准函数库中的标准函数靠编译和连接程序与其它模块一起合成系统。②消息传递和继承smalltalk。③管道机制UNIX中用管道(pipe)连接命令shell,使前一命令的输出做为后一命令的输入,用管道机制把多个shell命令连接在一起完成一个更加复杂的系统。(2)生成技术利用可复用的模式,通过生成程序产生一个新的程序或程序段,产生的程序可以看成是模式的实例。可复用的模式有两种:代码模式和规则模式。①代码模式可复用的代码模式存在于应用生成器中,通过特定的参数替换,生成抽象软件模块的具体实体。各种程序生成器。②规则模式利用程序变换系统,把用超高级规格说明语言编写的程序转化成某种可执行语言的程序。IDL——CORBA的接口定义语言。一、软件危机概述“软件工程”起因于“软件危机”。60年代末期出现的软件危机,使软件陷入到“泥潭”之中。什么是软件危机?软件危机是指在软件开发过程中遇到的一系列严重问题,如:开发周期延长,成本增加,可靠性降低等。1.2软件危机第一章软件工程概述1.1软件技术概述1.2软件危机1.2.1软件危机概述1.2.2产生的原因1.2.3解决方法1.3软件工程1.4软件工程环境高级软件工程例1IBMOS/360系统,有346万条汇编语句,1968至1978年投入5000人年,共改21版,结果不能使用。例21962年美国飞往金星的探测卫星发射失败,原因是控制系统中的一个FORTRAN循环语句DO5I=1,3被误写成DO5I=1.3,由于空格对FORTRAN编译程序没有意义,误写的语句被当成了赋值语句DO5I=1.3,一点之差,使卫星偏离轨道,只好下令引爆,导致1850万美元的损失。DO5I=1,3循环体5K=X/Y+34.6除了不能正常运行的软件,软件危机还反映在如下几个方面:⑴对软件成本、开发成本和开发进度的估计不准确;软件成本在计算机系统总成本中所占的比例逐年上升;⑵用户对“己完成的”软件系统不满意的现象时常发生;⑶软件产品的质量往往靠不住;⑷软件通常没有适当的文档资料,维护困难。⑸软件开发生产率的提高速度远跟不上计算机应用的普及和深入的趋势。二、软件危机产生的原因46年第一台计算机“诞生”后的很长一段时间里,人们都是用计算机来解决一些“小问题”,编制一些小程序。随着计算机软硬件的发展,人们用计算机来解决的问题越来越大,程序规模也越来越大,而开发大型软件与编制小程序有一定区别:第一章软件工程概述1.1软件技术概述1.2软件危机1.2.1软件危机概述1.2.2产生的原因1.2.3解决方法1.3软件工程1.4软件工程环境高级软件工程⑴人员。小程序从确定要求、设计、编制、使用,直到维护通常由一个人完成;大型软件则必须由用户、项目负责人、分析员、初级程序员、资料员、操作员等组成一支开发队伍来协同完成。⑵文档。小程序是编制者脑中的“产品”,很少有书面文档;大型软件则是集体劳动的“产物”,必须有规范化的文档,便于开发和维护。⑶产品。小程序通常是一次性的,如果需作大的修改,则宁可舍弃旧程序而重新编写;但大型软件的开发耗费了大量的人力与物力,所以不可能轻易抛弃,而总是在旧软件的基础上一再改动,以延长它的使用期,因此“版本”在不断升级。大型软件的开发提出了许多新的问题,而开发方法却还停留在编制小程序的方法上,经验和技巧已不能满足开发大型软件的需要,导致软件开发过程混乱;使用的开发方法和技术不当,没有适当的文档,不易交流,维护困难,开发成本高,软件质量低等等,这些问题是造成软件危机的主要原因。三、软件危机的解决方法以“工程化”的思想来指导软件开发。软件危机使人们认识到,软件的研制和开发不能象以前那样——开发过程混乱、无规范化的文档、个体作坊式的开发,而必须立足于科学理论的基础上,像生产产品、研制一台机器或建造一座楼房那样,以“工程化”的思想来指导软件开发,解决软件研制中面临的困难和混乱,从根本上解决软件危机。第一章软件工程概述1.1软件技术概述1.2软件危机1.2.1软件危机概述1.2.2产生的原因1.2.3解决方法1.3软件工程1.4软件工程环境高级软件工程从技术上,以软件工程技术、程序设计方法和技术为基础,力求将软
本文标题:软件工程(完整版)
链接地址:https://www.777doc.com/doc-3765786 .html