软件工程简介入门.ppt

上传人:牧羊曲112 文档编号:6610911 上传时间:2023-11-17 格式:PPT 页数:77 大小:1.38MB
返回 下载 相关 举报
软件工程简介入门.ppt_第1页
第1页 / 共77页
软件工程简介入门.ppt_第2页
第2页 / 共77页
软件工程简介入门.ppt_第3页
第3页 / 共77页
软件工程简介入门.ppt_第4页
第4页 / 共77页
软件工程简介入门.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《软件工程简介入门.ppt》由会员分享,可在线阅读,更多相关《软件工程简介入门.ppt(77页珍藏版)》请在三一办公上搜索。

1、软件工程Software Engineering,主讲人:邱栋,课程介绍及要求,用工程化的方法来开发软件,Copyright Xinjun Mao,课程介绍和要求,教学目标,为什么要学习这门课程有助于正确理解和认识“软件”的概念及其特点理解软件开发面临的问题和挑战掌握软件工程的原则、方法和思想来系统地开发软件,尤其是复杂、庞大的软件的开发了解和接触软件开发所需的各种技术手段理解、掌握和运用,Copyright Xinjun Mao,课程介绍和要求,理解,什么是软件工程为什么需要软件工程(产生背景)软件工程需要解决那些问题软件工程涉及那些方面内容,Copyright Xinjun Mao,课程介

2、绍和要求,掌握,软件工程概念技术过程手段工具,Copyright Xinjun Mao,课程介绍和要求,运用,运用工程化思想进行软件开发需求分析软件设计程序设计软件维护,Copyright Xinjun Mao,课程介绍和要求,内容组织(见教学日历),先导要求,程序设计语言最好有一定的软件开发经验,Copyright Xinjun Mao,课程介绍和要求,学习要求,听理解知识点和思想无需死记硬背做实践体会软件工程的原则、方法和技术,在实践中提高培养抽象思维能力培养独立解决问题的能力培养合作精神想阅读相关资料,Copyright Xinjun Mao,课程介绍和要求,9,考核方式,实习(40%)

3、考试(60%),Copyright Xinjun Mao,课程介绍和要求,10,课程实习要求(1/2),内容选择一个项目开发课题,用软件工程的思想知道其开发过程。完成需求分析,详细设计,测试,项目汇报。时间每四周提交一个,最后一次实习课为项目汇报分组以小组为单位,68人一组为宜,Copyright Xinjun Mao,课程介绍和要求,11,课程实习要求(2/2),提交内容电子文档评价方法按阶段递交和打分文档:完整性、合理性、规范性注意:严格按照要求执行,Copyright Xinjun Mao,课程介绍和要求,12,参考文献,软件工程导论(第五版),张海藩,清华大学出版社软件工程实践导论-有

4、关方法、设计、实现、管理之三十六计,金尊和,清华大学出版社,2005.软件开发的科学与艺术,微软亚洲研究院,电子工业出版社,2002年 软件工程实践者的研究方法,R S.Pressman,机械工业出版社现代软件工程,周之英编著,科学出版社,第1章 软件工程概述,软件工程产生的背景(软件危机)软件工程定义软件工程方法学软件过程模型小结,计算机的发展,人类社会相对于浩瀚的宇宙来说只是沧海一粟软件的历史相对于人类的历史更如白驹过隙,1.1 软件工程产生的背景,计算机渗透到了各行各业,计算机是一种工具(君子性非异也,善假于物也),什么样的工具能渗透到各行各业?,代替我们大脑的工具!,软件计算机的灵魂,

5、软件是计算机系统中与硬件相互依存的另一部分,软件不同于工业产品,软件不同于艺术品,软件不同于艺术品,软件需要逻辑因为它是多人合作,计时间,计成本,按计划完成规定的功能和质量要求的物质商品!,软件的特点,软件无实体软件无损耗,无备件软件是一种逻辑产品软件是思维的产物!,什么是软件,软件是计算机系统中与硬件互相依存的另一部分,它包括程序、数据、及其相关文档组成的完整集合。,软件=程序+文档,+服务,软 件 a.软件的定义 软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program),数据(Data)及其相关文档(Document)的完整集合。Software=Pr

6、ogram+Data+Document 程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料,Copyright Xinjun Mao,22,非常复杂,逻辑复杂远远高于硬件的逻辑复杂度开发复杂成本难以估算进度难以控制人员素质要求质量得不到保证96年Ariane火箭发射失败,浮点数转换时发生错误,1.1 软件工程产生的背景 b、软件的特征,成本高(1/2),1.1 软件工程产生的背景 b、软件的特征,Copyright Xinjun Mao,课程介绍和要求,成本高(2/2),Copyright Xinjun Mao,课程

7、介绍和要求,风险大,1995年美国Standish咨询集团的统计分析(至90年代初的软件项目执行情况)成功:16.2%失败:31受到挑战:53.8%近几年来的统计数据成功:26失败:28受到挑战:46%,1.1 软件工程产生的背景 b、软件的特征,维护困难,维护形式多样化改正性:修改故障完善性:增加功能适应性:移植维护成本越来越高55%到70维护带来的问题,1.1 软件工程产生的背景 b、软件的特征,1.1 软件工程产生的背景,c.软件的发展,早期面向批处理有限的分布自定义软件,第二阶段多用户实时数据库软件产品,第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响,第四阶段强大的桌面系统面向对

8、象技术专家系统人工神经网络并行计算网路计算机,1950,1960,1970,1980,1990,2000,1968年10月,北大西洋公约组织(NATO)的科学家在德国召开的学术会议上正式提出了软件危机问题。,1.1 软件工程产生的背景,2)、软件危机 a、软件危机的表现(1/3),成本高IBM 360 OS,5000多人年,耗时4年(19631966),花费2亿多美元美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元计算机软件和硬件费用比,软件质量得不到保证软件应用面的扩大:科学计算、军事、航空航天、

9、工业控制、企业管理、办公、家庭软件越来越多的应用于安全攸关(safety critical)的系统,对软件质量提出更高的要求80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误美国阿托拉斯火箭的发射失败,原因是软件故障英国1986年开发的办公室信息系统Folios经4年,因性能达不到要求,1989年取消日本第5代机因为软件问题在投入50亿美元后于1993年下马由于软件质量问题导致失败的软件项目非常多,a、软件危机的表现(2/3),a、软件危机的表现(3/3),进度难以控制项目延期比比皆是由于进度问题而取消的软件项目较常见只有一小部分的项目能够按期完成维护非常困难软件维护的多样性软件维护的复杂性软

10、件维护的副作用,b、产生软件危机的原因,与软件本身的特点有关(难于维护,逻辑复杂)与软件开发与维护的方法不正确有关:软件程序急于求成=拔苗助长各自为阵无方法/学,开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样正如建设狗窝和高楼大厦大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系列软件过程和活动,C、软件工程(学)因危机而产生,d、软件工程(学):克服软件危机的努力,(1)从管理的角度 软件开发过程的研究、文档的标准化以及人们 的交流方式等(2)软件开发方法的研究结构化软件开发方法,面向对象的开发,提出有效

11、的方法和工具支持软件开发1968年提出软件工程概念和思想20世纪70年代的结构化软件开发方法20世纪80年代的面向对象的软件开发方法新的技术:软件重用、快速原型、需求工程典型技术:COM,Java,C+,J2EE,.Net,.支撑工具和环境:Jbuilder,Visual Studio,WebLogic,1、解决危机的技术途径,20世纪80年代末,美国DoD和工业界开始认识到管理的重要性美国DoD的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量;进一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部如果软件开发组织不能对软件项目进行有效管理,就不能充分发

12、挥软件开发方法和工具的潜力,也就不能高效率地开发出高质量的软件产品,2、解决危机的管理途径,1.2 软件工程定义(1),The establishment and use of sound engineering principles(methods)in order to obtain economically software that is reliable and works on real machines.(1968-Fritz Bauer),软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。,1.2 软件工程定义(2),Softwar

13、e engineering.(1)The application of a systematic,disciplined,quantifiable approach to the development,operation,and maintenance of software;that is,the application of engineering to software.(2)The study of approaches as in(1).(IEEE(The Institute for Electrical and Electronic engineers)Std 610-1990.

14、),软件工程是:(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径。,1.2 软件工程定义,总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。,软件工程的特性,1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人,1.2 软件工程定义,软件工程的基本原理,用分阶段的生命周

15、期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性,软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程领域中,这两个术语的含义基本相同。软件工程方法学包含3个要素:方法、工具和过程。,1.3 软件工程方法学,1.3 软件工程方法学,软件工程:一种层次化技术,软件工程三个要素:工具、方法、过程,基础层,综合方法及工具,定义方法使用的顺序,所需要的管理

16、,为软件开发提供“如何做”的技术,为软件开发提供自动或半自动的软件支撑环境,建立计算机辅助软件工程(CASE)的软件开发支撑系统,1.3 软件工程方法学,ALM(Application Lifecycle Management),MSF(Microsoft Solution Framework),软件工程层次的扩展,1.4 软件生命周期模型,问题定义 软件定义 可行性研究 需求分析 总体设计 详细设计软件生命周期 软件开发 编码 单元测试 综合测试 运行维护 持久满足用户需求,1.4 软件过程模型,软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,工作

17、任务,里程碑、交付物,SQA点,A process defines Who is doing What,When,and How,in order to reach a certain goal.,公共过程框架,辅助活动,框架活动,任务集合,软件过程,1.4 软件过程模型,软件生命周期的每一阶段都有明确的任务,把规模大、结构复杂、管理复杂的软件开发变得容易控制和管理。各个阶段的活动如何衔接,开发过程中采用什么样的策略,应遵守什么样的规定和制约,将这些活动框架(忽略不必要的细节)用一种模型表示出来,称为软件过程模型(或软件开发模型或软件生命周期模型)。也就是说,软件过程模型是软件开发全部过程、活

18、动和任务的结构框架。,1.4 软件过程模型,(1)瀑布模型(Waterfall Model)传统瀑布模型,1.4 软件过程模型,传统瀑布模型的特点 提供了软件过程模型的基本框架(模板)。强调了每一阶段活动的严格顺序。质量保证观点:以经过评审确认了的阶段工作 产品(文档)驱动下一阶段的工作,便于管理。是一种整体开发模型,程序的物理实现集中在 开发阶段的后期,用户在最后才能看到自己的 产品。传统瀑布模型存在什么问题?,1.4 软件过程模型,实际的瀑布模型,1.4 软件过程模型,瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。

19、“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。实际项目很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成。,瀑布模型的优缺点,1.4 软件过程模型,(2)原型模型快速原型模型(Rapid Prototype Model),在用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等许多情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。,建造/修改原型,听取用 户意见,用户测试运行原型,原

20、型实现范型,1.4 软件过程模型,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,维护过程,开发过程,1.4 软件过程模型,原型模型存在的问题 为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。开发过程不便于管理。有效的使用原型模式 建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。,1.4 软件过程模型,(3)增量模型(Incremental Model),是一种渐进地开发逐步完善的软件版

21、本的模型。,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,1.4 软件过程模型,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,增量1,增量2,增量3,增量4,交付,交付,交付,交付,反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品。早期的版本实现用户的基本需求,并提供给用户评估的平台。,增量模型,1.4 软件过程模型,在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起

22、,用户就能做一些有用的工作。整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。,增量模型的优点,1.4 软件过程模型,增量模型的困难,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。开发人员既要把

23、软件系统看作整体。又要看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险。,1.4 软件过程模型,(4)螺旋模型(Spiral Model),软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。,1.4 软件过程模型,完整的螺旋模型,1.4 软件过程模型,快速原型,验证

24、,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,可看作在每个阶段之前都增加了风险分析过程的快速原型模型。,简化的螺旋模型,螺旋模型,风险分析,工程实施,用户通信,用户评估,产品维护项目,产品增强项目,新产品开发项目,概念开发项目,计划,建造及发布,1.4 软件过程模型,螺旋模型的优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标减少了过多测试或测试不足维护和开发之间并没有本质区别螺旋模型的特点风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大主要适用于

25、内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险随着迭代次数的增加,工作量加大,软件开发成本增加,1.4 软件过程模型,(5)面向对象模型,喷泉模型(Fountain Model),分析,设计,实现,测试,集成,演化,特点:主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征,1.4 软件过程模型,可重用部件组装模型(构件集成模型)(Component Integration Model),构件(components)也称为组件,是一段实现一系列有确定接口的程序体,具有自己的功能和逻辑,能同其他构件集成起来协调工作。该模型支持

26、软件重用(Reusability),对缩短软件开发周期、降低项目成本有重要的现实意义。同时,建造符合某应用领域体系结构标准的构件,可以用来搭建分布式的、跨越不同操作平台(集成化软件开发环境(ISEE))的软件,扩展了软件的应用前景,促进了软件标准化、商品化的发展。因此,在此基础上专家们又提出了“基于构件的软件工程”(CBSE)。构件集成模型如下图所示:,1.4 软件过程模型,构件集成模型 软件体系结构被建立后,必须用构件去充实,这些构件可从复用库中获得,或者根据专门需要而开发。整个过程可以演化地进行,面向对象方法给予技术上的支持。,1.4 软件过程模型,Sommerville提出基于组件开发有

27、两种思路:完成高层设计,对设计中的组件给出描述,以便找出可复用的组件,这些组件可在体系结构层次上加入或更详细的设计层次上加入。先根据需求搜寻可复用组件,再将设计建立在获得的组件基础上。这两种思路可结合起来。,设计系统体系结构,描述组件,搜寻可复用组件,集成系统,先完成架构设计的复用,系统需求描述,搜寻可复用组件,对需求作某些修改,体系结构设计,集成系统,复用驱动设计,1.4 软件过程模型,构件技术主要有三种流行标准:OMG的CORBA:对象管理组织发布的公用对象请求代理体系结构(Common Object Request Broker Architecture)。通过一个对象请求代理(ORB)

28、提供一系列服务,使得一个构件和其他构件通信,而不管它们在系统中的位置,实现了远程对象通过接口进行通信的机制。为了解决CORBA对象引用不透明、缺少多重接口、系统过于复杂等问题,专家们又开发了新一代面向对象中间件平台 ICE(Internet Communications Engine互联网通信引擎)。使构建分布式应用系统更容易、性能和伸缩性更好。,1.4 软件过程模型,微软的COM/DCOM:微软开发了构件对象模型(Component Object Model),它提供了运行于windows之上的单个应用系统使用不同厂商生产的构件的规约。基于分布式环境下的COM称为DCOM(Distribut

29、e COM)。SUN的 EJB(Enterprise JavaBean):随着Java在企业级应用的地位日趋重要,Sun提出了一个统一的企业级Java平台J2EE(Java 2 Enterprise Edition)。在J2EE中,EJB负责最核心的业务处理。它为服务器端的应用程序提供了一种与厂商无关的Java接口,让任何符合EJB规范的构件都可以运行在每一台这样的服务器上。,构件技术主要有三种流行标准:,1.4 软件过程模型,(6)统一软件开发过程 是由Rational公司的Booch、Jacobson、Rumbaugh提出的软件过程模型,也称RUP(Rational Unified Pro

30、cess)。RUP重复一系列周期,每个周期由一个交付给用户的产品结束。每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流(需求、分析、设计、实现、测试)分别迭代。模型见下图:,图1.10 RUP软件开发生命周期,1.4 软件过程模型RUP,初始阶段:进行问题定义,确定目标,评估其可行性,降低关键风险。细化阶段:制定项目计划、配置各类资源、建立系统架构(包括各类视图)。构造阶段:开发整个产品,并确保产品可移交给用户。移交阶段:产品发布、安装、用户培训。在每个阶段的每次迭代的最后,用例模型、分析模型、设计模型、实现模型都会增量,每个阶段结束的里程碑处,管理层做出是否继续、进

31、度、预算、是否给下一阶段提供资助等决定。不同阶段工作流的侧重点不同,前两阶段大部分工作集中在需求、分析和架构设计上;在构造阶段,重点转移到详细设计、实现和测试上。,7、敏捷(灵活)过程与极限编程,极限编程是敏捷过程中最有名的一个,适于小型项目.极限编程(XP,eXtreme Programming)对于传统的软件工程中看来是“极端的”实践.,图1.11 XP项目的整体开发过程,图1.12 XP迭代开发过程,XP valuesCommunicationSimplicityFeedbackCourageRespect,微软过程,图1.13微软软件生命周期阶段划分和主要里程碑,图1.14微软过程的生命周期模型,软件=程序+数据+文档软件危机:原因,现象,办法(软件工程学)软件工程(学):开发、运行和维护软件的系统方法软件工程3个要素:方法、工具和过程。软件生命周期:定义,开发,运行维护软件过程:瀑布模型+RUP,1.5 小结,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号