软件工程教学课件曹哲第01章

上传人:w****i 文档编号:94562996 上传时间:2019-08-08 格式:PPT 页数:67 大小:559.50KB
返回 下载 相关 举报
软件工程教学课件曹哲第01章_第1页
第1页 / 共67页
软件工程教学课件曹哲第01章_第2页
第2页 / 共67页
软件工程教学课件曹哲第01章_第3页
第3页 / 共67页
软件工程教学课件曹哲第01章_第4页
第4页 / 共67页
软件工程教学课件曹哲第01章_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《软件工程教学课件曹哲第01章》由会员分享,可在线阅读,更多相关《软件工程教学课件曹哲第01章(67页珍藏版)》请在金锄头文库上搜索。

1、软件工程,主编 曹哲 高诚 中国水利水电出版社,ZLL,如何学习这门课程,正确地理解, 领悟和掌握软件工程方法学 发挥主观能动性,多问“为什么”,问题 解 培养和他人相互合作进行软件开发,独立解决问题的能力 培养通过多种手段获取新知识的能力 培养逻辑思维能力, 尤其是抽象能力 理论和实践的结合 课题实习 内容 小组形式 运用面向对象的软件开发方法, 自学OO概念,思想和语言 软件开发过程 验收内容和标准(需求说明书,设计说明书,系统原型),ZLL,第一章 概述,1.1 软件 1.2 软件工程的概念 1.3 软件生存周期 1.4 软件开发模型 1.5 软件开发方法、工具及环境,ZLL,1.1 软

2、件,在运行中能提供所希望的功能和性能的指令集(即程序) 使程序能够正确运行的数据 描述程序研制过程和方法使用的文档,程序,软 件,可执行部分,不可执行部分,文档1,文档2,文档3,1.什么是软件,ZLL,1. 软件的特点,软件是逻辑产品,硬件是物理产品。 特点: (1)软件开发更依赖于开发人员的业务素质、智力、 人员的组织、合作和管理。软件开发、设计几 乎都是从头开始,成本和进度很难估计。 (2)软件存在潜伏错误,硬件错误一般能排除。 (3)软件开发成功后,只需对原版进行复制。,ZLL,1. 软件的特点(续),(4)软件在使用过程中维护复杂: 1)纠错性维护改正运行期间发现的潜伏错误; 2)完

3、善性维护提高或完善软件的性能; 3)适应性维护修改软件,以适应软硬件环境的变化; 4)预防性维护改进软件未来的可维护性和可靠性; 5)软件不会磨损和老化。,ZLL,2.软件的发展,50中期60中期 60中期70中期 70中期80中期 80中期现在,ZLL,效率和质量,1.1.2 软件危机,软件危机的具体表现: 开发成本和进度估计不准 用户对“已完成的”软件系统不满意 软件质量往往靠不住 软件常常是不可维护的 软件通常没有适当的文档资料 软件成本逐年上升 软件开发生产率滞后于硬件和计算机应用普及,ZLL,硬 件,软件开发,软件维护,1955年 1970年 1985年,100%,80%,60%,4

4、0%,20%,软件、硬件成本变化趋势,ZLL,产生软件危机的原因,1)用户对软件需求的描述不精确。 2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致。 3)缺乏处理大型软件项目的经验。 4)开发大型软件易产生疏漏和错误。 5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多地依靠程序员的 “技巧”,从而加剧了软件产品的个性化。 6)面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供求矛盾将是一个永恒的主题。,ZLL,缓解危机的方法?,1.2 软件工程的概念,过程 管理部分,方法 “如何做” 技术手段,工具 自动或半自动地支持软件的支撑环境(开发

5、和管理),过程,方法,工具,软件工程,要素之间相互关联和支持,ZLL,软件工程的目标: 在给定成本、进度的前提下,开发满足用户需求的并具有以下特性的软件产品。,可修改性 有效性 可靠性 可理解性 可维护性,可重用性 可适应性 可移植性 可追踪性 可互操作性,ZLL,软件工程的目标,1)可修改性(modifiability),允许对软件系统进行 修改而不增加其复杂性。它支持软件调试与维护。 2)有效性(efficiency),指软件系统的时间和空间 效率。这是一个应当努力追求的重要目标。 3)可靠性(reliability),是指在给定的时间间隔内, 程序成功运行的概率。可靠性是衡量软件质量的一

6、 个重要目标。,ZLL,4)可理解性(understandability),指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 5)可维护性(maintainability),是指软件产品交付使用后,在实现改正潜伏的错误、改进性能等属性、适应环境变化等方面工作的难易程度。由于软件的维护费用在整个软件生存周期中占主要的比重,因此,可维护性是软件工程中的一个十分重要的目标。软件的可理解性和可修改性支持软件的可维护性。,软件工程的目标,ZLL,6)可重用性(reusability),是指软部件可以在多种场合使用的程度。 概念或功能相对独立的

7、一个或一组相关模块可构成一个软部件。软部件应具有清晰的结构和注释、正确的编码和较高的时空效率。可将各种软部件按照某种规则放在软部件库中供开发人员选用。 广义地讲,可重用性还应包括应用项目、规格说明、设计、概念和方法等等的重用。一般来说,重用的层次越高,带来的效益越大。 可重用性有助于提高软件产品的质量和开发效率、降低软件开发和维护费用。,软件工程的目标,ZLL,7)可适应性(adaptability),是指软件在不同的系统约束条件下,使用户需求得到满足的难易程度。 选择广为流行的软硬件支持环境、采用广为流行的程序设计语言编码、采用标准的术语和格式书写文档可增强软件产品的可适应性。 8)可移植性

8、(portability),是指软件从一个计算机系统或环境移植到另一个上去的难易程度。 采用通用的运行支持环境和尽量通用的程序设计语言的标准部分可提高可移植性。而应将依赖于计算机系统的低级(物理)特征部分相对独立、集中起来。可移植性支持软件的可重用性和可适应性。,软件工程的目标,ZLL,9)可追踪性(traceability),是指根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件开发各阶段的文档和程序的完整性、一致性、可理解性支持软件的可追踪性。 10)可互操作性(interoperability),是指多个软件元素相互通信并协同完成任务的能力。

9、,软件工程的目标,ZLL,软件工程的原则:,抽象 信息隐藏 模块化 局部化 一致性 完全性 可验证性,ZLL,软件工程的原则,1抽象(abstraction),抽取各个事物中共同的最基本的特征和行为,暂时忽略它们之间的差异。一般采用分层次抽象的方法来控制软件开发过程的复杂性。抽象使软件的可理解性增强并有利于开发过程的管理。 2信息隐藏(information hiding),将模块内部的信息(数据和过程)封装起来。其他模块只能通过简单的模块接口来调用该模块,而不能直接访问该模块内部的数据或过程,即将模块设计成“黑箱”。信息隐藏的原则可使开发人员把注意力集中于更高层次的抽象上。,ZLL,软件工程

10、的原则,3.模块化(modularity),把一个程序划分成若干个模块,每个模块完成一个子功能,将这些模块组装成一个整体,即可完成该程序指定的功能。其中每个模块是程序中相对独立的成分,是独立的编程单位。 4局部化(localization),即在一个物理模块内集中逻辑上相互关联的计算资源。局部化支持信息隐藏,从而保证模块之间具有松散的耦合、模块内部有较强的内聚。这有助于控制每一个解的复杂性。,ZLL,软件工程的原则,5一致性(consistency),整个软件系统(包括程序、数据和文档)的各个模块应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与环境的接口应保持一致;系统规格说明应与

11、系统行为保持一致;用于形式化规格说明的公理系统应保持一致。 6完全性(completeness),软件系统不丢失任何重要成分,完全实现所需的系统功能的程度。为了保证系统的完全性,在软件的开发和维护过程中需要严格的技术评审。 7可验证性(verifiability),开发大型软件系统需要对系统逐层分解。系统分解应遵循易于检查、测试、评审的原则,以使系统可验证。 抽象、信息隐藏、模块化和局部化的原则支持可理解性、可修改性、可靠性等目标,并可提高软件产品的质量和开发效率; 一致性、完全性和可验证性等原则可以帮助软件开发人员去实现一个正确的系统。,ZLL,软件工程的基本原理,著名的软件工程专家B. W

12、. Boehm于1983年综合了软件工程专家学者们的意见并总结了开发软件的经验,提出了软件工程的7条基本原理。这7条原理被认为是确保软件产品质量和开发效率的原理的最小集合,又是相互独立、缺一不可、相当完备的最小集合。下面就简单介绍软件工程的这7条原理:,ZLL,1)用分阶段的生存周期计划严格管理,这条基本原理是应该把软件生存周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件开发与维护工作进行管理。应该制定的计划有项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划和运行维护计划等。各级管理人员都必须严格按照计划对软件开发和维护工作进行管理。据统计,不成功的软件

13、项目中,有一半左右是由于计划不周造成的。,ZLL,2)坚持进行阶段评审,据统计,在软件生存周期各阶段中,编码阶段之前的错误约占63%,而编码错误仅占37%。另外,错误发现并改正得越晚,所花费的代价越高。坚持在每个阶段结束前进行严格的评审,就可以尽早发现错误,从而可以最小的代价改正错误。因此,这是一条必须坚持的重要原理。,ZLL,3)实行严格的产品控制,决不能随意改变需求,只能依靠科学的产品控制技术来顺应用户提出的改变需求的要求。为了保持软件各个配置成分的一致性,必须实行严格的产品控制。其中主要是实行基准配置管理(又称为变动控制),即凡是修改软件的建议,尤其是涉及基本配置的修改建议,都必须按规程

14、进行严格的评审,评审通过后才能实施。 这里的“基准配置”是指经过阶段评审后的软件配置成分,即各阶段产生的文档或程序代码等。,ZLL,4)采用现代程序设计技术,实践表明,采用先进的程序设计技术既可以提高软件开发与维护的效率,又可以提高软件的质量。多年来,人们一直致力于研究新的“程序设计技术”。比如,20世纪60年代末提出的结构程序设计技术;后来又发展出各种结构分析(SA)和结构设计(SD)技术;之后又出现了面向对象分析(OOA)和面向对象设计(OOD)技术等等。,ZLL,5)结果应能清楚地审查,软件产品是一种看不见、摸不着的逻辑产品。因此,软件开发小组的工作进展情况可见性差,难于评价和管理。为了

15、更好地进行评价与管理,应根据软件开发的总目标和完成期限,尽量明确地规定软件开发小组的责任和产品标准,从而使所得到的结果能清楚地审查。,ZLL,6)开发小组的人员应少而精,软件开发小组人员素质和数量是影响软件质量和开发效率的重要因素。实践表明,素质高的人员与素质低的人员相比,开发效率可能高几倍至几十倍、而且所开发的软件中的错误也要少得多。另外,开发小组的人数不宜过多,因为随着人数的增加,人员之间交流情况、讨论问题的通信开销将急剧增加,这不但不能提高生产率,反而由于误解等原因可能增加出错的概率。,ZLL,7)承认不断改进软件工程实践的必要性,遵循上述六条基本原理,就能够较好地实现软件的工程化生产。

16、但是,软件工程不能停留在已有的技术水平上,应积极主动地采纳或创造新的软件技术,要注意不断总结经验,收集工作量、进度、成本等数据,并进行出错类型和问题报告的统计。这些数据既可用来评估新的软件技术的效果,又可用来指明应优先进行研究的软件工具和技术。,ZLL,1.3 软件生存周期,ZLL,软件生存周期各阶段划分,可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,软件使用与维护,ZLL,1 . 软件定义,软件定义的基本任务是确定软件系统的工程需求,也就是要搞清“做什么”。 软件定义过程可通过软件系统的可行性研究和需求分析两个阶段来完成。,ZLL,1)可行性研究,确定用户要求解决的项目的性质、目标和规模。 可行性研究 经济可行性、技术可行性、操作可行性、法律可行性、不

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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