软件工程课件第一章_第1页
软件工程课件第一章_第2页
软件工程课件第一章_第3页
软件工程课件第一章_第4页
软件工程课件第一章_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程软件工程(software engineering)教材:软件工程导论 编著: 张海藩 主讲: 周荣辉2软件的魅力软件的魅力计算机软件已经成为一种驱动力,它是进行商计算机软件已经成为一种驱动力,它是进行商业决策的引擎;它是现代科学研究和工程问题解决业决策的引擎;它是现代科学研究和工程问题解决的基础;它是区分现代产品和服务的关键因素。的基础;它是区分现代产品和服务的关键因素。计算机软件无处不在。人们把软件看作是生活计算机软件无处不在。人们把软件看作是生活中的现实技术。在很多情况下,人们把他们的生活、中的现实技术。在很多情况下,人们把他们的生活、他们的舒适、他们的安全、他们的娱乐、他们的决

2、他们的舒适、他们的安全、他们的娱乐、他们的决策、甚至他们的整个生活都依赖于计算机软件。策、甚至他们的整个生活都依赖于计算机软件。第一章 软件危机与软件工程软件工程软件工程(software engineering)4计算机硬件与软件计算机硬件与软件任何计算机系统由硬件(任何计算机系统由硬件(hardhard)和软件)和软件(softwaresoftware)两大部分构成。)两大部分构成。 硬件只是提供了计算的可能性。硬件只是提供了计算的可能性。必须有支持和管理计算机的软件,系统必须有支持和管理计算机的软件,系统才能实现计算。才能实现计算。5软件的定义软件的定义 软件是计算机程序以及开发、使用和

3、维护程序所需要的软件是计算机程序以及开发、使用和维护程序所需要的所有文档。所有文档。 软件是包括程序、数据及其相关文档的完整集合。软件是包括程序、数据及其相关文档的完整集合。 软件软件= =知识知识+ +程序程序+ +文档文档+ +数据数据 软件是知识的载体。软件是知识的载体。软件包括:软件包括: 能够完成预定功能和性能的可执行的指令(计算机程能够完成预定功能和性能的可执行的指令(计算机程序);序); 保证程序运行的配置信息(运行环境)和初始数据等。保证程序运行的配置信息(运行环境)和初始数据等。 描述程序的开发、使用和维护的文档描述程序的开发、使用和维护的文档6软件的定义软件的定义软件是客观

4、世界中问题空间与解空间的软件是客观世界中问题空间与解空间的具体描述,它追求的是表达能力强、更符具体描述,它追求的是表达能力强、更符合人类思维模式,具有构造性和易演化性合人类思维模式,具有构造性和易演化性的计算模型。的计算模型。-软件的实质软件的实质 7软件的特点软件的特点软件是一种逻辑产品,无形态,具有抽象性。软件是一种逻辑产品,无形态,具有抽象性。同时又具有一般机器的属性同时又具有一般机器的属性-原料加工的工具。原料加工的工具。软件是开发而形成的,无明显的制造过程。软件是开发而形成的,无明显的制造过程。软件不会软件不会“磨损磨损”和老化,但存在退化问题。和老化,但存在退化问题。大多数软件是定

5、做的,不是通过已有构件组大多数软件是定做的,不是通过已有构件组装而成。装而成。主要靠脑力劳动生产。主要靠脑力劳动生产。开发和维护成本高。开发和维护成本高。8软件的发展软件的发展 1 1、程序设计时期程序设计时期(1946194619561956) 软件软件= =程序程序 开发方式:个体开发方式:个体 主要特征:计算机硬件主要特征:计算机硬件= =计算机计算机 用途少,规模小;不作为商品;用途少,规模小;不作为商品; 开发者开发者= =使用者:自己开发,自己使用。使用者:自己开发,自己使用。 2 2、程序系统时期程序系统时期(1956195619681968) 软件软件= =程序程序+ +说明说

6、明 开发方式:作坊式开发方式:作坊式 主要特征:程序规模增大,多人分工合作。主要特征:程序规模增大,多人分工合作。 软件作为商品,即程序设计者软件作为商品,即程序设计者使用者;使用者; 程序开发和使用的文档资料已不可缺少。程序开发和使用的文档资料已不可缺少。 3 3、软件工程时期软件工程时期(19681968现在)现在) 软件软件= =程序程序+ +数据数据+ +文档文档 开发方式:工程化开发方式:工程化 主要特征:按工程管理的方法管理整个软件开发过程。主要特征:按工程管理的方法管理整个软件开发过程。9软件发展中的问题软件发展中的问题 6060年代中后期,软件商品化的出现,使计算机应用的广度年

7、代中后期,软件商品化的出现,使计算机应用的广度和深度得到迅速扩大,由此而带来的问题是:和深度得到迅速扩大,由此而带来的问题是: 应用领域不断扩大应用领域不断扩大-软件需求量倍增软件需求量倍增。 要求计算机解决更多的问题要求计算机解决更多的问题-软件规模增大软件规模增大。 要求解决问题的深度增加要求解决问题的深度增加-软件复杂程度增大软件复杂程度增大。软件开发反映出的问题:软件开发反映出的问题: 软件是手工劳动,是智力产品软件是手工劳动,是智力产品-生产率低。生产率低。 程序是逻辑实体,出错容易,纠错困难,质量难以保证,程序是逻辑实体,出错容易,纠错困难,质量难以保证,维护费用高于开发费用。维护

8、费用高于开发费用。 软件规模和复杂度与开发者花费的精力和时间不是简单的软件规模和复杂度与开发者花费的精力和时间不是简单的正比关系,成本上升快。正比关系,成本上升快。10软软 件件 危危 机机软件生产的进度、数量、质量、成本与软件生产的进度、数量、质量、成本与社会对软件的需求量和希望要求甚远,与社会对软件的需求量和希望要求甚远,与硬件发展形成强烈反差。这就是所谓的硬件发展形成强烈反差。这就是所谓的“软件危机软件危机”。-现实与希望形成的巨大现实与希望形成的巨大落差落差11软件危机的具体表现软件危机的具体表现1 1、软件开发:、软件开发: 软件开发过程和成本软件开发过程和成本无法有效控制,且成本逐

9、年上升;无法有效控制,且成本逐年上升; 软件开发生产率软件开发生产率提高的速度跟不上需求的增加;提高的速度跟不上需求的增加; 用户需求模糊用户需求模糊,用户对已完成的软件系统不满意;,用户对已完成的软件系统不满意; 软件产品质量软件产品质量靠不住,没有确保质量的有效措施。靠不住,没有确保质量的有效措施。 2 2、软件维护:、软件维护: 软件常常是软件常常是不可维护不可维护的(缺乏文档或文档质量的(缺乏文档或文档质量) )。 维护成本高维护成本高。软件维护花费的时间和费用占整个软件开。软件维护花费的时间和费用占整个软件开发组织的发组织的60%60%以上。以上。12产生软件危机的原因产生软件危机的

10、原因客观客观原因原因: 软件是手工劳动,是智力产品软件是手工劳动,是智力产品-生产率低。生产率低。 软件是逻辑实体,出错容易,纠错困难。软件是逻辑实体,出错容易,纠错困难。 软件的复杂性使得仅靠人的智力难以驾驭。软件的复杂性使得仅靠人的智力难以驾驭。主观原因主观原因 开发方式:认为开发方式:认为开发软件就是写程序。开发软件就是写程序。 组织方式组织方式:作坊式的生产方式;开发无计划、开发过程无:作坊式的生产方式;开发无计划、开发过程无规范、开发过程难控制。规范、开发过程难控制。 用户方面:对软件需求描述不精确。用户方面:对软件需求描述不精确。 开发人员方面:对用户需求的理解与用户本来愿望有差异

11、,开发人员方面:对用户需求的理解与用户本来愿望有差异,相互之间的信息交流不及时、不准确、有误解。相互之间的信息交流不及时、不准确、有误解。13“软件工程软件工程”的提出的提出寻求新的软件开发组织形式和开发方法。寻求新的软件开发组织形式和开发方法。 北大西洋公约组织成员国的软件工作者于北大西洋公约组织成员国的软件工作者于19681968、19691969年连续两年召开软件研讨会,即有名的年连续两年召开软件研讨会,即有名的natonato会会议,集中研究对策,讨论如何摆脱软件危机,提出议,集中研究对策,讨论如何摆脱软件危机,提出了软件工程的概念,即用现代工程的概念、原理、了软件工程的概念,即用现代

12、工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和技术和方法进行计算机软件的开发、管理、维护和更新。于是,计算机科学与技术的新领域更新。于是,计算机科学与技术的新领域“软件软件工程工程”诞生了。诞生了。14软件工程的定义软件工程的定义ieeeiee83:软件工程是开发、运行、维护和修复软件的:软件工程是开发、运行、维护和修复软件的系统方法。系统方法。ieeeiee93: 软件工程是软件工程是将系统的、规范的、可度量的工将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。方法的研究。计算机大百科全书计

13、算机大百科全书:软件工程是应用计算机科学理论和:软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的定义、开发、发布和维护的用户要求的软件产品的定义、开发、发布和维护的工程工程,或以之为研究对象的或以之为研究对象的学科学科。 15软件工程包含的内容软件工程包含的内容软件工程三要素软件工程三要素:方法、工具和过程:方法、工具和过程 软件工程方法:软件工程方法:提供提供“如何做如何做”的技术的技术 软件工程工具软件工程工具:提供自动或半自动地支持软件的开发和:提供自动或半自动地支持软件的开发和管理,支持各

14、种软件文档的生成。管理,支持各种软件文档的生成。 软件工程过程软件工程过程:在技术和工具支持下,完成把用户的需在技术和工具支持下,完成把用户的需求转换为软件产品的一组有组织的活动求转换为软件产品的一组有组织的活动。没有软件没有软件工程过程就没有软件管理。工程过程就没有软件管理。 软件工程研究的内容软件工程研究的内容: 软件工程方法学研究软件工程方法学研究 软件工程工具研究软件工程工具研究 软件过程管理、规范、标准研究软件过程管理、规范、标准研究16软件工程的目标软件工程的目标在给定成本、进度的前提下,开发出满足用在给定成本、进度的前提下,开发出满足用户需求的高质量的、易于维护的软件产品。户需求

15、的高质量的、易于维护的软件产品。软件工程是从技术和管理两方面研究如何更软件工程是从技术和管理两方面研究如何更好地开发和维护计算机软件。好地开发和维护计算机软件。成本、进度和质量将是未来若干年中导致软成本、进度和质量将是未来若干年中导致软件激烈竞争的主要因素。件激烈竞争的主要因素。 17软件工程面临的问题软件工程面临的问题软件工程经过几十年的发展,取得了很大进步,但如下软件工程经过几十年的发展,取得了很大进步,但如下问题仍然没有得到很好的解决:问题仍然没有得到很好的解决:软件费用软件费用仍然很高。仍然很高。可靠性可靠性难以稳定地保证。难以稳定地保证。可维护可维护性差。性差。可重用可重用性低。性低

16、。生产率生产率不能有效提高。不能有效提高。 18软件生存周期定义定义:软件生存周期是指一个软件从提出开发要求开软件生存周期是指一个软件从提出开发要求开始直到不再使用(报废)为止的整个时期始直到不再使用(报废)为止的整个时期。软件生存周期阶段划分软件生存周期阶段划分软件工程采用软件生存周期方法,从时间角度对软件开软件工程采用软件生存周期方法,从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干阶段,每个阶段有相对独立的任务,然后逐步完划分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。成每个阶段的任

17、务。软件生存周期包括三个时期:软件生存周期包括三个时期: 软件定义软件定义 软件开发软件开发 软件使用和维护软件使用和维护19软件生存周期软件生存周期软件定义软件定义1 1、问题定义问题定义:确定要求解决的问题是什么?:确定要求解决的问题是什么?2 2、可行性研究可行性研究: :确定确定在时间和资源的约束条件下,能否完成在时间和资源的约束条件下,能否完成指定的任务?包括:技术可行性、经济可行性、法律可指定的任务?包括:技术可行性、经济可行性、法律可行性、社会可行性。若可行,则行性、社会可行性。若可行,则制定项目所需费用、资制定项目所需费用、资源、时间的开发计划。源、时间的开发计划。3 3、需求

18、分析需求分析:准确地确定:准确地确定“软件系统必须做什么软件系统必须做什么”,即明,即明确目标系统必须具备的功能和对系统的约束。确目标系统必须具备的功能和对系统的约束。20软件生存周期软件生存周期软件开发软件开发1 1、概要设计概要设计:确定在总体上应该怎样实现目标系统,包括:确定在总体上应该怎样实现目标系统,包括系统的软件结构设计、接口设计和数据结构设计。系统的软件结构设计、接口设计和数据结构设计。-软软件架构设计件架构设计2 2、详细设计详细设计:对软件结构中的模块进行精确描述:对软件结构中的模块进行精确描述算法设算法设计。计。3 3、编码及模块测试编码及模块测试:把模块算法转换成特定程序

19、设计语言:把模块算法转换成特定程序设计语言的正确的、容易理解、容易维护的程序模块。的正确的、容易理解、容易维护的程序模块。4 4、综合测试综合测试:发现和纠正程序中的错误,保证软件功能和:发现和纠正程序中的错误,保证软件功能和性能符合需求规格说明书规定的要求。包括集成测试、性能符合需求规格说明书规定的要求。包括集成测试、确认测试和系统测试。确认测试和系统测试。21软件生存周期软件生存周期软件维护软件维护软件投入使用后继续对软件的查错、纠错和改软件投入使用后继续对软件的查错、纠错和改进。使系统持久地满足用户的需要。包括:进。使系统持久地满足用户的需要。包括: 改正性维护改正性维护 适应性维护适应

20、性维护 完善性维护完善性维护 预防性维护预防性维护22软件过程软件过程 软件过程指为获得高质量软件所需要完成的软件过程指为获得高质量软件所需要完成的一系列任务以及完成这些任务的一系列任务以及完成这些任务的工作步骤工作步骤。过程。过程还规定了运用的还规定了运用的方法的顺序方法的顺序、应该交付的、应该交付的文档文档资资料、为保证软件质量和协调变化所需要采取的料、为保证软件质量和协调变化所需要采取的管管理措施理措施、任务完成的、任务完成的标志标志等。等。23软件过程模型软件过程模型 软件过程模型也叫软件生存期模型、软件工程范型,软件过程模型也叫软件生存期模型、软件工程范型,是软件过程的一种抽象表示。

21、是软件过程的一种抽象表示。 软件过程模型实际上是一种开发策略。软件生存周期软件过程模型实际上是一种开发策略。软件生存周期规定了一个软件开发应该经历的工作阶段,但这些阶段按规定了一个软件开发应该经历的工作阶段,但这些阶段按照一种什么策略来组织,这就是软件过程模型要讨论的问照一种什么策略来组织,这就是软件过程模型要讨论的问题。在软件开发过程中,软件项目的性质不同、运用的开题。在软件开发过程中,软件项目的性质不同、运用的开发方法不同、支持软件开发的工具不同,其开发策略也不发方法不同、支持软件开发的工具不同,其开发策略也不同,即适用的软件过程模型不同。同,即适用的软件过程模型不同。 不同的软件过程模型

22、,很难说哪个最好。只能说某个不同的软件过程模型,很难说哪个最好。只能说某个软件项目用哪个模型更好。软件项目用哪个模型更好。24软件过程模型软件过程模型-瀑布模型瀑布模型 严格按照软件生存期的阶段划分顺序和各阶段的目标、严格按照软件生存期的阶段划分顺序和各阶段的目标、任务、文档的要求来进行开发。任务、文档的要求来进行开发。 该模型该模型以文档为驱动以文档为驱动。每一活动结束后,通过严格的。每一活动结束后,通过严格的阶段复审和确认,得到一致、完整、准确的良好文档,以阶段复审和确认,得到一致、完整、准确的良好文档,以“冻结冻结”这些文档为该阶段结束的标志,并作为下一阶段这些文档为该阶段结束的标志,并

23、作为下一阶段活动的唯一基础;以每一步的正确性和完整性来保证最终活动的唯一基础;以每一步的正确性和完整性来保证最终系统的质量。系统的质量。 适应性:瀑布模型适合功能和性能明确、完整、无重适应性:瀑布模型适合功能和性能明确、完整、无重大变化的软件开发。大变化的软件开发。 局限性:用户很难完整、准确表达对系统的全面要求,局限性:用户很难完整、准确表达对系统的全面要求,需求说明也很难做到把一切描述得完整、准确、一致,并需求说明也很难做到把一切描述得完整、准确、一致,并与实际环境相符。与实际环境相符。25软件计划确认计划说明书维护确认软件维护报告测试确认测试报告编码确认源程序清单设计确认设计说明书瀑布模

24、型瀑布模型需求定义确认需求说明书定义阶段开发阶段维护阶段26软件过程模型软件过程模型-原型模型原型模型 先根据用户对需求的描述,通过软件工具构造一个软件系先根据用户对需求的描述,通过软件工具构造一个软件系统的原型来描述目标系统的主要功能,让用户进行评价,并根统的原型来描述目标系统的主要功能,让用户进行评价,并根据用户意见进行改进。随着不断实验、评价和修改,最后使得据用户意见进行改进。随着不断实验、评价和修改,最后使得在功能上完全满足用户需求。在功能上完全满足用户需求。 软件系统原型一般不是最终目标系统,只是在功能上描述软件系统原型一般不是最终目标系统,只是在功能上描述了用户需求,忽略了软件质量

25、特性要求和管理对质量的控制。了用户需求,忽略了软件质量特性要求和管理对质量的控制。 开发原型系统的条件:开发原型系统的条件: 用户对目标系统只有模糊笼统的认识,难以准确地提出所用户对目标系统只有模糊笼统的认识,难以准确地提出所有的系统要求。有的系统要求。 软件开发者和用户之间存在通信障碍。软件开发者和用户之间存在通信障碍。 有快速构造原型的工具。有快速构造原型的工具。 开发的软件系统可以通过对原型系统的完善来实现,也可开发的软件系统可以通过对原型系统的完善来实现,也可以抛弃原型系统,重新规划和设计。以抛弃原型系统,重新规划和设计。27软件过程模型软件过程模型增量增量模型模型 先按瀑布模型开发一个满足基本要求的系统,然后根据先按瀑布模型开发一个满足基本要求的系统,然后根据用户在使用中提出的新需求在进一步完善形成新的版本,这用户在使用中提出的新需求在进一步完善形成

温馨提示

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

评论

0/150

提交评论