资源预览内容
第1页 / 共85页
第2页 / 共85页
第3页 / 共85页
第4页 / 共85页
第5页 / 共85页
第6页 / 共85页
第7页 / 共85页
第8页 / 共85页
第9页 / 共85页
第10页 / 共85页
亲,该文档总共85页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
下一页计算机软件基础 The software basic of computer主讲:赵英良第15单元 软件工程概论1下一页上一页停止放映教学内容l本讲介绍四个问题:l一、软件工程的基本概念l二、软件生存周期l三、软件工程管理l四、知识产权保护2下一页上一页停止放映软件基础大作业须提交的文档l技术说明书: (书面) 任务书、任务分配、开发计划、需求分析、设计说明、测 试说明、维护说明l使用说明书: (书面) 安装说明、使用说明l个人小结(每个人要写一份,书面): 个人承担的任务、完成过程的介绍、遇到的困难和解决办 法、待解决的问题、收获、体会。 以上可装订在一起l运行程序 (电子)l源程序 (电子) 所有内容,以组为单位压缩为“组长学号.zip”提交3下一页上一页停止放映本单元涉及内容l概述 软件的基本概念 软件的发展和软件危机l第9章 软件工程 9.1 软件工程 9.2 软件生存周期 9.3 软件工程管理4下一页上一页停止放映一、软件工程的基本概念l介绍以下几个问题:l1.什么是软件工程l2.软件工程的目标l3.软件工程的指导思 想l4.软件工程基本原理l5.软件工程应用范围l6.传统软件工程模式l7.现代软件工程模式5下一页上一页停止放映一、软件工程的基本概念l“软件工程”一词是1968年北大西洋公约 组织的计算机科学家在当时联邦德国召开 的专门讨论解决“软件危机”的国际会议 上正式提出并使用的,并由此诞生了一门 新兴学科软件工程学。l“软件工程学”是一门交叉学科,它涉及 计算机科学、管理科学、工程学和数学。l计算机科学培养的是计算机科学家,而软 件工程则是培养软件工程师。6下一页上一页停止放映1.什么是软件工程软件工程IEEE定义:软件工程是以 系统的、规范的、定量的方法应 用于软件的开发、运营和维护, 以及这些方法的研究。软件工程学:研究软件开发、生产 内在规律的学科。7下一页上一页停止放映2.软件工程的目标l软件工程的基本目标是: l开发尽可能多的软件产品; l提高软件的生产效率; l满足应用的功能需要; l降低软件开发成本。8下一页上一页停止放映3.软件工程的指导思想l为解决软件危机,把“软件”这种特殊商品的生 产、管理过程纳入传统工程管理的轨道; 用计算机科学中的最新成果应用于软件工程中 用管理学的原理和方法进行软件生产管理 用工程学的观点进行核算,制定工程进度和实 施方案 用数学方法建立软件的可靠模型和各种有效算 法采用科学的方法进行软件的开发和管理9下一页上一页停止放映4.软件工程基本原理l自1968年提出“软件工程”的概念以来 ,专家学者又陆续突出了100多条关于软 件工程的准则。l著名软件工程专家B.W.Boehm于1983年发 表的一篇论文中提出了软件工程的七条 基本原理。他认为这七条原理是确保软 件产品质量和开发效率的最小准则集合 。10下一页上一页停止放映软件工程七条基本原理(1)用分阶段的生命周期计划严格管 理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组人员少而精 (7)承认不断改进软件工程实践的必 要性 计划、评审、控制、新、形、精、学11下一页上一页停止放映(1)用分阶段生命周期计划 严格管 理l在软件的整个生命周期中应该制定并严 格执行六类计划:项目概要、项目进度 表、项目控制、产品控制、验证及运行 维护计划。l不同层次的管理人员必须严格按照计划 各尽其职地去管理软件开发与维护工作 ,绝不能受客户或上级的影响而擅自背 离预定计划。12下一页上一页停止放映(2)坚持进行阶段评审l软件的质量保证工作不能等到编码阶段 结束之后再进行。这是因为: 大部分错误是在编码之前造成的( 根据Boehm统计,设计错误占软件错 误的63%,编码错误占37%)。 错误发现与改正得越晚,所付出的 代价也越高。因此,在每个阶段进行严格的评审,尽 早发现并修正各个阶段中所犯的错误是 一条必须遵循的重要原则。13下一页上一页停止放映示意图关于阶段评审作用评审时间越晚,代价越高14下一页上一页停止放映(3)实行严格的产品控制l在软件开发过程中不应随意改变需求(改 变一项需求往往要付出很高的代价),但 不能禁止更改需求。当必须修改时,为了 保持软件各配置成分的一致性,必须实行 严格的产品控制(主要是实行基准配置管 理)。l一切有关修改软件的建议(特别是涉及到 对基准配置的修改建议)都必须按照严格 的规程进行评审,获准后才能实施修改) 。l绝对不能谁想修改就随意进行修改的行为 。15下一页上一页停止放映(4)采用现代程序设计技术l以前的结构化程序设计技术,如今的 面向对象程序设计技术都被实践证明 是各个不同历史阶段的优秀程序设计 技术和方法。l采用先进的技术既可以提高软件开发 的效率,又可以提高软件维护的效率 。公公欲善其事,必先利其器16下一页上一页停止放映(5)结果应能清楚地审查l软件产品是看不见、摸不着的逻辑产 品,软件开发人员的工作进展情况可 见性差。为了提高开发过程的可见性 ,应根据软件开发项目中的目标完成 期限,规定开发组织的责任和产品标 准,使得到的结果能够清楚的审查。17下一页上一页停止放映(6)开发小组人员少而精l开发小组成员的素质应该高,人员不 宜过多。人员素质和数量是影响产品 质量和开发效率的重要因素。l素质高的人开发效率比低的人高几倍 甚至几十倍,而错误则明显得少;l人数增加,管理难度也增加。18下一页上一页停止放映(7)承认不断改进软件工程实践的必要 性l要积极主动地采纳新的软件技术 ,要不断总结经验;不能自以为 是,固步自封,唯我独好。l大千世界,错综复杂,只有不断 学习,才能不断进取,不断进步 。19下一页上一页停止放映5.软件工程应用范围l个人程序、中小型或一般程序同 开发人员之间的关联较小,应用 SE方法收效甚微。l大型程序要由若干个程序员小组 承担开发,相互关系极其复杂, 因此,必须自始至终坚持SE方法 。20下一页上一页停止放映应用程序分类分类 程序规模 模块数 开发时间 开发人数极小 500行以下 1020 14周 1人小 1K2K行 2550 16月 1人中 5K50K行 2501000 12年 25人 大 50K100K行 1000以上 23年 520人 甚大 1M行 45年 1001000人 极大 1M10M行 510年 2000500021下一页上一页停止放映6.传统软件工程模式 l70年代,计算机技术水平不高,开发工具 少而且性能差。对于大型复杂问题的求解 方法有很大的局限性影响。l软件工程采用的方法:把软件生存周期划 分成若干个阶段,每个阶段的任务相对独 立,而且比较简单,便于不同人员分工协 作,从而降低整个软件开发工程的困难程 度。l在实现每个阶段的任务时,采用的是系统 化的技术方法结构化分析和结构化设 计技术。l传统软件工程模式的缺点:强调了分阶段 实施模块化、结构化程序设计技术和方法 ,而忽视了人在软件开发过程中的地位和 作用。22下一页上一页停止放映7.现代软件工程模式l现代软件工程是在传统软件工程模式的基础上,为了 强调人在系统开发中的作用,同时为了适应软件新技 术的发展趋势而提出的。其基本要点是:l以人为主,充分利用软件开发方法及软件开发工具;l开发人员的组织管理对软件开发成功与否至关重要;l基于软件组件的软件开发技术。各种功能的可重用软 件组件不断问世。这使得在软件开发过程中编程工作 量日趋减少,取而代之的是在设计好系统体系结构后 ,利用软件组件构造或重构软件系统。l由于软件组件是标准化设计、成品化生产的,极易构 造使用,从而大大简化了设计、编程、测试各个环节 的工作量,提高了工作效率和生产效率。l由于在软件开发过程中最大限度地采用软件组件,使 得软件开发过程变为系统分析、系统构造、系统测试 的集成过程。 23下一页上一页停止放映现代软件工程模式 阶段的划分及主要任务l系统分析l系统设计l系统测试l软件组件l系统开发人员的组织管理24下一页上一页停止放映系统分析l系统分析从系统需求入手,从用户观点出发建立系 统用户模型。用户模型从概念上全方位表达系统需 求及系统与用户的相互关系。系统分析在用户模型 的基础上,建立适应性强的独立于系统实现环境的 逻辑结构。l分析阶段独立于系统实现环境,可以保证建立起来 的系统结构具有相对的稳定性,便于系统维护、移 植或扩充。l在系统分析阶段,系统的逻辑结构应从以下三方面 全面反映系统的功能与性能:(1)信息。完整描述系统中所处理的全部信息;(2)行为。完全描述系统状态变化所需处理或功能 ;(3)表示。详细描述系统的对外接口与界面。 25下一页上一页停止放映系统设计l在系统设计阶段,首先考虑具体的实现环境。在设 计时,可能会对系统结构作一些调整,但为了保持 系统结构的稳定性,应尽可能避免由于实现环境的 特定要求而改变系统结构。l设计、构造系统的软件组件。设计软件组件的主要 内容是定义组件的结构、功能和外部接口,以及组 件之间的相互关系和通信方式。对于复杂的大系统 ,还可以根据组件之间关联的紧密程度,将关联密 切的多个组件形成一个子系统,子系统之间具有松 散的耦合。l在系统实现阶段,对于需要开发的软件组件,选择 采用某种合适的程序设计语言编写相应的源代码程 序,完成系统实现工作。26下一页上一页停止放映系统测试l系统测试包括单元测试、集成 测试和系统测试。就功能而言 与传统软件工程模式中系统测 试的功能相同。27下一页上一页停止放映软件组件l在现代软件工程的开发过程中,软件组件只是 一个辅助或支撑系统构造的一个过程。l软件组件开发主要是开发与维护系统构造过程 中用到的组件。将软件组件作为一个单独的过 程,目的是将组件作为构造软件的“零部件”。l随着软件技术的不断发展及软件工程的不断完 善,软件组件将会作为一种独立的软件产品出 现在市场上,供应用开发人员在构造应用系统 时选用。28下一页上一页停止放映系统开发人员的组织管理l现代软件工程不仅包括软件开发方法、工具和 过程,更强调人在开发过程中的作用。一个复 杂的系统开发过程,涉及到众多的以人为主的 各种开发活动,通过这些活动的有机配合与协 调才能保证系统开发的成功。因此,系统开发 人员的组织管理是现代软件工程中的重要方面 。l组织管理方法有以下几个要点: 明确系统开发人员与用户之间的责任与义务 ; 明确各类开发人员的主要工作及责任; 制定或选择工程开发规范。29下一页上一页停止放映二、软件生命周期l1.软件生命周期各个阶段任务l2.软件生存周期模型瀑布模型l3.软件生存周期模型原型模型(样品模型)l4.软件生存周期模型螺旋模型l5.其他模型30下一页上一页停止放映二、软件生命周期l软件生存周期指从软件的需求分 析、设计、编程、测试、交付用 户使用到版本升级或被自然淘汰 的过程。l软件工程的应用模式也称为软件 生存周期模式。通常也称其为“ 瀑布模型”(B.W.Bohem提出的 该模型)。31下一页上一页停止放映软件生命周期各个阶段任 务l一般分为五个阶段:l(1)需求分析、定义l(2)系统总体设计l(3)系统编程l(4)系统测试l(5)系统维护l阶段32下一页上一页停止放映需求分析、定义
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号