第1章软件开发方法(二)软件工程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第1章软件开发方法(二)软件工程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 方法 软件工程 课件
- 资源描述:
-
1、第第1 1章章 软件开发方法软件开发方法(二)软件工程(二)软件工程计算机教学实验中心计算机教学实验中心 下一页上一页停止放映第第2 2|94|94页页问题的提出什么是软件工程?什么是软件工程?为什么提出软件工程?为什么提出软件工程?主要研究哪些问题?主要研究哪些问题?软件工程的目标、原理软件工程的目标、原理软件开发活动软件开发活动下一页上一页停止放映第第3 3|94|94页页1 1了解软件工程的基本概念、基本原则了解软件工程的基本概念、基本原则2 2理解软件工程的主要定义理解软件工程的主要定义3 3理解软件过程及模型理解软件过程及模型4 4了解软件工程方法学了解软件工程方法学下一页上一页停止
2、放映第第4 4|94|94页页1.2.11.2.1 软件工程概述软件工程概述什么是软件工程?什么是软件工程?为什么要学习软件工程?为什么要学习软件工程?软件工程包括哪些内容?软件工程包括哪些内容?下一页上一页停止放映“软件工程是一种描述规范软件工程是一种描述规范。”Michael Jackson软件工程?软件工程?下一页上一页停止放映第第6 6|94|94页页软件工程专家软件工程专家BoehmBoehm定义定义著名软件工程专家著名软件工程专家B BW WBoehmBoehm为软件工为软件工程的定义是:程的定义是:运用现代科学技术知识来设计并构造运用现代科学技术知识来设计并构造计算机程序及为开发
3、、运行和维护这计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。些程序所必需的相关文件资料。下一页上一页停止放映第第7 7|94|94页页IEEEIEEE给出的定义给出的定义19831983年年IEEEIEEE给出的定义为:给出的定义为:以优质、高效、低成本为目标,研究开以优质、高效、低成本为目标,研究开发、运行和维护软件以及使之退役的系发、运行和维护软件以及使之退役的系统方法。统方法。其中,其中,“软件软件”的定义为:计算机程序、的定义为:计算机程序、方法、规则、相关的文档资料以及在计算方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。机上运行时所必需的数据。下一页上一页
4、停止放映第第8 8|94|94页页关于软件工程学关于软件工程学软件工程是一门交叉学科,涉及到计算机软件工程是一门交叉学科,涉及到计算机科学、管理科学、工程学和数学。科学、管理科学、工程学和数学。软件工程的理论、方法、技术都是建立软件工程的理论、方法、技术都是建立在计算机科学的基础上;在计算机科学的基础上;它是用管理学的原理、方法进行软件生它是用管理学的原理、方法进行软件生产管理;产管理;用工程学的观点进行费用估算、制定进用工程学的观点进行费用估算、制定进度和实施方案;度和实施方案;用数学方法建立软件可靠性模型以及分用数学方法建立软件可靠性模型以及分析各种算法。析各种算法。下一页上一页停止放映第
5、第9 9|94|94页页1.2.21.2.2 软件工程的目标软件工程的目标1 1、开发生产尽可能多的软件产品;、开发生产尽可能多的软件产品;2 2、提高软件的生产效率;、提高软件的生产效率;3 3、满足应用的功能需要;、满足应用的功能需要;4 4、降低软件开发成本。、降低软件开发成本。但是,目标与实现过程是矛盾的:但是,目标与实现过程是矛盾的:功能强、系统则复杂,难于开发和维护;功能强、系统则复杂,难于开发和维护;注重发挥硬件功能,则可移植性差;注重发挥硬件功能,则可移植性差;快速开发,则可能影响质量;快速开发,则可能影响质量;下一页上一页停止放映第第10 10|94|94页页软件工程的本质特
6、征软件工程的本质特征1.1.软件工程关注于大型程序的构造软件工程关注于大型程序的构造2.2.软件工程的中心课题是控制复杂度软件工程的中心课题是控制复杂度3.3.软件经常变化软件经常变化4.4.开发软件的效率非常重要开发软件的效率非常重要5.5.和谐地合作是开发软件的关键和谐地合作是开发软件的关键6.6.软件必须有效地支持它的用户软件必须有效地支持它的用户7.7.在软件工程领域中是由具有一种文化背在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造景的人替具有另一种文化背景的人创造产品产品下一页上一页停止放映第第11 11|94|94页页1.2.31.2.3 软件工程原理软件工程
7、原理自自19681968年提出年提出“软件工程软件工程”的概念以来,的概念以来,专家学者又陆续提出了专家学者又陆续提出了100100多条关于软件工多条关于软件工程的准则。程的准则。著名软件工程专家著名软件工程专家B.W.BoehmB.W.Boehm于于19831983年发表年发表的一篇论文中提出了软件工程的七条基本的一篇论文中提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品原理。他认为这七条原理是确保软件产品质量和开发效率的最小准则集合。质量和开发效率的最小准则集合。下一页上一页停止放映第第12 12|94|94页页软件工程七条基本原理软件工程七条基本原理用分阶段的生命周期计划严格
8、管理用分阶段的生命周期计划严格管理坚持进行阶段评审坚持进行阶段评审实行严格的产品控制实行严格的产品控制采用现代程序设计技术采用现代程序设计技术结果应能清楚地审查结果应能清楚地审查开发小组人员少而精开发小组人员少而精承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性下一页上一页停止放映第第13 13|94|94页页用分阶段生命周期计划严格管理用分阶段生命周期计划严格管理据统计发现据统计发现:不成功软件项目中半数是因计划不成功软件项目中半数是因计划不周造成的。不周造成的。在软件的整个生命周期中应该制定并严格执在软件的整个生命周期中应该制定并严格执行六类计划:行六类计划:项目概要、项目
9、进度表、项目项目概要、项目进度表、项目控制、产品控制、验证控制、产品控制、验证及及运行维护计划运行维护计划。不同层次的管理人员必须严格按照计划各尽不同层次的管理人员必须严格按照计划各尽其职地去管理软件开发与维护工作,绝不能其职地去管理软件开发与维护工作,绝不能受客户或上级的影响而擅自背离预定计划。受客户或上级的影响而擅自背离预定计划。下一页上一页停止放映第第14 14|94|94页页坚持进行阶段评审坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束软件的质量保证工作不能等到编码阶段结束之后再进行。这是因为:之后再进行。这是因为:大部分错误是在编码之前造成的(根据大部分错误是在编码之前造成的
10、(根据BoehmBoehm统计,设计错误占软件错误的统计,设计错误占软件错误的63%63%,编码错误占编码错误占37%37%)。)。错误发现与改正得越晚,所付出的代价也错误发现与改正得越晚,所付出的代价也越高。越高。因此,在每个阶段进行严格的评审,尽早发因此,在每个阶段进行严格的评审,尽早发现并修正各个阶段中所犯的错误是一条必须现并修正各个阶段中所犯的错误是一条必须遵循的重要原则。遵循的重要原则。下一页上一页停止放映第第15 15|94|94页页示意图关于阶段评审作用示意图关于阶段评审作用 下一页上一页停止放映第第16 16|94|94页页实行严格的产品控制实行严格的产品控制在软件开发过程中不
11、应随意改变需求,但不能在软件开发过程中不应随意改变需求,但不能禁止更改需求。当必须修改时,为了保持软件禁止更改需求。当必须修改时,为了保持软件各配置成分的一致性,必须实行严格的产品控各配置成分的一致性,必须实行严格的产品控制。制。一切有关修改软件的建议都必须按照严格的规一切有关修改软件的建议都必须按照严格的规程进行评审,获准后才能实施修改。程进行评审,获准后才能实施修改。绝对不能谁想修改就随意进行修改的行为。绝对不能谁想修改就随意进行修改的行为。下一页上一页停止放映第第17 17|94|94页页采用现代程序设计技术采用现代程序设计技术以前的以前的结构化结构化程序设计技术,如今的程序设计技术,如
12、今的面向面向对象对象程序设计技术都被实践证明是各个不程序设计技术都被实践证明是各个不同历史阶段的优秀程序设计技术和方法。同历史阶段的优秀程序设计技术和方法。采用先进的技术既可以提高软件开发的效采用先进的技术既可以提高软件开发的效率,又可以提高软件维护的效率。率,又可以提高软件维护的效率。下一页上一页停止放映第第18 18|94|94页页结果应能清楚地审查结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品,软件产品是看不见、摸不着的逻辑产品,软件开发人员的工作进展情况可见性差。软件开发人员的工作进展情况可见性差。为了提高开发过程的可见性,应根据软件为了提高开发过程的可见性,应根据软件开发项目中
13、的目标完成期限,规定开发组开发项目中的目标完成期限,规定开发组织的责任和产品标准,使得到的结果能够织的责任和产品标准,使得到的结果能够清楚的审查。清楚的审查。下一页上一页停止放映第第19 19|94|94页页开发小组人员少而精开发小组人员少而精开发小组成员的素质应该高,人员不宜过开发小组成员的素质应该高,人员不宜过多。人员素质和数量是影响产品质量和开多。人员素质和数量是影响产品质量和开发效率的重要因素。发效率的重要因素。素质高的人开发效率比低的人高几倍甚至素质高的人开发效率比低的人高几倍甚至几十倍,而错误则明显得少;几十倍,而错误则明显得少;人数增加,管理难度也增加。人数增加,管理难度也增加。
14、下一页上一页停止放映第第2020|94|94页页承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性要积极主动地采纳新的软件技术,要不断要积极主动地采纳新的软件技术,要不断总结经验;不能自以为是,固步自封,唯总结经验;不能自以为是,固步自封,唯我独好。我独好。大千世界,错综复杂,只有不断学习,才大千世界,错综复杂,只有不断学习,才能不断进取,不断进步。能不断进取,不断进步。下一页上一页停止放映第第21 21|94|94页页1.2.41.2.4 软件开发活动软件开发活动软件工程过程是由一系列软件工程的阶段任软件工程过程是由一系列软件工程的阶段任务和活动组成。务和活动组成。199519
15、95年年ISOISO将软件生存周期的活动和任务划分将软件生存周期的活动和任务划分为为3 3个过程:个过程:主要过程主要过程(需求、设计、构造、测试和维护)(需求、设计、构造、测试和维护)支持过程支持过程(软件配置、软件工程管理、软件过程和(软件配置、软件工程管理、软件过程和软件质量)软件质量)组织过程组织过程(基础设施建设、工具和方法、改进、培(基础设施建设、工具和方法、改进、培训)训)下一页上一页停止放映第第2222|94|94页页(一一)主要过程主要过程 主要过程包括的软件开主要过程包括的软件开发活动和任务是:发活动和任务是:软件需求软件需求 软件设计软件设计 软件构造软件构造 软件测试软
16、件测试 软件维护软件维护下一页上一页停止放映第第2323|94|94页页1 1、软件需求、软件需求任务任务:收集、分析、理解、确定用户的要求;:收集、分析、理解、确定用户的要求;然后把用户的要求精确、完整地描述表达出来。然后把用户的要求精确、完整地描述表达出来。目的目的:要回答:要回答“要解决什么问题?要解决什么问题?”,既系统既系统“做什么?做什么?”。分两步骤:分两步骤:可行性研究、制定软件开发计划可行性研究、制定软件开发计划结果结果:可行性报告、软件计划、需求说明书可行性报告、软件计划、需求说明书需求说明书是让用户理解需求说明书是让用户理解:“什么是他们真正需要的什么是他们真正需要的”。
17、下一页上一页停止放映第第2424|94|94页页了解用户需求有关的问题了解用户需求有关的问题什么是需求?什么是需求?希望,功能,限制,必需品,任何必要的东西;希望,功能,限制,必需品,任何必要的东西;什么时候什么时候?从确定方案开始;从确定方案开始;为什么为什么?用户的需求是开发需要的依据;用户的需求是开发需要的依据;来自哪里来自哪里?来自用户,工业标准,和实践经验;来自用户,工业标准,和实践经验;如何实现?如何实现?使所有相关的人参与需求分析活动,通过有效的交使所有相关的人参与需求分析活动,通过有效的交流实现;流实现;谁来做谁来做?用户,工程管理人员,开发人员,维护人员。用户,工程管理人员,
18、开发人员,维护人员。下一页上一页停止放映第第2525|94|94页页用户参与需求分析的重要性用户参与需求分析的重要性根据根据Standish Group 1994Standish Group 1994年发表的一份年发表的一份研究报告统计,延迟的、超出预算的、研究报告统计,延迟的、超出预算的、未完成工程的最普遍的原因是:未完成工程的最普遍的原因是:缺少用户参与;缺少用户参与;不完备的需求规范;不完备的需求规范;改变需求规范。改变需求规范。下一页上一页停止放映第第2626|94|94页页需求分析的难点需求分析的难点 问题的复杂性问题的复杂性 涉及因素多而;如运行环境和系统功能等。涉及因素多而;如运
19、行环境和系统功能等。交流障碍交流障碍 涉及不同类型人员较多,知识背景、角度、角色的不同;涉及不同类型人员较多,知识背景、角度、角色的不同;不完备性和不一致性不完备性和不一致性 用户对问题的陈述有矛盾、片面性等造成;用户对问题的陈述有矛盾、片面性等造成;需求易变性需求易变性 需求是变化的。需求是变化的。下一页上一页停止放映第第2727|94|94页页需求工作的重要性需求工作的重要性IBMIBM公司有关研究的结果表明:公司有关研究的结果表明:有效的需求管理可以降低开发成本。有效的需求管理可以降低开发成本。通常改正需求错误需要付出改正其他错通常改正需求错误需要付出改正其他错误误1010倍以上的代价。
20、倍以上的代价。需求错误通常导致软件工程中全部错误需求错误通常导致软件工程中全部错误的的25-40%25-40%。改正很少的需求错误可以避免大量耗费改正很少的需求错误可以避免大量耗费在返工上的成本和时间。在返工上的成本和时间。下一页上一页停止放映第第2828|94|94页页需求活动需求活动 识别问题识别问题 通过调研和收集资料,了解用户的确切需求,并将用户通过调研和收集资料,了解用户的确切需求,并将用户提出的功能行为和特殊要求等用双方都能理解的表达方提出的功能行为和特殊要求等用双方都能理解的表达方式逐条列出。在整个分析期间要和用户充分协商。式逐条列出。在整个分析期间要和用户充分协商。可行性研究可
21、行性研究 对于大型复杂问题,要对用户的要求及实现环境从技术、对于大型复杂问题,要对用户的要求及实现环境从技术、经济和社会因素三个方面进行可行性研究,以确定问题经济和社会因素三个方面进行可行性研究,以确定问题是否可解。是否可解。分析建模分析建模 建立软件求解模型;信息、行为和表示。建立软件求解模型;信息、行为和表示。需求规格化及编写文档需求规格化及编写文档 需求规格说明书、初步用户使用手册等。需求规格说明书、初步用户使用手册等。下一页上一页停止放映第第2929|94|94页页2 2、软件设计、软件设计任务任务:给出实现系统的实施蓝图。:给出实现系统的实施蓝图。目的目的:要回答:要回答“如何解决该
22、问题?如何解决该问题?”,既系统既系统“怎样做?怎样做?”。步骤步骤:概要设计:解决系统的模块划分、模块的层次概要设计:解决系统的模块划分、模块的层次结构及数据库设计。结构及数据库设计。详细设计:解决每个摸块内部算法和数据结构。详细设计:解决每个摸块内部算法和数据结构。结果结果:系统设计说明书和模块功能说明书系统设计说明书和模块功能说明书 下一页上一页停止放映第第3030|94|94页页软件设计工作软件设计工作软件设计要做的工作总的可以归结为软件设计要做的工作总的可以归结为:软件系软件系统结构统结构(软件结构软件结构)设计、数据设计、界面设设计、数据设计、界面设计和过程设计。计和过程设计。设计
23、办法是功能分解,包括:设计办法是功能分解,包括:采用某种设计方法,将一个复杂的系统按采用某种设计方法,将一个复杂的系统按功能划分成模块;功能划分成模块;确定每个模块的功能;确定每个模块的功能;确定模块之间的接口,即模块之间传递的确定模块之间的接口,即模块之间传递的信息;信息;评价模块结构的质量。评价模块结构的质量。下一页上一页停止放映第第31 31|94|94页页软件设计准则软件设计准则(1 1)软件结构准则软件结构准则;分层结构、便于控制;软件;分层结构、便于控制;软件结构的深度和宽度要适中;具有合理的扇出和扇结构的深度和宽度要适中;具有合理的扇出和扇入数。入数。(2 2)模块化准则模块化准
24、则;分解复杂问题;分解复杂问题;(3 3)模块独立性准则模块独立性准则;应使模块之间和与外部环;应使模块之间和与外部环境之间接口的复杂性尽量地减小;模块应具有低境之间接口的复杂性尽量地减小;模块应具有低耦合、高内聚;耦合、高内聚;(4 4)数据和过程描述清晰、可区分(表达式);)数据和过程描述清晰、可区分(表达式);(5 5)成果可重复。)成果可重复。下一页上一页停止放映第第3232|94|94页页软件设计方法软件设计方法 面向数据流的设计方法(分为面向数据流的设计方法(分为变换流变换流和事和事务流方法);务流方法);结构化设计方法结构化设计方法;面向数据结构设计方法(面向数据结构设计方法(J
25、acksonJackson方法);方法);WarnierWarnier方法方法 面向对象方法面向对象方法下一页上一页停止放映第第3333|94|94页页使用的开发工具使用的开发工具 数据流图数据流图、层次图层次图、HIPOHIPO图图、结构图、结构图 程序流程图程序流程图、N-SN-S图图、问题分析图问题分析图PAD PAD(Program Analysis Diagram)(Program Analysis Diagram)类语言、过程设计语言类语言、过程设计语言PDLPDL(Procedural Procedural Design LanguageDesign Language)等)等 统
展开阅读全文