收藏 分享(赏)

软件工程课件第1章 软件工程概述.pptx

上传人:bubibi 文档编号:20014221 上传时间:2023-12-02 格式:PPTX 页数:36 大小:637.61KB
下载 相关 举报
软件工程课件第1章 软件工程概述.pptx_第1页
第1页 / 共36页
软件工程课件第1章 软件工程概述.pptx_第2页
第2页 / 共36页
软件工程课件第1章 软件工程概述.pptx_第3页
第3页 / 共36页
软件工程课件第1章 软件工程概述.pptx_第4页
第4页 / 共36页
软件工程课件第1章 软件工程概述.pptx_第5页
第5页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第第1章章 软件工程概述件工程概述本章内容:1、软件危机出现、爆发的原因和软件危机的表现2、软件工程的概念、软件生存期、软件工程方法和工具3、七种典型的软件生存期1.1 软件危机和件危机和软件工程件工程20 世纪60年代以前,软件设计往往只是为了特定的应用在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,通常也不存在文档资料,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、自给自足的私人化的软件生产方式。60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大;高级语言的出现、操作系统的发展和第一代数据库管理系

2、统的诞生,使得软件系统规模越来越大、软件可靠性问题也越来越突出,私人化的软件生产方式不能满足社会日益增长的软件需求。软件的发展速度远远滞后于硬件的发展速度,60年代末软件危机爆发。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是“不能正常运行的”软件才具有的,实际上几乎所有软件都不同程度地存在这些问题。软件危机主要表现,如:对软件开发成本和进度估计不准确、软件产品的质量靠不住、用户对“已完成的”软件系统不满意、软件开发速度跟不上、软件不可维护以及没有适当的文档资料等等。1.1.1 软件危机爆件危机爆发的原因的原因 软件危机爆发的主要原因有:(1)软件,作为计

3、算机系统的逻辑部件,很难检验开发的正确性且开发的质量。一旦在软件维护阶段发现错误,常意味着要修改原来的设计,维护的费用十分惊人。(2)软件开发的过程是多人分工、分阶段完成的,人员之间的沟通和配合十分重要。但是,由于在实践的过程中没有采用工程化的方法,或多或少采用了一些错误的方法和技术,这是造成软件危机的主要原因。(3)开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的要求。1.1.1 软件危机爆件危机爆发的原因的原因 软件危机爆发的主要原因有:(4)软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。没有完整、一致的文档资料;资金分配混乱,人员组织不合理,进度安

4、排无序等等。(5)在软件的开发和维护关系问题上存在错误的观念。软件维护工作通常是在软件完成之后进行的,因此是极端艰巨复杂的工作,需要花费很大的代价。在软件开发的不同阶段进行修改需要付出的代价是很不相同的。必须把软件维护的观念引入软件开发的各个阶段,建立起软件开发与维护的正确关系。1.1.1 软件危机爆件危机爆发的原因的原因 为了解决软件危机,1968和1969年连续两次召开的NATO会议中,提出了软件工程的概念。Fritz Bauer对软件工程的定义是:“软件工程就是为了经济地获得可靠的且能在实际机器上有效运行的软件,而建立和使用的完善的工程原理。”著名的软件工程专家BWBoehm综合了学者们

5、的意见并总结了TRW公司多年开发软件的经验,于1983年在一篇论文中提出了软件工程的七条基本原理。1.1.2 软件工程的概念件工程的概念软件工程的七条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性1.1.2 软件工程的概念件工程的概念软件工程可以给出这样一个解释软件工程可以给出这样一个解释:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够

6、得到的最好技术结合起来,从而经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.1.2 软件工程的概念件工程的概念软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个过程为软件生命周期或软件生存期。人类解决复杂问题时普遍采用对问题进行分解然后再分别解决各个子问题的策略。软件工程采用的生存期方法学就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期划分为若干个阶段,每个阶段有相对独立的任务。此方法学可以大大提高软件开发的生产率和成功率。1.2 软件生存期件生存期软件生命周期:软件定义、软件开发和软件维护三个时期。软件定义时期:确定软件开发必须完成的总目标和可行

7、性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。软件定义时期分成三个阶段:问题定义、可行性研究和需求分析。开发时期:具体设计和实现在前一个时期定义的软件,通常包括四个阶段:总体设计、详细设计、编码、测试。维护时期:使软件持久地满足用户的需要。主要包括:改正错误;改进软件适应新的环境或满足用户的新需要。1.2 软件生存期件生存期1问题定定义回答的关键问题是:“要解决的问题是什么?”2可行性研究可行性研究回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”3需求分析需求分析这个阶段准确地确定“为了解决这个问题,目标系统

8、必须做什么”,主要是确定目标系统必须具备哪些功能。4总体体设计回答的关键问题是:“概括地说明,应该如何解决这个问题?”5详细设计回答的关键问题:“应该怎样具体地实现这个系统呢?”1.2 软件生存期件生存期6编码和和单元元测试关键任务是写出正确的容易理解、容易维护的程序模块。7综合合测试关键任务是通过各种类型的测试使软件达到预定的要求。最基本的测试是集成测试和验收测试。8软件件维护关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。通常有四类维护活动:改正性维护,适应性维护,完善性维护,预防性维护。1.2 软件生存期件生存期通常将软件生命周期中使用的一整套技术方法的集合称为方法学,就是从

9、时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。目前使用最广泛的软件工程方法学为结构化方法和面向对象方法。软件工程方法学包括三要素:方法、工具和过程。软件工程方法为软件开发提供了“如何做”的技术;软件工程工具为软件开发提供了自动的或半自动的软件支撑环境;软件工程过程是为了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各项任务的工作步骤。1.3 软件工程方法件工程方法1.3.1 结构化方法构化方法结构化方法是传统的软件开发方法,面向对象开发方法出现前应用最广泛。结构化方法的基本思想:用系统工程的

10、思想和工程化的方法,按用户至上的原则,结构化、模块化、自顶向下地对系统进行分析与设计。具体来说,就是先将整个系统开发过程划分为若干个相对独立的阶段,如系统规划、系统分析、系统设计、系统实施等。在前三个阶段坚持自顶向下先考虑整体,后考虑局部。在系统实施阶段,则应坚持自底向上地逐步实施。从最底层模块做起(编程),然后按照系统设计的结构,将模块一个个拼接到一起进行调试,自底向上、逐渐地构成整体系统。1.3 软件工程方法件工程方法结构化方法主要特点:(1)自顶向下整体性的分析与设计和自底向上逐步实施的系统开发过程。(2)用户至上。(3)深入调查研究。(4)严格区分工作阶段。(5)充分预计可能发生的变化

11、。(6)开发过程工程化。1.3 软件工程方法件工程方法1.3.2 面向面向对象方法象方法面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法。面向对象的分析(Object Oriented Analysis,简称OOA)面向对象的设计(Object Oriented Design,简称OOD)面向对象的实现(Object Oriented Implementation,简称OOI)面向对象的建模语言很多,目前使用最广泛的是统一建模语言(Unified Modeling Language,简称UML),它将Booch、Ru

12、mbaugh和Jacobson等各自独立的OOA和OOD方法中最优秀的特色组合成一个统一的方法。1.3 软件工程方法件工程方法面向对象方法的主要优点:(1)与人类习惯的思维方法一致,使用者和维护人员都容易理解,在软件维护中可维护性也较高,并且易于测试和调试。(2)稳定性好,对软件的局部进行修改时,不会引起整体的变化,而且对局部修改容易实现。(3)面向对象方法的可重用好,而且把大问题分解成相互独立的小问题处理,降低了开发的技术难度,管理容易,成本降低,容易开发大型软件。总之,在编程方面,结构化方法有着比较强的优势,它思路清晰,条理严谨,便于阅读理解;而面向对象方法更注重用户的使用,它操作简单,界

13、面清楚,使用简单。1.3 软件工程方法件工程方法软件工程工具是以计算机为基础的一批软件工具,能支持软件生存周期中某一阶段(如系统定义、需求分析、设计、编码、测试或维护等)的需要。软件工具通常也称为计算机辅助软件工程(computer aided software engineering,简称CASE)工具。使用这些工具的目的是使软件工程更加系统化,使得良好定义的动作反复并自动地执行,减少软件工程师的重复性劳动,而把精力主要放在软件开发的创造性方面。1软件工具的分件工具的分类(1)支持软件开发过程的工具:需求分析工具、设计工具、编码工具、排错工具、测试工具等。(2)支持软件维护过程的工具:主要有

14、版本控制工具、文档分析工具等。(3)支持软件管理过程和支持过程的工具:项目管理工具、配置管理工具等。1.4 软件工程工具件工程工具2软件工具的介件工具的介绍大部分软件工程的需求分析和设计工具都是集二者于一身的:Rational Rose,由Rational开发,后被IBM收购,是基于UML的可视化建模工具。IBM Rational Software Architect(RSA),是 IBM 公司推出的从设计到开发的完整的集成开发环境,它支持 UML 建模、模型驱动开发等多种建模相关的活动。PowerDesigner,由Sybase开发的CASE工具集,使用它可以方便地对管理信息系统进行分析设计

15、,它包括了数据库模型设计的全过程。Microsoft Office Visio,由Microsoft开发,是一款便于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件,支持各种图形的绘制和部分UML建模。1.4 软件工程工具件工程工具软件生存期模型是描述软件开发过程中各种活动如何执行的模型。软件生存期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。常见的软件生存期模型有瀑布模型、增量模型、快速原型模型、喷泉模型、螺旋模型、统一过程、敏捷开发等。1.5 软

16、件生存期模型件生存期模型1.5.1 瀑布模型瀑布模型在20世纪80年代之前,瀑布模型一直是唯一被广泛采用的软件生存期模型。核心思想:按工序将问题化简,采用结构化的分析与设计方法将功能的实现与设计分开,便于分工协作。将软件生命周期划分为六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。1.5 软件生存期模型件生存期模型瀑布模型的特点:(1)阶段间具有顺序性和依赖性。(2)推迟实现。瀑布模型在编码之前设置了系统分析和系统设计的各个阶段,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。(3)质量保证。每个阶段都必须完成规定的文档,结束前都要对所完成的文档

17、进行评审,以便尽早发现问题,改正错误。1.5 软件生存期模型件生存期模型1.5 软件生存期模型件生存期模型实际的瀑布模型是带“反馈环”的。优点:(1)可强迫开发人员采用规范化的方法。(2)严格地规定了每个阶段必须提交的文档。(3)要求每个阶段交出的所有产品都必须是经过验证的。缺点:(1)由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。(2)瀑布模型只适用于项目开始时需求已确定的情况。1.5 软件生存期模型件生存期模型1.5.2 增量模型增量模型增量模型中系统的开发是建立一系列的版本(增量),每个版本添加部分功能到先前的版本中。第1个增量往往是核心

18、的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。优点:(1)能在较短时间内向用户提交可以完成一些有用的工作的产品。(2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品。(3)项目失败的风险较低。(4)优先级最高的服务首先交付。1.5 软件生存期模型件生存期模型1.5.3 快速原型模型快速原型模型快速原型模型是在开发真实系统之前,构造一个原型,即快速建立起来可以在计算机上运行的程序,完成最终产品能完成的功能的一个子集。然后,在该原型的基础上,逐渐完成整个系统的开发。传统的瀑布模型本质上是一种线性顺序模型,在进行具体的开发工作之前,必须通过需求分析预先定义并“冻结”软

19、件需求,然后再一步一步的实现这些需求。但是实际在系统建立之前很难只依靠分析就确定出一套完整、准确、一致和有效的用户需求,而且用户需求还可能不断变化。1.5 软件生存期模型件生存期模型快速原型模型的第一步是建造一个快速原型,实现用户与系统的交互,用户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足用户的要求,开发人员可以确定用户的真正需求是什么;第二步则在第一步的基础上开发用户满意的软件产品。1.5 软件生存期模型件生存期模型优点:(1)有助于满足用户的真实需求。(2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。(3)软件产品的开发基

20、本上是按线性顺序进行。(4)因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工。(5)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小。(6)快速原型的突出特点是“快速”。节约软件开发成本。1.5 软件生存期模型件生存期模型1.5.4 喷泉模型泉模型喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。“喷泉”一词体现了迭代和无间隙特性。1.5 软件生存期模型件生存期模型喷泉模型优点:各个阶段没有明显的界限,开发人员可以同步进行开发。可以提高软件项目开发效率,

21、节省开发时间,适应于面向对象的软件开发过程。缺点:各个开发阶段是重叠的,开发过程中需要大量的开发人员,不利于项目的管理。另外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。1.5 软件生存期模型件生存期模型1.5.5 螺旋模型螺旋模型螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。其最大的特点在于引入了其他模型不具备的风险分析。1.5 软件生存期模型件生存期模型螺旋模型的应用存在限制条件:只适合于大规模软件项目;开发人员需具有丰富的风险评估知识和经验。优点:(1)设计上的灵活性。(2)以小的分段来构

22、建大型系统,使成本计算变得简单容易。(3)客户始终参与每个阶段的开发。客户能够和管理层有效地交互。(4)对可选方案和约束条件的强调有利于软件的重用,以及提高软件质量。缺点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险。1.5 软件生存期模型件生存期模型 1.5.6 统一一过程模型程模型是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,广泛应用于各类面向对象项目。按照二维结构组织,横轴按时间组织,显示统一过程的动态特征,纵轴按内容组织,显示静态特征。6个核心工作流:业务建模需求工作流分析和设计实现工作流测试工作流部署工作

23、流1.5 软件生存期模型件生存期模型统一过程有4个阶段,每个阶段的结尾执行一次评估,确定这个阶段的目标是否已经满足,每个阶段结束于一个主要的里程碑。初始阶段。项目计划、风险评估,可行性分析,确定基本功能、项目总体结构。细化阶段。控制风险,确保功能、结构和计划稳定可靠。编制项目计划,设计健全的体系结构,分析、设计和实现主要功能。构建阶段。进一步管控成本、进度和质量。所有剩余的构件和功能被开发并集成为产品,所有的功能被详细测试。转换阶段。确保软件对最终用户是可用的。1.5 软件生存期模型件生存期模型1.5.7 敏捷开敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。把一个大项目

24、分为多个相互联系,也可独立运行的小项目,并分别完成。1.5 软件生存期模型件生存期模型敏捷开发的原则:(1)快速迭代(2)让测试人员和开发者参与需求讨论(3)编写可测试的需求文档(4)多沟通,尽量减少文档(5)做好产品原型(6)及早考虑测试1.5 软件生存期模型件生存期模型怎么衡量一个项目是否适合敏捷开发?首先,敏捷开发对团队的要求:自主管理、自我组织、多功能型。自主管理:开发人员可以自己挑选任务;每次Sprint结束以后要总结不足,提出改进。自主组织:每个人要联合起来对项目负责,有人落后要帮忙改进,项目缺少某类资源还要自己顶上去。多功能型:每个人从需求规格说明到测试都几乎是全能的。另外,敏捷开发的适用范围包括:软件需求经常变化或者需求变化比较大;项目团队与用户沟通比较容易;项目开发风险比较高;项目规模比较小;项目可测试性比较好。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 网络技术 > 前端技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报