软件工程一讲ppt课件.ppt

上传人:本田雅阁 文档编号:3301908 上传时间:2019-08-09 格式:PPT 页数:58 大小:1.02MB
返回 下载 相关 举报
软件工程一讲ppt课件.ppt_第1页
第1页 / 共58页
软件工程一讲ppt课件.ppt_第2页
第2页 / 共58页
软件工程一讲ppt课件.ppt_第3页
第3页 / 共58页
软件工程一讲ppt课件.ppt_第4页
第4页 / 共58页
软件工程一讲ppt课件.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《软件工程一讲ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程一讲ppt课件.ppt(58页珍藏版)》请在三一文库上搜索。

1、软件工程 Software Engineering 主讲:李铁柱 教材 软件工程与UML案例解析 何晓蓉 铁道出版社 软件工程方法与实践 许家珆 电子工业出版社 Software Engineering, 6th Edition Ian Sommerville(英) 机械工业出版社( 影印版) 参考书目 软件工程导论(第五版),张海藩,清华大学出版社 软件工程实践导论-有关方法、设计、实现、管理之三 十六计,金尊和,清华大学出版社,2005. 软件开发的科学与艺术,微软亚洲研究院,电子工业 出版社,2002 年 软件工程实践者的研究方法,R S. Pressman, 机械 工业出版社 现代软件

2、工程, 周之英编著, 科学出版社 软件工程思想,林锐。 人月神话,FREDERICK P. BROOKS, JR. 清华大学 出版社。 学习要求 听 l理解知识点和思想 l无需死记硬背 做 l实践 l体会软件工程的原则、方法和技术,在实践中提高 l培养抽象思维能力 l培养独立解决问题的能力 l培养合作精神 想 l阅读相关资料 学习方式 完成必要的作业 完成每次的实验题目 完成一次综合性的项目分析开发 软件工程师的基本功底 扎实的基础 丰富的想象力 最简单的是最好 交流能力 良好的编程风格 韧性和毅力 项目有关常识 流程重于项目 QC(就是QA)独立于研发部门,专门检查 研发部 门的开发流程是不

3、是按照既定流程走.如果QC 觉得流程不对,他会直接上报高层, 项目肯定 就此停止. 所谓的项目经理(PC)一般也是从编码人员升 上来的,并不是所谓的不懂技术,一般都至少有 四年以上的经验 所有的东西(包括草稿)都必须有文档 详细 文档要求达到只有这个文档就可以 编码 的程度,一般写文档时间 占60%,编 码时间 极少 有各种详细 的review(同行评审 ),项目组 内的,项目组之间的,客户的. 计划很详细 ,的确能达到小时级 ,但是实 际情况还是误差比较大,所以加班是家常 便饭的事情。 项目有关常识 学习目的 l有助于正确理解和认识“软件”的概念及其特点 l理解软件开发面临的问题和挑战 l掌

4、握软件工程的原则、方法和思想来系统地开发软 件,尤其是复杂、庞大的软件的开发 l了解和接触软件开发所需的各种技术手段 软件工程是典型的计算机科学和数 学,管理科学,心理学,社会学等学科 的综合。 软件的发展 程序设计阶段(20世纪40年代初60年 代中期) 程序系统阶段(60年代中期到70年代末 期) 软件工程阶段(20世纪70年代中) 第四阶段 个体化的软件环境 软件规模小,编写者和使用者往往是同一个人 ,除程序清单外,无其它文档资料。 “软件作坊” 比较广泛使用产品软件,仍沿用个体化开发方法 。软件维护工作很难进行,甚至不可维护(不能修改 运行时发现的错误,不能适应新的硬件环境)由于软 件

5、的“不可维护”,而导致了“软件危机”。 微处理器出现 个人计算机产品、分布式系统对软件开发提出 更高要求,软件在工业、学术界应用广泛,个人应 用少。更强大的硬件和软件 复杂操作系统控制的强大的桌面系统,局域网 和广域网,先进的应用软件配合,成为主流。集中 主机环境转变为分布的C/S,B/S环境。面向对象技 术取代传统技术。 例: Windows95有1000万行代码 Windows Vista有超过5000万行代码 Exchange2000和 Windows2000开发人员结构 Exchange2000Windows2000 项目经理25人约250人 开发人员140人约1700人 测试人员35

6、0人约3200人 四个阶段典型技术 第一阶段 :面向批处理 有限的分布 自 定义软件 第二阶段:多用户 实时 数据库 软件产 品 第三阶段:分布式系统 嵌入“智能” 第四阶段:OO 专家系统 AI PC NC 软件工程概论 什么是软件什么是软件 软件的分类软件的分类 软件的特点软件的特点 软件的生存期软件的生存期 软件开发面临的问题软件开发面临的问题 软件危机软件危机 软件工程软件工程 软件工程的目的和要求软件工程的目的和要求 软件软件是计算机系统中与硬件相互依存的另是计算机系统中与硬件相互依存的另 一部分,它是包括一部分,它是包括程序,数据及其相关文程序,数据及其相关文 档的完整集合档的完整

7、集合 软件程序数据文档资料软件程序数据文档资料 程序程序是按事先设计的功能和性能要求执行是按事先设计的功能和性能要求执行 的指令序列的指令序列 数据数据是使程序能正常操纵信息的数据结构是使程序能正常操纵信息的数据结构 文档文档是与程序开发,维护和使用有关的图是与程序开发,维护和使用有关的图 文材料文材料 软软件的分类件的分类 按软件的功能进行划分:按软件的功能进行划分: 系统软件系统软件 支撑软件支撑软件 应用软件应用软件 pp系统软件系统软件 l l 使计算机系统各个部件、相关软件和数据协调使计算机系统各个部件、相关软件和数据协调 、高效地工作的软件、高效地工作的软件 uu操作系统操作系统

8、uu数据库管理系统数据库管理系统 uu设备驱动程序设备驱动程序 uu通信处理程序等通信处理程序等 pp支撑软件支撑软件 协助用户开发软件的工具软件协助用户开发软件的工具软件 文本编辑程序文本编辑程序 文件格式化程序文件格式化程序 磁盘向磁带进行数据传输的程序磁盘向磁带进行数据传输的程序 程序库系统程序库系统 支持需求分析、设计、实现、测支持需求分析、设计、实现、测 试和支持管理的软件试和支持管理的软件 pp应用软件应用软件 商业数据处理软件商业数据处理软件 工程与科学计算软件工程与科学计算软件 计算机辅助设计制造软件计算机辅助设计制造软件 系统仿真软件系统仿真软件 智能产品嵌入软件智能产品嵌入

9、软件 医疗、制药软件医疗、制药软件 事务管理、办公自动化软件事务管理、办公自动化软件 计算机辅助教学软件计算机辅助教学软件 按软件规模进行划分:按软件规模进行划分: 类别类别 参加人员数参加人员数 研制期限研制期限 源程序行数源程序行数 pp微型微型 1 14周 0.5k pp小型小型 1 16月 1k2k 数值计算或数据处理,通常没有与其它程序的接口 。需要按一定的标准化技术、正规的资料书写以及 定期的系统审查。只是没有大题目那样严格。 pp中型中型 2 25 5 1 12 2年年 5 5k k50k50k 软件人员之间、与用户之间的联系、协调的配合 关系。因而计划、资料书写以及技术审查需要

10、比较 严格地进行。应用程序和系统程序。系统的软件工 程方法是完全必要的。 pp大型大型 5 52020 2 23 3年年 50 50k k100k100k 编译程序、小型分时系统、实时控制系统等。二级管理 ,若干小组,每组5人以下。人员调整往往不可避免, 新手的培训。采用统一的标准,实行严格的审查是绝对 必要的。 pp甚大型甚大型 100 1001000 41000 45 5年年 1 1M(=1000k) M(=1000k) 若干个子项目,每一个子项目都是一个大型软件。子 项目之间具有复杂的接口。如远程通信系统、多任务系 统、大型操作系统、大型数据库管理系统、军事指挥系 统通常现有这样的规模。

11、很显然,这类问题没有软件工 程方法的支持,它的开发工作是不可想象的。 pp极大型极大型 2000 20005000 55000 51010年年 1 1MM10M10M 军事指挥、弹道导弹防御系统。 按软件工作方式划分:按软件工作方式划分: uu 实时处理软件实时处理软件 uu 分时软件分时软件 uu 交互式软件交互式软件 uu 批处理软件批处理软件 按软件失效的影响进行划分:按软件失效的影响进行划分: 高可靠性软件高可靠性软件 一般可靠性软件一般可靠性软件 软件的特点软件的特点 软件是一种软件是一种逻辑实体逻辑实体,而不是具体的物理,而不是具体的物理 实体。因而它具有抽象性实体。因而它具有抽象

12、性 软件的生产与硬件不同,在它的开发过程软件的生产与硬件不同,在它的开发过程 中中没有明显的制造过程没有明显的制造过程 在软件的运行和使用期间,在软件的运行和使用期间,没有硬件那样没有硬件那样 的机械磨损,老化问题的机械磨损,老化问题 软件的特点软件的特点 -软件的失效曲线软件的失效曲线 软件的特点软件的特点-软件规模与复杂度关系 以美国宇航局的软件系统为例: l1963年 水星计划系统 200万条指令 l1967年 双子星座计划系统 400万条指令 l1973年 阿波罗计划系统 1000万条指令 l1979年 哥伦比亚航天飞机系统 4000万条指令 假设1个人一年生产一万条有效指令,那么是否

13、4000 人生产一年,或400人生产10年就能完成任务吗?答 案是否定的。一万条指令的复杂度决不仅仅是100条 指令复杂度的100倍。 软件的特点软件的特点-软件成本构成 12% 需求 率 4% 生产率 开发人员 成本构成不同: 主要投资在研制;软件研制是一种人力、资金密集 的产业,而软件生产只是简单的复制、安装和培训。 软件的特点软件的特点-改正一个问题需付出的代价 需 求 分 析 结 构 设 计 详 细 设 计 编 码 集 成 测 试 系 统 测 试 现 场 改正 一个 问题 的估 计费 用 改正 一个 问题 估计 的工 作量 20 200 2000 1000 5.0 2.5 0.05 0

14、.5 (美元)(人天) 软件的特点软件的特点-软件开发进度难以预测 拖延工期几个月甚至几年的现象并不罕见,这种 现象降低了软件开发组织的信誉。 以丹佛新国际机场为例。该机场规模是曼哈顿机 场的两倍,宽为希思机场的10倍,可以全天侯同 时起降三架喷气式客机;投资1.93亿美元建立了 一个地下行李传送系统,总长21英里,有4,000 台遥控车,可按不同线路在20家不同的航空公司 柜台、登机门和行李领取处之间发送和传递行李 ;支持该系统的是5,000个电子眼、400台无线电 接受机、56台条形码扫描仪和100台计算机。按原 定计划要在1993年万圣节前启用,但一直到1994 年6月,机场的计划者还无

15、法预测行李系统何时能 达到可使机场开放的稳定程度。 软软件的生存期件的生存期 life cycle 软件有一个软件有一个孕育、诞生、成长、成熟孕育、诞生、成长、成熟 、衰亡、衰亡的生存过程。这个过程即为计的生存过程。这个过程即为计 算机软件的生存期算机软件的生存期 软件生存期的六个步骤,即制定计划软件生存期的六个步骤,即制定计划 、需求分析、设计、程序编码、测试、需求分析、设计、程序编码、测试 及运行维护及运行维护 制定计划制定计划 确定要开发软件系统的总目标确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面给出功能、性能、可靠性以及接口等方面 的要求的要求 完成该软件任务的可行

16、性研究完成该软件任务的可行性研究 估计可利用的资源估计可利用的资源( (计算机硬件,软件,人计算机硬件,软件,人 力等力等) )、成本、效益、开发进度、成本、效益、开发进度 制定出完成开发任务的实施计划制定出完成开发任务的实施计划, ,连同连同可行可行 性研究报告性研究报告,提交管理部门审查,提交管理部门审查 需求分析和定义需求分析和定义 对待开发软件提出的需求进行分析对待开发软件提出的需求进行分析 并给出详细的定义并给出详细的定义 编写软件编写软件需求说明书或系统功能说需求说明书或系统功能说 明书及初步的系统用户手册明书及初步的系统用户手册 提交管理机构评审提交管理机构评审 软件设计软件设计

17、 概要设计概要设计 把各项需求转换成软件的体系把各项需求转换成软件的体系 结构。结构中每一组成部分都是意义明确的结构。结构中每一组成部分都是意义明确的 模块,每个模块都和某些需求相对应模块,每个模块都和某些需求相对应 详细设计详细设计 对每个模块要完成的工作进行对每个模块要完成的工作进行 具体的描述,为源程序编写打下基础具体的描述,为源程序编写打下基础 编写编写设计说明书设计说明书,提交评审,提交评审。 程序编写程序编写 把软件设计转换成计算机可以接受的程序把软件设计转换成计算机可以接受的程序 代码,即写成以某一种特定程序设计语言代码,即写成以某一种特定程序设计语言 表示的表示的“ “源程序清

18、单源程序清单” ” 写出的程序应当是结构良好、清晰易读的写出的程序应当是结构良好、清晰易读的 ,且与设计相一致的,且与设计相一致的 软件测试软件测试 单元测试单元测试,查找各模块在功能和结构上存查找各模块在功能和结构上存 在的问题并加以纠正在的问题并加以纠正 组装测试组装测试,将已测试过的模块按一定顺序将已测试过的模块按一定顺序 组装起来组装起来 按规定的各项需求,逐项进行有效性测试按规定的各项需求,逐项进行有效性测试 ,决定已开发的软件是否合格,能否交付,决定已开发的软件是否合格,能否交付 用户使用用户使用 运行运行维护维护 改正性维护改正性维护 运行中发现了软件中运行中发现了软件中 的错误

19、需要修正的错误需要修正 适应性维护适应性维护 为了适应变化了的软为了适应变化了的软 件工作环境,需做适当变更件工作环境,需做适当变更 完善性维护完善性维护 为了增强软件的功能为了增强软件的功能 需做变更需做变更 36 案例分析 某电力公司A,希望软件公司B 为他们制 造一种”电费结算系统”,该系统用于结算 每一户电表1个月期间应该缴纳的电费。 B 公司得到电力公司A的这个要求之后, 开始进入制作“电费结算系统”软件的生命 周期。 37 问题定义阶段 该阶段的关键任务是要明确: 要解决的问题是什么? 思考:以下几个选项中,哪个是B公司 得出的结论: A.要解决某小区用电总度数问题 B.要解决某小

20、区总收电费问题 C.要解决电力公司A管辖范围内的所有 电表每月每户电费结算问题 D.要解决全国区域内电表结算问题 38 可性行研究阶段 该阶段的关键任务是要明确: 做不做 用最小的代价在尽可能短的时间内从经 济、技术、社会因素等方面论证解决方案 的可行性 思考:B公司在可行性分析阶段应该做些什么事情, 会得出什么结论? 39 需求分析阶段 该阶段的关键任务是要明确: 做什么 1.通过与客户不断的讨论、协商,对目标系统 提出完整、准确、清晰、具体的要求. 2.用正式的文档准确地记录对目标系统的需求 ,形成软件需求规格说明书(SRS) 注意点 B公司在这个阶段应该对用户的要求进行详细的调研 与分析

21、,需要去了解电费结算中需要涉及到信息、 结算电费的标准与公式、这个电费结算系统的产出 文档是什么等内容,确定该系统需要实现的功能 ,例如:对使用电表的用户进行管理,对1个用户1 个月的电费计算,能够生成结算单。最后以文档的 形式描述出需求规格。这些是指导B公司进行下一步 工作的依据。 40 概要设计(总体设计)阶段 该阶段的关键任务是要明确: 怎么做 1.提出实现目标系统的几种方案,制定最佳方 案的详细计划 2.系统的体系结构设计 3.阶段性成果:概要设计说明书、数据库或者 数据结构说明书、组装测试计划等 根据上一 步得到的需求规格说明书,将需求功能进 行模块化分,B公司的设计人员开始了对“电

22、费结算 系统”的设计。例如,系统管理模块,电费计算模块 ,生成结算单模块等。 41 详细设计阶段 该阶段的关键任务是要明确: 具体做法 设计出程序的详细规格说明,即详细地 设计每个模块,确定实现模块功能所需要的 算法和数据结构。 阶段性成果:详细设计规格说明书和单 元测试计划等 对每一个模块,设计它的实现算法和数据结构。例 如,电费计算模块,需要根据计算公式进行电费的 计算。B公司的设计人员开始了对“电费结算系统”的 设计。 42 编码和单元测试阶段 该阶段的关键任务是 编码和单元测试 1.编写出正确的、易理解的、易维护的程序模 块; 2.仔细测试编写出的每一个模块 3.阶段成果:经过单元测试

23、后的代码,单元测 试报告等。 B公司程序员们开始对每个模块进行分工,各自负责 1个或者多个模块,然后写代码阿写代码,代码写好 了,还需要对自己所写模块的代码进行测试,保证 自己的正确性。 43 综合测试阶段 该阶段的关键任务是通过各种类型的测 试(及调试)使软件达到预定的要求 1.组装测试:根据设计的软件结构,把经 过单元测试检验的模块按某种策略装配 起来,在装配过程中对程序进行必要的 测试。 2.验收测试:按照规格说明书的规定,由 用户对目标系统进行验收,看其是否达 到需求规格说明书中定义的全部功能和 性能等方面的需求。 3.验收测试结束后,经过评审的软件产品 就可以交付投入使用了。 经过上

24、面的几个步骤,B公司的人员终于拿出了“电 费结算系统”,他们需要对该系统进行各种测试,包 括集成测试,系统测试,用户环境测试,验收测试 等等,确保该系统能够平稳的运行在A公司中。 44 软件维护阶段 该阶段的关键任务是通过各种必要的维 护活动使系统持久地满足用户的要求。 改正性维护:诊断和改正在使用过程中发现的软件错误 适应性维护:修改软件易适应环境的变化 完善性维护:根据用户的要求改进或扩充软件使它更完善 预防性维护:修改软件为将来的维护活动预先做准备 在电力公司A的实际使用当中,“电力结算系统”出现 了一些问题,B公司需要派人员进行维护。 此外,A公司对B公司所开发的系统比较满意,愿意 继

25、续让B公司对其进行其他方面功能的扩充,例如: 分小区进行用电量和电费收益的统计分析等。 软件开发中面临的问题软件开发中面临的问题 计划很难制定致使经费预算常常突破 由于缺乏软件开发的经验 ,主观盲目地制定 计划,执行起来和实际情况有很大差距,对于 工作量估计不准确,进度计划无法遵循,开发 工作完成的期限一拖再拖。已经拖延了的项目 ,为了加快进度而增加人力,反而更加延误项 目的进度。 需求在开发的初期阶段提得不够明确, 或是未能得到确切的表达。 软件人员和用户又未能及时交换意见 ,使得一些问题不能及时解决,造成开发 后期矛盾的集中暴露。然而这时问题既难 于分析,也难于挽回。 开发过程没有统一的、

26、公认的方法论 和规范指导 加之不重视文字资料工作,资料很不 完整;忽视每个人与其他人的接口部分, 发现了问题修修补补,这样的软件很难维 护。 未能充分做好检测工作 在运行中暴露出大量的问题,轻者影响 系统的正常工作,重者发生事故,甚至造 成生命财产的重大损失。 美国IBM公司在1963年至1966年开发的 IBM 360机的操作系统。5000人-年的工作 量,1000人投入,近100万行源程序。每 次发行的新版本都是从前一版本中找1000 个程序错误,项目负责人F.D.Brook总结时 说:“正像一只逃亡的野兽落到泥潭中做垂 死的挣扎,越是挣扎,陷得越深。最后无 法逃脱灭顶的灾难。“ 软件危机

27、软件危机 1968年由NATO (北大西洋公约组织)在 德国Garmish召开的学术会议上,Feitz Bauer首先提出了“软件工程”概念,引 入了现代软件开发的方法,希望用工程 化的原则和方法来克服软件危机。 软件危机的具体体现 (1)软件开发进度难以预测 (2)软件开发成本难以控制 (3)用户对软件功能难以满足 (4)软件产品质量无法保证 (5)软件产品难以维护 (6)软件缺少文档资料 按工程化的原则和方法组织软件开发 是解决软件开发中出现问题的一个主要出 路。 软件工程阶段,大约为70年代以后。50年代到60年代时 ,程序设计曾经被看做是一种任人发挥创造才能的技术领域。 写出的程序通篇

28、充满了程序技巧,这些程序很难被别人看懂。 然而随着计算机的广泛使用,人们逐渐抛弃了这种观点。对于 稍大的程序,并需要较长时间为许多人使用的程序,人们要求 这些程序容易看懂、容易使用,并且容易修改和扩充。多个软 件人员分工合作、共同完成;只有在项目的总体要求和技术规 范的约束下充分发挥和施展。 解决途径 软软件工程的定义件工程的定义 软件工程:软件工程:是一门研究如何用系统化、规范化、是一门研究如何用系统化、规范化、 数量化等工程原则和方法去进行软件的开发和维数量化等工程原则和方法去进行软件的开发和维 护的学科。护的学科。 实质上,软件工程就是采用工程的概念、原理、实质上,软件工程就是采用工程的

29、概念、原理、 技术和方法来开发与维护软件,把经过时间考验技术和方法来开发与维护软件,把经过时间考验 而证明正确的管理方法和最先进的软件开发技术而证明正确的管理方法和最先进的软件开发技术 结合起来,应用到软件开发和维护过程中去。结合起来,应用到软件开发和维护过程中去。 IEEEIEEE:( ( Institute of Electrical and Electronics Institute of Electrical and Electronics Engineers ) Engineers ) 软件工程是将系统化的、规范的、可软件工程是将系统化的、规范的、可 度量的方法应用于软件的开发、运行

30、和维护过程度量的方法应用于软件的开发、运行和维护过程 ,即将工程化应用于软件中的方法的研究。,即将工程化应用于软件中的方法的研究。 软件工程三要素:方法、软件工程三要素:方法、工具工具和过程和过程 pp工具层:工具层:为软件工程方法提供了自动的或半为软件工程方法提供了自动的或半 自动的软件支撑环境。自动的软件支撑环境。 CASE:计算机辅助软件工程,将各种软件计算机辅助软件工程,将各种软件 工具、开发机器和一个存放开发过程信息的工具、开发机器和一个存放开发过程信息的 工程数据库组合起来形成一个软件工程环境工程数据库组合起来形成一个软件工程环境 。 使用软件工程工具可以有效地改善软件开发使用软件

31、工程工具可以有效地改善软件开发 过程,提高开发效率,降低开发成本过程,提高开发效率,降低开发成本 软件工程三要素:软件工程三要素:方法方法、工具和过程、工具和过程 pp方法层:方法层:提供了软件开发的各种方法。提供了软件开发的各种方法。 方法覆盖了一系列的任务,包括项目计方法覆盖了一系列的任务,包括项目计 划与估算方法、需求分析和设计的方法划与估算方法、需求分析和设计的方法 、编程、测试方法及维护方法等、编程、测试方法及维护方法等 软件工程方法为软件开发提供了软件工程方法为软件开发提供了 “ “如何做如何做” ” 的技术的技术 p过程层:是软件工程的基础。软件工程 过程是为了获得软件产品,在软

32、件工具 支持下由软件人员完成的一系列软件工 程活动。(具体实施) 软件工程三要素:方法、工具和软件工程三要素:方法、工具和过程过程 软件工程过程定义了软件工程过程定义了: : l l 方法使用的顺序方法使用的顺序 l l 要求交付的文档资料要求交付的文档资料 l l 为保证质量和适应变化所需为保证质量和适应变化所需 要的管理要的管理 l l 软件开发各个阶段完成的里软件开发各个阶段完成的里 程碑程碑 软软件工程项目的基本目标件工程项目的基本目标 付出较低的开发成本付出较低的开发成本 达到要求的软件功能达到要求的软件功能 取得较好的软件性能取得较好的软件性能 开发的软件易于移植开发的软件易于移植 需要较低的维护费用需要较低的维护费用 能按时完成开发工作,及时交付使用能按时完成开发工作,及时交付使用 软件开发项目力图在以上目标的冲取得 一定程度的平衡。 结束

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1