第1章软件开发方法(二)软件工程

上传人:ldj****22 文档编号:48834440 上传时间:2018-07-21 格式:PPT 页数:105 大小:738.50KB
返回 下载 相关 举报
第1章软件开发方法(二)软件工程_第1页
第1页 / 共105页
第1章软件开发方法(二)软件工程_第2页
第2页 / 共105页
第1章软件开发方法(二)软件工程_第3页
第3页 / 共105页
第1章软件开发方法(二)软件工程_第4页
第4页 / 共105页
第1章软件开发方法(二)软件工程_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《第1章软件开发方法(二)软件工程》由会员分享,可在线阅读,更多相关《第1章软件开发方法(二)软件工程(105页珍藏版)》请在金锄头文库上搜索。

1、第1章 软件开发方法 (二)软件工程计算机教学实验中心1下一页上一页停止放映问题的提出什么是软件工程?为什么提出软件工程?主要研究哪些问题?软件工程的目标、原理软件开发活动2下一页上一页停止放映1了解软件工程的基本概念、基本 原则 2理解软件工程的主要定义 3理解软件过程及模型 4了解软件工程方法学3下一页上一页停止放映一、软件工程概述什么是软件工程?为什么要学习软件工程?软件工程包括哪些内容?4下一页上一页停止放映“软件工程是一种描述规范。 ”Michael Jackson软件工程?下一页上一页停止放映软件工程的定义软件工程专家Boehm定义IEEE给出的定义教科书给出的定义6下一页上一页停

2、止放映软件工程专家Boehm定义著名软件工程专家BWBoehm为软件工程的定义是:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。7下一页上一页停止放映IEEE给出的定义1983年IEEE给出的定义为:以优质、高效、低成本为目标,研究开发、运行和维护软件以及使之退役的系统方法。其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。8下一页上一页停止放映教科书给出的定义教科书中定义为:运用系统的、规范的和可定量的方法来开发、运行和维护软件。9下一页上一页停止放映关于软件工程学软件工程是一门交叉学科,涉及到计算机

3、 科学、管理科学、工程学和数学。软件工程的理论、方法、技术都是 建立在计算机科学的基础上;它是用管理学的原理、方法进行软 件生产管理;用工程学的观点进行费用估算、制 定进度和实施方案;用数学方法建立软件可靠性模型以 及分析各种算法。10下一页上一页停止放映了解并掌握软件的开发步骤、方 法、准则。为了:克服、解决“软件危机”改进“软件生产”方法、工 具提高软件的生产率为什么学习软件工程?下一页上一页停止放映软件工程的目标开发生产尽可能多的软件产品;提高软件的生产效率;满足应用的功能需要和具有较好的软件性能 ;能按时、按质完成软件开发任务;降低软件开发成本。12下一页上一页停止放映目标的实现是矛盾

4、的在实际开发过程中,企图让以上几个目标都 达到理想的程度是非常困难的。例如,如果过于追求提高软件的性能,可能 造成开发出的软件对硬件有较大的依赖,从 而直接影响到软件的通用性和可移植性。实际上软件工程就是要解决如何在用户要求 的功能、质量、成本、进度之间取得平衡, 才能真正满足应用的实际需要。13下一页上一页停止放映软件工程具体目标保护公众安全、健康和幸福建立、健全开发软件产品的学科识别新软件或修改现行软件的需求风险避免开发失败的软件鼓励寻求开发和采购软件产品的替代方法促进软件生存期所有方面生产率的改进通过不断更新软件,发现新的用途便于开发具有“鲁棒性”的软件通过对引起故障或有影响的元素的不断

5、检测 以促进软件过程和产品的改进。14下一页上一页停止放映软件工程的本质特征l软件工程关注于大型程序的构造l软件工程的中心课题是控制复杂度l软件经常变化l开发软件的效率非常重要l和谐地合作是开发软件的关键l软件必须有效地支持它的用户l在软件工程领域中是由具有一种文化背 景的人替具有另一种文化背景的人创造 产品15下一页上一页停止放映软件工程原理自1968年提出“软件工程”的概念以来, 专家学者又陆续提出了100多条关于软件工 程的准则。著名软件工程专家B.W.Boehm于1983年发表 的一篇论文中提出了软件工程的七条基本 原理。他认为这七条原理是确保软件产品 质量和开发效率的最小准则集合。1

6、6下一页上一页停止放映软件工程七条基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组人员少而精承认不断改进软件工程实践的必要性17下一页上一页停止放映用分阶段生命周期计划严格管理据统计发现:不成功软件项目中半数是因计划 不周造成的。在软件的整个生命周期中应该制定并严格执 行六类计划:项目概要、项目进度表、项目 控制、产品控制、验证及运行维护计划。不同层次的管理人员必须严格按照计划各尽 其职地去管理软件开发与维护工作,绝不能 受客户或上级的影响而擅自背离预定计划。18下一页上一页停止放映坚持进行阶段评审软件的质量保证工作不能等到

7、编码阶段结 束之后再进行。这是因为:大部分错误是在编码之前造成的(根 据Boehm统计,设计错误占软件错误的 63%,编码错误占37%)。错误发现与改正得越晚,所付出的代 价也越高。因此,在每个阶段进行严格的评审,尽早 发现并修正各个阶段中所犯的错误是一条 必须遵循的重要原则。19下一页上一页停止放映示意图关于阶段评审作用20下一页上一页停止放映实行严格的产品控制在软件开发过程中不应随意改变需求,但不能 禁止更改需求。当必须修改时,为了保持软件 各配置成分的一致性,必须实行严格的产品控 制。一切有关修改软件的建议都必须按照严格的规 程进行评审,获准后才能实施修改。绝对不能谁想修改就随意进行修改

8、的行为。21下一页上一页停止放映采用现代程序设计技术以前的结构化程序设计技术,如今的面 向对象程序设计技术都被实践证明是各 个不同历史阶段的优秀程序设计技术和 方法。采用先进的技术既可以提高软件开发的 效率,又可以提高软件维护的效率。22下一页上一页停止放映结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品, 软件开发人员的工作进展情况可见性差。为了提高开发过程的可见性,应根据软件 开发项目中的目标完成期限,规定开发组 织的责任和产品标准,使得到的结果能够 清楚的审查。23下一页上一页停止放映开发小组人员少而精开发小组成员的素质应该高,人员不宜 过多。人员素质和数量是影响产品质量 和开发效率

9、的重要因素。素质高的人开发效率比低的人高几倍甚 至几十倍,而错误则明显得少;人数增加,管理难度也增加。24下一页上一页停止放映承认不断改进软件工程实践的必要性要积极主动地采纳新的软件技术,要不 断总结经验;不能自以为是,固步自封 ,唯我独好。大千世界,错综复杂,只有不断学习, 才能不断进取,不断进步。25下一页上一页停止放映软件开发活动软件工程过程是由一系列软件工程的阶段任 务和活动组成。1995年ISO将软件生存周期的活动和任务划分 为3个过程:主要过程(需求、设计、构造、测试和维护)支持过程(软件配置、软件工程管理、软件过程和 软件质量)组织过程(基础设施建设、工具和方法、改进、培 训)2

10、6下一页上一页停止放映主要过程主要过程包括的软件开发活 动和任务是:软件需求软件设计软件构造软件测试软件维护27下一页上一页停止放映1、软件需求任务:收集、分析、理解、确定用户的要求; 然后把用户的要求精确、完整地描述表达出来 。目的:要回答“要解决什么问题?”,既系统”做什么?“。分两步骤:可行性研究、制定软件开发计划结果:可行性报告、软件计划、需求说明书需求说明书是让用户理解:“什么是他们真正需要的”。 28下一页上一页停止放映了解用户需求有关的问题什么是需求?希望,功能,限制,必需品,任何必要的东西;什么时候? 从确定方案开始;为什么? 用户的需求是开发需要的依据;来自哪里? 来自用户,

11、工业标准,和实践经验;如何实现?使所有相关的人参与需求分析活动,通过有效的交流实现;谁来做? 用户,工程管理人员,开发人员,维护人员。29下一页上一页停止放映用户参与需求分析的重要性根据Standish Group 1994年发表的一份研 究报告统计,延迟的、超出预算的、未完 成的工程的最普遍的原因是: 缺少用户参与; 不完备的需求规范; 改变需求规范。30下一页上一页停止放映需求分析的难点 问题的复杂性。涉及因素多而;如运行环境和系统功能等。 交流障碍。涉及不同类型人员较多,知识背景、角度、角色的不同; 不完备性和不一致性。用户对问题的陈述有矛盾、片面性等造成。 需求易变性。需求是变化的。3

12、1下一页上一页停止放映需求工作的重要性IBM公司有关研究的结果表明:有效的需求管理可以降低开发成本。通常改正需求错误需要付出改正其他错误 10倍以上的代价。需求错误通常导致软件工程中全部错误的 25-40%。改正很少的需求错误可以避免大量耗费在 返工上的成本和时间。32下一页上一页停止放映需求活动 识别问题通过调研和收集资料,了解用户的确切需求,并将用 户提出的功能行为和特殊要求等用双方都能理解的表达 方式逐条列出。在整个分析期间要和用户充分协商。 可行性研究对于大型复杂问题,要对用户的要求及实现环境从技 术、经济和社会因素三个方面进行可行性研究,以确定 问题是否可解。 分析建模建立软件求解模

13、型;信息、行为和表示。 需求规格化及编写文档需求规格说明书、初步用户使用手册等。33下一页上一页停止放映2、软件设计任务:给出实现系统的实施蓝图。目的:要回答“如何解决该问题?”,既系统“怎样做?”。步骤:概要设计:解决系统的模块划分、模块的层次 结构及数据库设计。详细设计:解决每个摸块内部算法和数据结构 。结果:系统设计说明书和模块功能说明书 34下一页上一页停止放映软件设计工作软件设计要做的工作总的可以归结为:软件 系统结构(软件结构) 设计、数据设计、界 面设计和过程设计。设计办法是功能分解,包括: 采用某种设计方法,将一个复杂 的系统按功能划分成模块; 确定每个模块的功能; 确定模块之

14、间的接口,即模块之 间传递的信息; 评价模块结构的质量。35下一页上一页停止放映软件设计准则(1)软件结构准则;分层结构、便于控制;软件 结构的深度和宽度要适中;具有合理的扇出和 扇入数。 (2)模块化准则;分解复杂问题; (3)模块独立性准则;应使模块之间和与外部环 境之间接口的复杂性尽量地减小;模块应具有 低耦合、高内聚; (4)数据和过程描述清晰、可区分(表达式); (5)成果可重复。36下一页上一页停止放映软件设计方法 面向数据流的设计方法;又进一步细分为 变换流和事务流方法; 结构化设计方法; 面向数据结构的设计方法;Jackson方法 ; Warnier方法 面向对象方法37下一页

15、上一页停止放映使用的开发工具 层次图、HIPO图、结构图 程序流程图、N-S图、问题分析图PAD (Program Analysis Diagram) 类语言、过程设计语言PDL(Procedural Design Language)等 统一建模语言UML(Unified Modeling Language)38下一页上一页停止放映3、软件构造任务:根据设计说明书中每个模块的控制 流程编写出相应的源程序。目的:写出高质量的代码和相应饿文档。构造要注意使系统更易于使用和系统的可 重用性。选择合适的开发工具及系统软件、数据库 软件、中间件等。制定编程规范。 结果:源程序和文档39下一页上一页停止放

16、映编程风格编程风格主要体现在如何描述源程序文件 、数据说明、输入输出等。 (1)源程序文件;变量名的命名、源程序中 的注解以及源程序的书写格式; (2)数据说明;按不同类型数据的顺序以及 字典顺序说明、对数据结构加注释说明; (3)语句构造;语句构造一般规则; (4)输入输出语句;输入输出语句的规则。40下一页上一页停止放映语句构造规则不要为节省空间而把多个语句写在同一行 ;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;避免使用多层嵌套的循环和重复;利用括号使表达式的运算顺序清晰直观。41下一页上一页停止放映I/O语句规则保持输入格式简单;对所有输入数据都进行校验;使用数据结束标记,不要要求用户指定数据的数 目;当程序设计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号