软件工程基本原理.ppt

上传人:xian****812 文档编号:15161803 上传时间:2020-08-04 格式:PPT 页数:49 大小:434.06KB
收藏 版权申诉 举报 下载
软件工程基本原理.ppt_第1页
第1页 / 共49页
软件工程基本原理.ppt_第2页
第2页 / 共49页
软件工程基本原理.ppt_第3页
第3页 / 共49页
资源描述:

《软件工程基本原理.ppt》由会员分享,可在线阅读,更多相关《软件工程基本原理.ppt(49页珍藏版)》请在装配图网上搜索。

1、第1章 软件工程的基本原理,目的要求:认识软件工程这门课的内容和教学安排,了解计算机系统的发展历程,软件危机产生的原因及消除途径; 掌握软件工程的概念、基本原理。了解软件过程的概念,掌握瀑布模型以及软件生命周期方法学的阶段划分,了解快速原型模型、增量模型、螺旋模型、喷泉模型的基本思想。 ,教学目的、要求,重点、难点,教学重点:讲述软件危机产生的原因;软件工程的概念;软件过程的概念,瀑布模型以及软件生命周期方法学的阶段划分; 教学难点:螺旋模型、喷泉模型的基本思想; 讲授内容:计算机系统发展历程;软件危机;软件工程。软件过程的概念,瀑布模型以及软件生命周期方法学的阶段划分快速原型模型、增量模型、

2、螺旋模型、喷泉模型。,计算机系统应用的日益普及和深化。硬件和软件的迅速发展。在计算机系统发展的早期时代所形成的一些错误概念和做法,已经严重地阻碍了计算机软件的开发,为更有效地开发和维护软件,软件工作者在20世纪60年代后期开始认真研究消除软件危机的方法,从而形成了计算机科学技术领域中的一们新兴学科:计算机软件工程学。,计算机系统已经经历了4个不同的发展阶段,计算机软件也经历了4个阶段。 60年代中期以前:为具体应用专门编写,认为无需预先计划,规模较小,编写者和使用者是同一人,无系统化方法,无管理,人们头脑中的一个隐含过程,除程序清单无文档资料。 60年代中期到70年代中期:第二代,多道程序、多

3、用户系统的引入,数据库系统的出现,重要特征:软件作坊,广泛使用产品软件,但仍使用个体化软件开发方法。程序运行时发现的错误必须设法改正,用户有了新的需求时必须相应的修改程序,硬件或操作系统更新时通常需要修改程序以适应新的环境。,第一节 软件概述 一、软件的发展与特点,1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出“软件工程”。 从20世纪70年代中期开始的10年:分布式系统,局域网、广域网、宽带数字通信等对软件开发者提出了更高的要求,主要特点:出现了微处理器,及智能产品(个人计算机)。 计算机系统发展的第四代:以硬件和软件的综合效果为主,复杂的操作系统

4、控制的强大的桌面机及局域网、广域网,与先进的应用软件相配合,已经成为当前的主流。,计算机软件发展的三个阶段及其特点,指在计算机软件开发和维护的过程中所遇到的一系列严重问题。 概括的说:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。 具体的说:主要有以下一些表现: 1、对软件开发成本和进度的估计常常很不准确; 2、用户对已完成的软件系统不满意的现象经常发生; 3、软件产品的质量经常靠不住; 4、软件常常是不可维护的; 5、软件通常没有适当文档资料; 6、软件成本在计算机系统总成本中中所占的比例逐年上升; 7、软件开发的生产率提高的速度,既跟不上硬件发展的速度,也远

5、远跟不上计算机应用普及深入的趋势。,二、软件危机, IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美圆,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。 OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”,1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序: DO 5 I=1,3 误写为:DO 5 I=1 . 3,1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气

6、层时因打不开降落伞而烧毁。,在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。 1、软件不同于硬件:它是计算机系统中的逻辑部件,在写出程序代码并在计算机上运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价,因此管理和控制软件开发过程相当困难。 2、软件在运行过程中不会因使用时间过长而被用坏,如果运行中发现错误,很可能是遇到了一个在开发时期引入杂在测试阶段没能检测出来的故障,因此软件维护通常意味着改正或修改原来的设计。,产生软件危机的原因,3、软件不同于一般程序:规模庞大,必须有严格而科学的管理。 4、软件专业人员

7、对软件开发和维护有不少的糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,忽视软件需求分析的重要性,认为开发软件就是写程序并使之运行,轻视软件维护,这可能是软件危机的主要原因。,硬件/软件产品失效率曲线,磨合调整,磨损用坏,时间,失效率,修改点,实际曲线,时间,失效率,理想曲线,软件产品,硬件产品,一个软件从定义、开发、使用、维护,直到最终被废弃,要经历一个漫长的时期,这就如同一个人要经过胎儿、儿童、青年、中年、老年,直到最终死亡的漫长时期一样,通常把软件经历的这个漫长时期称为生存周期。 在软件开发的不同阶段进行修改需要付出的代价很不相同: 软件工程学的一个重要目标就是提高软件的可维护性

8、,减少软件维护的代价。,生存周期:,1、软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 2、必须充分吸收和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别是要吸取几十年来从事计算机硬件研究和开发的经验教训。 3、应该推广使用在实践中总结出来的开发软件的成功的 技术和方法。 4、应该开发和使用更好的 软件工具。 总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程.正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科.,解决软件危机的途径,软件工程是指导计算机软件开发和维护的工程学科

9、.采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程. 1983年IEEE给软件工程的定义:“软件工程是开发、运行、维护和修复软件的系统方法。” 强调“系统方法”不是“个人技巧”。 Fairly认为:“软件工程学是为了在成本限额以内按时完成开发和修复软件产品所需要的系统生产和维护技术及管理学科”。强调“成本限额以内”及“技术和管理两个方面” 。,第二节 软件工程 一、软件工程与方法学,Fritz Bauer认为:“软件工程是为了经济地获得可靠的且能在实际机器上有效地

10、运行的软件,而建立和使用的完善的工程化原则”。强调“经济地开发出高质量的软件,应建立和使用的完善的工程化原则”。 1993年IEEE进一步给出了一个更全面的定义: 软件工程是:(1)把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;(2)研究(1)中提到的途径。,1、用分阶段的生命周期计划严格管理 2、坚持进行阶段评审 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果应能清楚的审查 6、开发小组的人员应该少而精 7、承认不断改进软件工程实践的必要性,二、软件工程的基本原理,三、软件 工程的内容,软件工程包含:技术和管理。是技术和管理的紧密结

11、合。通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。 软件工程方法学包括三个要素: 方法:完成软件开发的各项任务的技术方法;回答“如何做”的问题。 工具:为方法的应用提供或半自动的软件支撑环境; 过程:为了获得高质量的软件所需要完成的一系列任务的框架、规定了完成各项任务的工作步骤。,四、软件工程方法学,划分软件生存周期阶段的基本原则:使各阶段的任务彼此间尽可能相对独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件开发工程的组织管理. 面向对象方法的四个要点:对象;类;父类(基类)和子类(派生类);消息。

12、面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。,传统方法学(生命周期方法学)或(结构化范型):采用结构化技术(结构化分析、结构化设计、结构程序设计和结构化测试)。,第三节 软件工程过程,软件工程过程是为了获得高质量的软件所需要完成的一系列任务的框架,包括软件工程活动和软件管理活动。这些活动的执行可以是有序的、循环的、嵌套的,也可以有条件引发的。 在完成开发任务时必须进行一些活动,并使用适当的资源(人员、时间、计算机硬件、软件工具等),在过程结束时将

13、把输入(软件需求)转化为输出(软件产品)。ISO9000把过程定义为:“把输入转化为输出的一组彼此相关的资源和活动”。 过程定义了运用方法的顺序、应交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施以及标志软件开发各个阶段任务完成的里程碑。 为获得高质量的软件产品,软件工程过程必须科学、合理。,在美国SEI(软件工程研究所,设在美国卡耐基-梅农大学,是致力于软件过程改进的权威机构)提出的“能力成熟度模型”(CMM,Capability Maturity Module)中,设定了52个目标,18个关键活动域和316个关键活动,能够用来评价软件开发组织的过程能力。,工作任务,里程碑、交付

14、物,软件质量保证点,任务集合,框架活动,公共过程框架,保护性辅助活动,软件工程过程,通过定义适合于所有软件项目的框架活动而建立。,每个集合由软件工程工作任务、软件项目里程碑、软件工作产品和交付物以及质量保证点组成。,独立于任何一个框架,从宏观上来看,所有的软件开发过程都可以看成一个循环解决问题的过程。包括4个不同的阶段:状态描述,问题定义,技术开发和方案综述。,问题循环解决的各个阶段,状态描述,问题定义,技术开发,方案综述,状态描述,问题定义,技术开发,方案综述,状态描述,问题定义,技术开发,方案综述,状态描述,问题定义,技术开发,方案综述,问题循环解决阶段中的阶段,状态描述,软件生存周期划分

15、为四个时期:软件分析时期、设计时期、编码与测试时期、运行与维护时期。每个时期又划分为若干个阶段。 1、软件的分析时期任务:确定软件开发工程必须完成的总目标;可行性;采用的策略;必要的功能;所需的资源和成本;工程进度;分为三个阶段:问题定义、可行性研究、需求分析; 2、软件设计时期的任务:具体设计和实现在前一时期定义的软件。分为2个阶段:总体设计;详细设计; 3、编码和测试时期;编码和单元测试、综合测试; 4、软件维护时期的任务:使软件持久地满足用户的需要。有四个方面的维护活动:改正性、完善性、适应性、预防性;,第四节 软件生存周期,第五节 软件开发模型,一、软件生存周期模型的概念: 软件生存周

16、期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架。,瀑布模型,按照传统的瀑布模型来开发软件,有以下特点: 1、阶段间有顺序性和依赖性; 2、推迟实现的观点; 3、质量保证的观点;,需求分析,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,优点:可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的产品都必须经过质量保证小组的仔细验证。,需求分析,验证,实线箭头表示开发过程;虚线箭头表示维护过程。,反馈线,开发过程,维护过程,快速原型是快速建立起来的可以在计算机上运行的程序,

17、完成的功能是最终产品能完成功能的一个子集。 快速原型模型不带反馈环,软件开发基本上是线形顺序进行的。 1、原型系统已经通过与用户交互得到验证;开发人员在建立原型中学到了许多东西;,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,实线箭头表示开发过程;虚线箭头表示维护过程。,开发过程,维护过程,快速原型模型,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并能完成特定的功能。每个增量构件实现软件的基本需求,提供最核心的功能。应该使构件的规模适中。 分解的约束条件:当把新构件集成到现有软件中时,所形成的产品必须是可

18、测试的。 分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行产品。,增量模型(渐增模型),增量模型的优点: 1、能在较短的时间内向用户提交可完成一些有用的工作的产品。 2、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。,需求分析,验证,规格说明,验证,概要设计,验证,针对每个构件,完成详细设计、编码和集成,经测试后交付给用户,维护,增量模型,规格说明,设计,交付客户,编码和集成,构件1:,规格说明,设计,交付客户,编码和集成,构件2:,规格说明,设计,交付客户,编码和集成,构件n:,风险更大的增量模型,软件开发的风险: 1、 产品交付用户之后用户可能不满意; 2、到交付

19、日期后软件可能还未开发出来; 3、实际开发成本可能超过预算; 4、产品完成之前一些关键的开发人员可能“跳槽”了; 5、 聘请不到需要的专业人员; 基本思想:使用原型及其他方法来尽量降低风险。可看作在每个阶段之前都增加了风险分析过程的快速原型模型。螺旋线每个周期对应一个开发阶段。,螺旋模型,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,简化的螺旋模型,螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。 简化的螺旋模型可看作在每个阶段都增加了风险分析过程的快速原型模型。,完整的螺旋模型,计划

20、下一阶段,确定目标,选择方案,设定约束条件,各步骤的进度,风险分析,可运行的原型,风险分析,风险分析,风险分析,原型3,原型2,原型1,评估方案,识别并排除风险,操作概念,详细设计,设计验证与确认,软件产品设计,需求确认,软件需求,实现,集成与测试计划,编码,单元测试,集成测试,验收测试,开发计划,需求计划与生命周期计划,模拟、模型、基准,开发验证下一级产品,当前累计的开发费用,每个阶段开始时(左上象限)的任务是:确定该项目的目标、为完成这些目标选择方案及设定这些方案的约束条件。接下来的任务是:从风险角度分析上步的工作结果,努力排除各种潜在的风险,如果风险不能排除,则停止开发工作或大幅度削减项

21、目规模。如果成功排除了所有风险,则启动下一个开发步骤(右下象限),这个步骤相当于纯粹的瀑布模型。最后是评价该阶段工作成果并计划下一阶段的工作。,优点: 1、对可选方案和约束条件的强调有利于已有软件的重用,也有利于把软件质量作为软件开发的一个重要目标; 2、减少了过多的测试或测试不足所带来的风险; 3、维护只是模型的另一个周期,在维护和开发之间没有本质的区别。,“喷泉”体现了面向对象软件开发过程迭代和无缝的特性。迭代是软件开发过程中普遍存在的一种内在属性。软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。因此,喷泉模型是典型的面向对象生命周期模

22、型。,喷泉模型,需求阶段,面向对象分析阶段,面向对象设计阶段,编码阶段,集成和测试阶段,运行状态,进一步开发,维护期,喷泉模型,基于知识的模型,基于知识的模型又称智能模型,它把瀑布模型和专家系统结合在一起。该模型在开发的各个阶段都利用相应的专家系统来帮助软件人员完成开发工作,使维护在系统需求说明一级上进行。为此,建立了各阶段所需要的知识库,将模型、相应领域知识和软件工程知识分别存人数据库,以软件工程知识为基础的生成规则构成的专家系统与含有应用领域知识规则的其他专家系统相结合,构成了该应用领域的开发系统,变换模型,变换型开发方法是一种形式化软件开发方法。它从软件需求的形式化规格说明出发,经过一系

23、列的程序变换,得到最终的程序系统。变换模型主要用于软件的形式化开发方法,一个形式化的软件开发方法要提供一套思维方法和描述开发手段,如规范描述的原则、程序开发的一般过程、描述语言等,使开发者能利用数学概念和表示方法恰当合理地构造形式规范,根据开发过程的框架及设计原则进行规范描述和系统化的设计,并对规范的性质和设计的步骤进行分析的验证。,软件过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程必须科学、合理,才能开发出稿纸量的软件产品。 按照软件生命周期全过程中应完成的任务的性质,在概念上划分成:问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试以及维护等8个阶段。实际中软件的规模、种类、开发环境、使用的技术方法等因素均影响阶段的划分。,小结,介绍了5中生命周期模型: 瀑布模型历史悠久、广为人知,优势是:它是规范的、文档驱动的方法。 快速原型模型通过快速建立一个可运行的原型系统,让用户试用并收集反馈意见,获取用户的真正需求。 增量模型具有能在软件开发的早期阶段使投资获得明显的回报和易于维护的特点。 风险驱动的螺旋模型要求开发人员具有风险分析和排除风险的经验和专门知识。适合大规模的内部开发项目。 喷泉模型是一种适合用面向对象方法学开发软件的过程模型,支持反馈和迭代。,作业: P19 习题一 1,2,3,5,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!