软件工程全册配套最完整精品课件.ppt

上传人(卖家):罗嗣辉 文档编号:1731272 上传时间:2021-09-21 格式:PPT 页数:337 大小:4.65MB
下载 相关 举报
软件工程全册配套最完整精品课件.ppt_第1页
第1页 / 共337页
软件工程全册配套最完整精品课件.ppt_第2页
第2页 / 共337页
软件工程全册配套最完整精品课件.ppt_第3页
第3页 / 共337页
软件工程全册配套最完整精品课件.ppt_第4页
第4页 / 共337页
软件工程全册配套最完整精品课件.ppt_第5页
第5页 / 共337页
点击查看更多>>
资源描述

1、 2 课程的性质、目的与任务课程的性质、目的与任务 软件工程是本专业的一门必修课程软件工程是本专业的一门必修课程。 通过本课程的学习,使学生能从中了解软件开发的整个过通过本课程的学习,使学生能从中了解软件开发的整个过 程,掌握相关理论和指导思想。为了让学生真正得以实践程,掌握相关理论和指导思想。为了让学生真正得以实践 ,结合实际软件开发项目,让学生从问题定义开始,经过,结合实际软件开发项目,让学生从问题定义开始,经过 可行性研究、需求分析、概要设计、详细设计、编码直到可行性研究、需求分析、概要设计、详细设计、编码直到 最后要对自己开发的软件还要进行测试,这样一个软件开最后要对自己开发的软件还要

2、进行测试,这样一个软件开 发过程,从而使学生掌握软件开发的基本技能,培养团队发过程,从而使学生掌握软件开发的基本技能,培养团队 精神及勾通与协作能力,锻炼文档编写能力,提高独立的精神及勾通与协作能力,锻炼文档编写能力,提高独立的 工作能力,通过本课程的学习,为学生后期的毕业设计环工作能力,通过本课程的学习,为学生后期的毕业设计环 节奠定基础。节奠定基础。 3 课程主要内容课程主要内容 本课程比较全面、系统地介绍软件工本课程比较全面、系统地介绍软件工 程的概念、技术与方法学。程的概念、技术与方法学。 主要内容包括:软件工程概述、软件生主要内容包括:软件工程概述、软件生 存周期及软件需求分析、软件

3、设计方法、存周期及软件需求分析、软件设计方法、 软件测试技术等。软件测试技术等。 4 5 5 How do we learn? 1 1、注重对基本概念、原理和方法的理解。、注重对基本概念、原理和方法的理解。 2 2、通过不断的实践,提高应用知识解决实、通过不断的实践,提高应用知识解决实 际问题的能力。际问题的能力。 3 3、注重提高沟通能力和文档写作能力。、注重提高沟通能力和文档写作能力。 4 4、学会从专业的角度思考问题。、学会从专业的角度思考问题。 5 5、学习别人的经验。、学习别人的经验。 6 课程安排课程安排 1. 课程安排:课程安排: 课堂教学:(48学时) 课程设计:以开发小组为单

4、位进行(3-5人一组) (时间: 7-8节课 地点:J13-对应实验室) 2. 关于考试:关于考试: 笔试:80分,作业:10分,考勤:10分 7 教材教材 软件工程软件工程 钱乐秋,赵文耘,牛军钰编著 出版社 清华大学出版社 8 主要参考书和参考网站主要参考书和参考网站 软件工程软件工程方法与实践方法与实践. . 许家珆许家珆 主编主编. 电子工业出版社电子工业出版社 2007 软件工程软件工程实践者的研究方法实践者的研究方法. . Roger S.pressman著,黄柏素,梅著,黄柏素,梅 宏等译,机械工业出版社,宏等译,机械工业出版社,1999 实用软件工程实用软件工程. . 赵池龙编

5、著,电子工业出版社赵池龙编著,电子工业出版社 UMLUML面向对象技术与实践面向对象技术与实践. . 宋波等,宋波等, 科学出版社,科学出版社,2005 面向对象系统分析与设计面向对象系统分析与设计. . Joey George等著,龚晓庆等译,清华等著,龚晓庆等译,清华 大学出版社,大学出版社,2008 9 1 1 概概 述述 10 1. 软件?软件的特点?软件的分类?计算软件?软件的特点?软件的分类?计算 机软件的发展机软件的发展 2. 软件危机?表现?原因?克服的方法?软件危机?表现?原因?克服的方法? 3. 软件工程?七条基本原理?软件工程?七条基本原理? 4. 软件的生命周期?软件过

6、程?软件的生命周期?软件过程? 5. 软件过程模型?软件过程模型? 6. 软件开发方法软件开发方法 7. 软件工具与软件开发环境软件工具与软件开发环境 内容摘要内容摘要 11 1 软件软件 一、什么是软件?一、什么是软件? ComputerComputer:由硬件和软件组成。由硬件和软件组成。 硬件:硬件:是看得見、摸得着的电子机械设备块。是看得見、摸得着的电子机械设备块。 软件:软件:是依附在硬件上面的是依附在硬件上面的程序、数据和文档程序、数据和文档的集合,是指的集合,是指 挥控制计算机系统挥控制计算机系统( (包括硬件和软件包括硬件和软件) )工作的神经思维工作的神经思维 中枢。中枢。

7、如果将硬件比作人的身体,那么软件就相当于如果将硬件比作人的身体,那么软件就相当于 人的神经中枢和知识才能。人的神经中枢和知识才能。 12 软件软件 = = 程序程序 + + 数据数据 + + 文档文档 1.数据:数据:程序加工处理的对象。包括数据的表示、组织与程序加工处理的对象。包括数据的表示、组织与 存储。存储。 数据数据 = = 初始化数据初始化数据 + + 测试数据测试数据 2.文档文档(document) :开发、使用和维护程序所需的图:开发、使用和维护程序所需的图 文资料文资料 。 1 1)文档)文档 = = 开发文档开发文档 + + 管理文档管理文档 + + 用户文档。用户文档。

8、一、什么是软件?一、什么是软件? 计算机软件产品开发文件编制指南计算机软件产品开发文件编制指南GB 8567-88.doc 13 软件文档软件文档 用户文档用户文档 用户手册用户手册 操作手册操作手册 维护修改建议维护修改建议 软件需求(规格)说明书软件需求(规格)说明书 开发文档开发文档 项目开发计划项目开发计划 可行性研究报告可行性研究报告 软件需求(规格)说明书软件需求(规格)说明书 数据需求说明书数据需求说明书 概要设计说明书概要设计说明书 详细设计说明书详细设计说明书 管理文档管理文档 测试计划测试计划 项目开发计划项目开发计划 测试报告测试报告 开发进度月报开发进度月报 开发总结报

9、告开发总结报告 图图 软件文档分类软件文档分类 14 2 2)管理文档具有严格的时序关系:因为管理是一个过程。)管理文档具有严格的时序关系:因为管理是一个过程。 19741974年,美国人认识到软件需要管理。年,美国人认识到软件需要管理。 19841984年,美国人认识到软件管理是一个过程管理,或是一个年,美国人认识到软件管理是一个过程管理,或是一个 管理过程。管理过程。 19911991年,出现了软件过程能力成熟度模型年,出现了软件过程能力成熟度模型CMM (Capability CMM (Capability Maturity Model)Maturity Model)版。版。 3 3)开

10、发文档具有严格的层次关系:)开发文档具有严格的层次关系: (1)(1)目标程序目标程序覆盖覆盖源程序源程序; (2)(2)源程序源程序覆盖覆盖详细设计说明书详细设计说明书; (3)(3)详细设计说明书详细设计说明书覆盖覆盖概要设计说明书概要设计说明书; (4)(4)概要设计说明书概要设计说明书覆盖覆盖需求规格说明书需求规格说明书; (5)(5)需求规格说明书需求规格说明书覆盖覆盖用户需求报告用户需求报告; (6)(6)用户需求报告用户需求报告覆盖覆盖软件合同软件合同。 15 文档的作用文档的作用 (1)提高软件开发过程的能见度。把开发过程中发生的事件以某种可阅读)提高软件开发过程的能见度。把开

11、发过程中发生的事件以某种可阅读 的形式记录在文档中。管理人员可把这些记载下来的材料作为检查软件的形式记录在文档中。管理人员可把这些记载下来的材料作为检查软件 开发进度和开发质量的依据,实现对软件开发的工程管理。开发进度和开发质量的依据,实现对软件开发的工程管理。 (2)提高开发效率。软件文档的编制,使得开发人员对各个阶段的工作都)提高开发效率。软件文档的编制,使得开发人员对各个阶段的工作都 进行周密思考、并且可及早发现错误,便于及时加以纠正。进行周密思考、并且可及早发现错误,便于及时加以纠正。 (3)作为开发人员在一定阶段的工作成果和结束标志。)作为开发人员在一定阶段的工作成果和结束标志。 (

12、4)记录开发过程中有关信息,便于协调以后的软件开发、使用和维护。)记录开发过程中有关信息,便于协调以后的软件开发、使用和维护。 (5)提供对软件的运行、维护和培训的有关信息,便于管理人员、开发人)提供对软件的运行、维护和培训的有关信息,便于管理人员、开发人 员、操作人员、用户之间协作、交流和了解,使软件开发活动更科学有员、操作人员、用户之间协作、交流和了解,使软件开发活动更科学有 效。效。 (6)便于潜在用户了解软件的功能、性能等各项指标,为选购符合自己需)便于潜在用户了解软件的功能、性能等各项指标,为选购符合自己需 要的软件提供依据。要的软件提供依据。 16 软件文档的写作要求软件文档的写作

13、要求 (1)针对性:)针对性:分清读者,适应需求。 (2)精确性:)精确性:行文确切,避免多义。 (3)清晰性:)清晰性:力求简明,运用图表。 (4)完整性:)完整性:自成体系,避免引用。 (5)灵活性:)灵活性:大的扩展,小的合并。 (6)可追溯性:)可追溯性:逐步扩展,前后照应。 17 3.程序(程序(program) :能完成预定功能和性能的指令集合。能完成预定功能和性能的指令集合。 程序设计语言三种类型:程序设计语言三种类型: 1)机器语言、汇编语言:依赖于机器,面向机器)机器语言、汇编语言:依赖于机器,面向机器 2)高级语言:独立于机器,面向过程或面向对象)高级语言:独立于机器,面向

14、过程或面向对象 3)面向问题语言:独立于机器,非过程式语言()面向问题语言:独立于机器,非过程式语言(4GL) (1).(1).面向过程的程序面向过程的程序 = = 算法算法 + + 数据结构。数据结构。 (2).(2).面向对象的程序面向对象的程序 = = 对象对象 + + 消息。消息。 (3).(3).面向数据的程序面向数据的程序 = = 数据库表数据库表 + + 在表上的操作在表上的操作( (如存贮过程、触发如存贮过程、触发 器或视图器或视图) )。 (4).(4).面向构件的程序面向构件的程序 = = 构件构件 + + 构架。构架。 优秀的程序优秀的程序( (或模块或模块) ),必须满

15、足,必须满足“高内聚、低耦合高内聚、低耦合”的性质。所谓的性质。所谓 高内聚,就是程序高内聚,就是程序( (或模块或模块) )内部结构紧凑,凝聚力和向心力强。所内部结构紧凑,凝聚力和向心力强。所 谓低耦合,就是程序谓低耦合,就是程序( (或模块或模块) )之间彼此依赖关系很低。之间彼此依赖关系很低。 18 软件开发:软件开发:既非常艰苦(因为软件设计思想与开发工具不断更新),又 无限快乐(因为软件成果是人类智慧与艺术的结晶)。 从认识论的角度看软件开发:从认识论的角度看软件开发: 软件开发是对问题求解的过程,从认识论的角度看,整个软件开发 过程可归纳成两类活动交互循环迭代的过程。 1)对问题的

16、认识:对问题域存在的客观事物以及要解决的问题产生正确 的认识和理解。包括弄清楚事物的属性、行为及其彼此间的关系,并 找出解决问题的方法。 2)基于认识的描述:用一种语言把对问题域的认识描述出来,当然最终 的描述必须是用计算机语言。 3)软件开发的每个阶段都包括了认识和描述的活动 语言的鸿沟语言的鸿沟: 问题域和实现域采用的描述语言存在很大的差距,这种差距被称为 语言的鸿沟。实际就是认识和描述的鸿沟。从自然语言过渡到计算机 语言没有一种准确可靠的技术。 19 问题域 自然语言 实现域 计算机语言 语言的过渡(人) 语言的鸿沟语言的鸿沟 20 问题域 自然语言 计算机 机器语言 汇编语言 非OO高

17、级语言 OO高级语言 语言的鸿沟语言的鸿沟 21 4.软件和程序的区别软件和程序的区别 程序只是完整软件产品的一部分。程序只是完整软件产品的一部分。 编写程序只是软件开发过程数据中的一个阶段,一般编写程序只是软件开发过程数据中的一个阶段,一般 来说,其工作量仅仅是软件开发全部工作量的来说,其工作量仅仅是软件开发全部工作量的10 20 今天仍然有人认为:软件等于程序。这些人一上来就今天仍然有人认为:软件等于程序。这些人一上来就 写程序。写程序。Roger S.Pressman说:说:“越早开始写代码越早开始写代码 的人,就是越迟完成代码的人的人,就是越迟完成代码的人”。 对管理文档的全面认识,那

18、就更晚了。对管理文档的全面认识,那就更晚了。 22 1 软件软件 二、软件的特点二、软件的特点 抽象性:逻辑实体。可记录。但看不到(抽象性:逻辑实体。可记录。但看不到(Intangible),), 开发过程可视化程度低,开发结果难以直观表示。开发过程可视化程度低,开发结果难以直观表示。 可复制性:与开发成本相比,复制成本很低可复制性:与开发成本相比,复制成本很低 无折旧无折旧 受硬件制约受硬件制约 未完全摆脱手工工艺未完全摆脱手工工艺 开发费用高开发费用高 23 1 软件软件 三、软件分类三、软件分类 1.按适用范围分:按适用范围分: 定制软件(定制软件(Custom Software)()(

19、项目软件)项目软件):满足:满足 特定客户的特定需要的软件。例如网站、特定客户的特定需要的软件。例如网站、MIS系统等。系统等。 通用软件(通用软件(Generic Software)()(产品软件)产品软件):满足:满足 市场潜在客户的通用需求的商业成品软件。例如:市场潜在客户的通用需求的商业成品软件。例如: Office、Windows等等 24 2.按软件功能分:按软件功能分: 系统软件:管理计算机自身的资源、提高计算机系统软件:管理计算机自身的资源、提高计算机 的使用效率并为计算机用户提供各种服务的基础的使用效率并为计算机用户提供各种服务的基础 软件。系统软件与机器有关,是支撑其它应用

20、软软件。系统软件与机器有关,是支撑其它应用软 件运行的平台。例如件运行的平台。例如OS、DBMS等等 应用软件:解决某一具体领域的实际问题的软件。应用软件:解决某一具体领域的实际问题的软件。 种类繁多,例如科学和工程计算软件、种类繁多,例如科学和工程计算软件、CAD、 CAM、CAI、MIS、GIS、ERP、CRM、CASE 等等 支撑软件:支撑软件:协助用户开发的工具软件,如编辑协助用户开发的工具软件,如编辑 程序、程序库、图形软件包等。程序、程序库、图形软件包等。 25 3.按软件体系结构分按软件体系结构分 桌面软件:全部工作由在单一机器上的一个桌面软件:全部工作由在单一机器上的一个 软件

21、系统完成。软件系统完成。 分布式软件:由多个软件协调工作来完成任分布式软件:由多个软件协调工作来完成任 务。例如务。例如C/S、B/S软件软件 并行软件:基于多并行软件:基于多CPU环境能完成并行计算环境能完成并行计算 的软件的软件 26 4.按规模分:按规模分: (1) (1) 小型软件小型软件(1-5(1-5人年人年) ); (2) (2) 中型软件中型软件(5-50(5-50人年人年) ) (3) (3) 大型软件大型软件(50(50人年以上人年以上) )。 5.按工作方式分:按工作方式分: (1) (1) 实时软件;实时软件;(2) (2) 分时软件;分时软件;(3) (3) 交互式软

22、件;交互式软件; (4) (4) 批处理软件;批处理软件;(5) (5) 嵌入式软件嵌入式软件(Embedded Software):运行于特定硬件设备中的软件。例):运行于特定硬件设备中的软件。例 如:手机、汽车等中的软件。如:手机、汽车等中的软件。 27 1 软件软件 四、计算机软件发展的三个时期四、计算机软件发展的三个时期 1. 早期时代(早期时代(60年代中期之前)年代中期之前)程序设计阶段程序设计阶段 硬件通用,软件专用;程序规模小,编写者和使用者硬件通用,软件专用;程序规模小,编写者和使用者 为同一人(同组人)。为同一人(同组人)。 2. 第二代(第二代(60年代中期年代中期-70

23、年代中期)年代中期)程序系统阶段程序系统阶段 出现出现“软件作坊软件作坊”、产品软件;、产品软件;“个体化个体化”开发方法。开发方法。 3. 第三代(第三代(70年代中期之后)年代中期之后)软件工程阶段软件工程阶段 软件开发成为一门新兴的工程学科软件开发成为一门新兴的工程学科软件工程。软件工程。 28 计算机软件发展的三个时期及特点 程程序序设设计计 程程序序系系统统 软软件件工工程程 软软 件件 的的 范范 畴畴 程序程 序 及 说 明 书 产品软件(项目 软件) 主主 要要 程程 序序 设设计计语语言言 汇 编 及 机 器 语言 高级语言高级语言系统、 程序设计语言 软软 件件 工工 作作

24、 范范围围 程序编写包 括 设 计 和 测试 软件生存期 需需求求者者程 序 设 计 者 本人 少数用户市场用户 29 计算机软件发展的三个时期及特点 程程序序设设计计 程程序序系系统统 软软件件工工程程 维维护护 责责任任 者者 程序设计者开发小组专职维护人员 硬硬件件特特征征价 高 、 存 储 小 、 可 靠 性 差 降价;速度、 容 量 、 可 靠 性明显提高 向超高速、大容 量、微型化发展 软软件件特特征征完 全 不 受 重 视 软件技术的发展 不满足需要,出 现软件危机 开发技术有进步,但 未获得突破性进展, 软 件 危 机 未 完 全 摆 脱 30 一、软件危机的产生一、软件危机的

25、产生 2020世纪世纪6060年代中期以后,一些开发大型软件系统的要求提了出来。年代中期以后,一些开发大型软件系统的要求提了出来。 然而软件技术的进步一直未能满足形势发展的需要,在大型软件的开然而软件技术的进步一直未能满足形势发展的需要,在大型软件的开 发过程中出现了复杂程度高、研制周期长、正确性难以保证的三大难发过程中出现了复杂程度高、研制周期长、正确性难以保证的三大难 题。题。 遇到的问题找不到解决办法,致使问题堆积起来,形成了人们难以控遇到的问题找不到解决办法,致使问题堆积起来,形成了人们难以控 制的局面,出现了所谓的制的局面,出现了所谓的“软件危机软件危机”。 例如例如: : 2 软件

26、危机软件危机 (Software crisis) 31 IBM公司的公司的 OS/360OS/360,共约,共约100100万条指令,花费了万条指令,花费了50005000个人年;个人年; 经费达数亿美圆,而结果却令人沮丧,错误多达经费达数亿美圆,而结果却令人沮丧,错误多达20002000个以上,系统个以上,系统 根本无法正常运行。根本无法正常运行。 OS/360OS/360系统的负责人系统的负责人BrooksBrooks这样描述开发过这样描述开发过 程的困难和混乱:程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,像巨兽在泥潭中作垂死挣扎,挣扎得越猛, 泥浆就沾得越多,最后没有一个野兽

27、能够逃脱淹没在泥潭中的命运。泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。 ” 19631963年,美国用于控制火星探测器的计算机软件中的一年,美国用于控制火星探测器的计算机软件中的一 个个“,”号被误写为号被误写为“. .”,而致使飞往火星的探测器发生爆,而致使飞往火星的探测器发生爆 炸,造成高达数亿美元的损失。炸,造成高达数亿美元的损失。 19671967年苏联年苏联“联盟一号联盟一号”载人宇宙飞船在返航时,由于软件忽略载人宇宙飞船在返航时,由于软件忽略 一个小数点,导至在进入大气层时因打不开降落伞而烧毁。一个小数点,导至在进入大气层时因打不开降落伞而烧毁。 32 2 软件危

28、机软件危机 二、软件危机的定义二、软件危机的定义 软件危机是指在计算机软件的开发和维护过程中所软件危机是指在计算机软件的开发和维护过程中所 遇到的一系列严重问题。遇到的一系列严重问题。 主要是两个问题主要是两个问题: 1. 如何开发软件,怎样满足对软件的日益增长的需求。如何开发软件,怎样满足对软件的日益增长的需求。 2. 如何维护数量不断膨胀的已有软件如何维护数量不断膨胀的已有软件 33 2 软件危机软件危机 三、软件危机的主要表现三、软件危机的主要表现 1. 对软件开发成本和进度的估计不准确对软件开发成本和进度的估计不准确,甚至开发过程甚至开发过程 就夭折就夭折 2. 不满足需求不满足需求,

29、用户不满意的现象经常发生用户不满意的现象经常发生 3. 软件质量不高、可靠性差软件质量不高、可靠性差 4.缺乏适当的文档资料缺乏适当的文档资料,软件常常不可维护、错误难以改软件常常不可维护、错误难以改 正。正。 5. 软件成本占系统总成本的比例逐年上升软件成本占系统总成本的比例逐年上升 6. 软件开发速度跟不上计算机发展速度,软件生产率低,软件开发速度跟不上计算机发展速度,软件生产率低, 不能满足需要。不能满足需要。 34 2 软件危机软件危机 四、产生软件危机的原因四、产生软件危机的原因 软件是逻辑产品,开发进度、成本难以估计软件是逻辑产品,开发进度、成本难以估计 缺乏或不完整、不一致的文档

30、给维护带来困难缺乏或不完整、不一致的文档给维护带来困难 用户对软件需求的描述往往不够精确,有遗漏,有二用户对软件需求的描述往往不够精确,有遗漏,有二 义义 软件开发人员对需求的理解与用户的本来愿望有差异软件开发人员对需求的理解与用户的本来愿望有差异, 在软件开发过程中,或多或少地采用了错误的方法和在软件开发过程中,或多或少地采用了错误的方法和 技术。对用户需求没有完整准确的认识,就匆忙着手技术。对用户需求没有完整准确的认识,就匆忙着手 编写程序。编写程序。 大型软件项目需多人协同完成,缺乏管理经验大型软件项目需多人协同完成,缺乏管理经验 缺乏有力的方法学和工具的支持缺乏有力的方法学和工具的支持

31、 软件项目的特殊性和人类智力的局限性软件项目的特殊性和人类智力的局限性 35 2 软件危机软件危机 五、解决软件危机的途径五、解决软件危机的途径 1. 技术措施技术措施 消除错误的概念和做法消除错误的概念和做法 使用更好的软件开发方法和开发工具使用更好的软件开发方法和开发工具 2. 组织管理措施组织管理措施 软件开发不是某种个体劳动的神秘技巧,而应该是软件开发不是某种个体劳动的神秘技巧,而应该是 一种组织良好、管理严密、各类人员协同配合、共一种组织良好、管理严密、各类人员协同配合、共 同完成的同完成的工程工程项目。项目。 36 3 软件工程软件工程 软件工程(软件工程(Software Eng

32、ineering)是在克服是在克服60年代末所年代末所 出现的出现的“软件危机软件危机”的过程中逐渐形成与发展的。的过程中逐渐形成与发展的。 为了克服软件危机,人们从其他产业的工业化生产得到启为了克服软件危机,人们从其他产业的工业化生产得到启 示,于是在示,于是在1968年北大西洋公约组织(年北大西洋公约组织(NATO)在联邦)在联邦 德国召开的的软件可靠性会议上,首次提出了德国召开的的软件可靠性会议上,首次提出了“软件工程软件工程” 的概念。的概念。 提出了在软件生产中采用提出了在软件生产中采用工程化工程化的方法,采用一系列科学的方法,采用一系列科学 的、现代化的方法技术来开发软件。这种工程

33、化的思想贯的、现代化的方法技术来开发软件。这种工程化的思想贯 穿到软件开发和维护的全过程。穿到软件开发和维护的全过程。 37 3 软件工程软件工程 一、什么是软件工程一、什么是软件工程 l软件工程是指导计算机软件开发和维护的工程学科。软件工程是指导计算机软件开发和维护的工程学科。 它采用工程的概念、原理、技术和方法来开发与维护软它采用工程的概念、原理、技术和方法来开发与维护软 件,把经过时间考验而证明正确的管理技术和当前能够件,把经过时间考验而证明正确的管理技术和当前能够 得到的最好的技术方法结合起来。得到的最好的技术方法结合起来。 l软件工程是一门涉及软件计划、需求分析、设计、编软件工程是一

34、门涉及软件计划、需求分析、设计、编 码、测试和维护的原理、方法及工具的研究和应用的学码、测试和维护的原理、方法及工具的研究和应用的学 科。科。 l 1983年年IEEE给出的定义为:给出的定义为:“软件工程是开发、运软件工程是开发、运 行、维护和修复软件的系统方法行、维护和修复软件的系统方法”。 38 二、软件工程的目标二、软件工程的目标 3 软件工程软件工程 软件工程的目标是在给定成本、软件工程的目标是在给定成本、 进度的前提下,开发出具有可修改进度的前提下,开发出具有可修改 性、有效性、可靠性、可理解性、性、有效性、可靠性、可理解性、 可维护性、可重用性、可适应性、可维护性、可重用性、可适

35、应性、 可移植性、可追踪性和可互操作性可移植性、可追踪性和可互操作性 并满足用户需求的软件产品。并满足用户需求的软件产品。 39 二、软件工程的目标二、软件工程的目标 可修改性可修改性 (modifiability) 允许对软件系统进行修改而不增加其复杂性允许对软件系统进行修改而不增加其复杂性.它支持它支持 软件调试与维护。软件调试与维护。 有效性有效性 (efficiency) 指软件系统的时间和空间效率。这是一个应当努力追指软件系统的时间和空间效率。这是一个应当努力追 求的重要目标。求的重要目标。 可靠性可靠性 (reliability) 是指在给定的时间间隔内,程序成功运行的概率。可是指

36、在给定的时间间隔内,程序成功运行的概率。可 靠性是衡量软件质量的一个重要目标。靠性是衡量软件质量的一个重要目标。 可理解性可理解性 (understandability ) 指系统具有清晰的结构,能直接反映问题的需求。可指系统具有清晰的结构,能直接反映问题的需求。可 理解性有助于控制软件系统的复杂性,并支持软理解性有助于控制软件系统的复杂性,并支持软 件的维护、移植和重用。件的维护、移植和重用。 可维护性可维护性 (maintainability) 是指软件产品交付使用后,在实现改正潜伏的错误、是指软件产品交付使用后,在实现改正潜伏的错误、 改进性能等属性、适应环境变化等方面工作的难改进性能等

37、属性、适应环境变化等方面工作的难 易程度。易程度。 40 可重用性可重用性 (reusability) 是指软部件可以在多种场合使用的程度。是指软部件可以在多种场合使用的程度。 可适应性可适应性 (adaptability) 是指软件在不同的系统约束条件下,使用户需求得到是指软件在不同的系统约束条件下,使用户需求得到 满足的难易程度。满足的难易程度。 可移植性可移植性 (portability) 是指软件从一个计算机系统或环境移植到另一个上去是指软件从一个计算机系统或环境移植到另一个上去 的难易程度。的难易程度。 可追踪性可追踪性 (traceability) 是指根据软件需求对软件设计、程序

38、进行正向追踪,是指根据软件需求对软件设计、程序进行正向追踪, 或根据程序、软件设计对软件需求进行逆向追踪或根据程序、软件设计对软件需求进行逆向追踪 的能力。软件开发各阶段的文档和程序的完整性、的能力。软件开发各阶段的文档和程序的完整性、 一致性、可理解性支持软件的可追踪性。一致性、可理解性支持软件的可追踪性。 可互操作性可互操作性 (interoperability) 是指多个软件元素相互通信并协同完成任务的能力。是指多个软件元素相互通信并协同完成任务的能力。 二、软件工程的目标二、软件工程的目标 41 二、软件工程的目标二、软件工程的目标 低开发成本低开发成本 易于维护易于维护 高可靠性高可

39、靠性高性能高性能 按时交付按时交付 互斥 互补 可见,软件工程所追求的目标是:可见,软件工程所追求的目标是: 42 软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段: 三、软件工程的发展三、软件工程的发展 3 软件工程软件工程 43 软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段: 6060年代末到年代末到7070年代为了年代为了 克 服克 服 “ 软 件 危 机软 件 危 机 ” (Software crisis)(Software crisis)提出提出 “软件工程软件工程”的名词的名词, , 将软将软 件开发纳入工程化的轨道,件开发纳入工程化

40、的轨道, 基本形成软件工程的概念、基本形成软件工程的概念、 框架、技术和方法。称为框架、技术和方法。称为传传 统统的软件工程的软件工程 44 软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段: 8080年代中到年代中到9090年代,面向对象年代,面向对象 的方法与技术得到发展,研究的重的方法与技术得到发展,研究的重 点转移到面向对象的分析与设计,点转移到面向对象的分析与设计, 演化为一种完整的软件开发方法和演化为一种完整的软件开发方法和 系统的技术体系,称为对象工程。系统的技术体系,称为对象工程。 45 软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶

41、段: 8080年代中开始,年代中开始,人们在软件开发人们在软件开发 的实践过程中认识到:提高软件生产的实践过程中认识到:提高软件生产 率,保证软件质量的关键是率,保证软件质量的关键是“软件过软件过 程程”,是软件开发和维护中的管理和,是软件开发和维护中的管理和 支持能力,逐步形成软件过程工程。支持能力,逐步形成软件过程工程。 46 软件工程的发展已经历了四个重要阶段:软件工程的发展已经历了四个重要阶段: 90年代起,基于构件(年代起,基于构件(Component) 的开发方法取得重要进展,软件系统的的开发方法取得重要进展,软件系统的 开发可开发可通过使用现成的可复用构件组装通过使用现成的可复用

42、构件组装 完成,而无需从头开始构造,以此达到完成,而无需从头开始构造,以此达到 提高效率和质量,降低成本的目的。称提高效率和质量,降低成本的目的。称 为为构件工程。构件工程。 47 四、软件工程研究的范畴四、软件工程研究的范畴 3 软件工程软件工程 软件工程所包含的内容不是一成不变的,随着人们对软件系统的软件工程所包含的内容不是一成不变的,随着人们对软件系统的 研制开发和生产的理解。应用发展的眼光看待它。研制开发和生产的理解。应用发展的眼光看待它。 参见软件工程知识体系图参见软件工程知识体系图 48 49 3 软件工程软件工程 五、软件工程的本质特性五、软件工程的本质特性 关注大型程序的构造关

43、注大型程序的构造 中心课题是控制软件固有的复杂性中心课题是控制软件固有的复杂性 应对需求变更应对需求变更 提高软件开发和维护的效率提高软件开发和维护的效率 提倡有纪律的过程提倡有纪律的过程 最终目的是使客户满意最终目的是使客户满意 难点是对问题域的认识和描述难点是对问题域的认识和描述 50 3 软件工程软件工程 六、软件工程的基本原理六、软件工程的基本原理 目前有目前有100多条关于软件工程的准则,其中最出名的多条关于软件工程的准则,其中最出名的 是著名软件工程专家是著名软件工程专家B.W.Boehm在在1983年提出的年提出的7 条基本原理。条基本原理。 1. 用分阶段的生命周期计划严格管理

44、用分阶段的生命周期计划严格管理 经统计表明,不成功的软件项目中有一半左右是由经统计表明,不成功的软件项目中有一半左右是由 于计划不周造成的。于计划不周造成的。 Boehm认为,在软件的整个生命周期中应制定并严认为,在软件的整个生命周期中应制定并严 格执行六类计划:项目概要计划、里程碑计划、项格执行六类计划:项目概要计划、里程碑计划、项 目控制计划、产品控制计划、验证计划、运行维护目控制计划、产品控制计划、验证计划、运行维护 计划。计划。 51 3 软件工程软件工程 六、软件工程的基本原理六、软件工程的基本原理 2. 坚持进行阶段评审坚持进行阶段评审 大部分错误是在编码之前造成的大部分错误是在编

45、码之前造成的 错误发现与改正得越晚,所需付出的代价越高。错误发现与改正得越晚,所需付出的代价越高。 因此,在每个阶段都进行严格的评审,以便尽早发现因此,在每个阶段都进行严格的评审,以便尽早发现 在软件开发过程的错误在软件开发过程的错误 52 3 软件工程软件工程 六、软件工程的基本原理六、软件工程的基本原理 3. 实行严格的产品控制实行严格的产品控制 在软件开发过程中不要随意改变需求,因为改变某项需在软件开发过程中不要随意改变需求,因为改变某项需 求往往需要付出较高的代价,但在实践中用户往往会提求往往需要付出较高的代价,但在实践中用户往往会提 出需求变更,因此需要采取科学的产品控制技术。出需求

46、变更,因此需要采取科学的产品控制技术。 目前主要实行目前主要实行基准配置管理基准配置管理:基准配置是指经过阶段评:基准配置是指经过阶段评 审后的软件配置成分,如各个阶段产生的文档或程序代审后的软件配置成分,如各个阶段产生的文档或程序代 码。码。 对涉及基准配置的修改,必须经过严格的评审,通过后对涉及基准配置的修改,必须经过严格的评审,通过后 才能实施修改。才能实施修改。 53 3 软件工程软件工程 六、软件工程的基本原理六、软件工程的基本原理 4. 采用现代程序设计技术采用现代程序设计技术 实践表明:采用先进的技术既可提高软件开实践表明:采用先进的技术既可提高软件开 发的效率,又可提高软件维护

47、的效率。发的效率,又可提高软件维护的效率。 80年代及之前:结构化分析、设计技术年代及之前:结构化分析、设计技术 90年代:面向对象分析、设计技术年代:面向对象分析、设计技术 54 3 软件工程软件工程 六、软件工程的基本原理六、软件工程的基本原理 5. 结果应能清楚地审查结果应能清楚地审查 软件产品是看不见、摸不着的逻辑产品,开软件产品是看不见、摸不着的逻辑产品,开 发过程难以评价和管理。发过程难以评价和管理。 根据软件开发项目的总目标及完成期限,规根据软件开发项目的总目标及完成期限,规 定开发组织的责任和产品标准,使所得的结定开发组织的责任和产品标准,使所得的结 果能够清楚地审查果能够清楚

48、地审查 55 3 软件工程软件工程 六、软件工程的基本原理六、软件工程的基本原理 6. 开发小组的人员应该少而精开发小组的人员应该少而精 开发小组人员的素质和数量是影响软件产品开发小组人员的素质和数量是影响软件产品 质量和开发效率的重要因素。质量和开发效率的重要因素。 开发小组人员数目的增加,使相互交流复杂、开发小组人员数目的增加,使相互交流复杂、 费用增加。费用增加。 56 3 软件工程软件工程 六、软件工程的基本原理六、软件工程的基本原理 7. 承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 遵循前遵循前6条基本原理,就能够按照当代软件条基本原理,就能够按照当代软件 工程

49、基本原理实现软件的工程化生产,但不工程基本原理实现软件的工程化生产,但不 能保证赶上时代前进的步伐。能保证赶上时代前进的步伐。 积极主动采纳新的软件技术,且不断总结经积极主动采纳新的软件技术,且不断总结经 验。验。 57 一、软件生存周期一、软件生存周期 4 软件生存周期与软件过程软件生存周期与软件过程 l 软件也有一个孕育、诞生、成长、成熟、衰亡的生软件也有一个孕育、诞生、成长、成熟、衰亡的生 存过程。存过程。这个过程即为计算机软件的生存周期 l 软件的生存周期软件的生存周期(Software Life Cycle):软件产品或软件产品或 软件系统从设计、投入使用到被淘汰的全过程。软件系统从

50、设计、投入使用到被淘汰的全过程。 l 软件生存周期一般分为:软件生存周期一般分为:软件定义软件定义(问题定义、可(问题定义、可 行性研究、需求分析)、行性研究、需求分析)、软件开发软件开发(总体设计、详细设(总体设计、详细设 计、编码和单元测试、综合测试)、计、编码和单元测试、综合测试)、软件维护软件维护等三个时等三个时 期。期。 58 软件生存周期软件生存周期(各阶段的工作小结各阶段的工作小结) 阶段阶段关键问题关键问题结束标准结束标准 问题定义问题定义问题是什么?问题是什么?关于规模和目标的报告书关于规模和目标的报告书 可行性研究可行性研究有可行的解吗?有可行的解吗?系统的高层逻辑模型:系

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(软件工程全册配套最完整精品课件.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|