deng-第一章软件工程概述
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
36/84
2、解决危机的管理途径
20世纪80年代末,美国国防部DoD和工业界开始
认识到管理的重要性
美国DoD的一项研究表明,70%的项目由于管理不善导 致难以控制进步、成本和质量; 进一步的研究发现:管理是影响软件项目成功开发的全 局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不 能充分发挥软件开发方法和工具的潜力,也就不能高效 率地开发出高质量的软件产品
39/84
1.2 软件工程定义(3)
SEI software engineering definition from 1990 SEI Report on Undergraduate Software Engineering Education (卡耐基梅隆大学在本科生软件工程教 育的报告): Engineering is the systematic application of scientific knowledge in creating and building costeffective solutions to practical problems in the service of mankind. Software engineering is that form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.
33/84
围棋与软件工程的感想
围棋
围棋棋谱拿过来的时候, 大师问“后面应该走哪里?” 十个初级爱好者选择的落 点散布在棋盘各处…… 十个职业棋手说的落子点 都差不多,甚至包括后面的几 步…… 这就是高手和低手的差 别……
软件工程
当一个小程序拿过来的时候, 项目经理让大家编写…… 十个中国软件工程师写出来 的程序各有“特色”、千差万别, 十个印度软件工程师写出来的程 序差不多,以至于怀疑是“抄 袭”。 项目经理也不清楚中国软件 业和印度软件业的差距是多少年 只是觉得差了好远好远……
27/84
b、产生软件危机的原因
(难于维护, 逻辑复杂) -与软件开发与维护的方法不正确有关: -软件≠程序 -急于求成=拔苗助长 -各自为阵无方法/学
-与软件本身的特点有关
28/84
引入同一变化付出的代价随时间变化的趋势
29/84
消除软件危机的途径
对计算机软件有一个正确的认识 (软件≠程序) 必须充分认识到软件开发不是某种个体 劳动的神秘技巧,而应该是一种组织良 好、管理严密、各类人员协同配合、共 同完成的工程项目。非个人英雄主义 推广使用在实践中总结出来的开发软件 的成功技术和方法。 开发和使用更好的软件工具。
22/84
软件危机
美国IBM公司在1963年至1966年开发的IBM 360机的操作系 统。5000人-年的工作量,1000人投入,近100万行源程序。每 次发行的新版本都是从前一版本中找1000个程序错误,项目负 责人F.D.Brook总结时说:“正像一只逃亡的野兽落到泥潭中 做垂死的挣扎,越是挣扎,陷得越深。最后无法逃脱灭顶的灾 难。”
评价方法
11/84
教材和课件
教材
薛继伟 高等学校“十二五”规划教材•计算机软件工程系列: 软件工程导论,第1版 哈尔滨工业大学出版社
课件下载
公共邮箱(还未申请)
12/84
参考文献
软件工程导论(第五版),张海藩,清华大学出版 社 软件工程实践导论--有关方法、设计、实现、管理之 三十六计,金尊和,清华大学出版社,2005. 软件开发的科学与艺术,微软亚洲研究院,电子工 业出版社,2002 年 软件工程-实践者的研究方法,R S. Pressman, 机 械工业出版社 现代软件工程, 周之英编著, 科学出版社
Software = Program + Data + Document
程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料
16/84
1.1 软件工程产生的背景 b、软件的特征
非常复杂
逻辑复杂
远远高于硬件的逻辑复杂度 成本难以估算 进度难以控制 人员素质要求 质量得不到保证
由于软件质量问题导致失败的软件项目非常多
25/84
a、软件危机的表现(3/3)
进度难以控制
项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成
维护非常困难
软件维护的多样性 软件维护的复杂性 软件维护的副作用
26/84
软件危机主要有以下表现:
13/84
参考书籍
14/84
第1章 软件工程概述
软件工程产生的背景(软件危机)
软件工程定义 软件工程方法学 软件过程模型 软件工程知识体系 软件工程师道德规范 小结
15/84
1.1 软件工程产生的背景
1)
软 件
a. 软件的定义
软件( Software)是计算机系统中与硬件相 互依存的另一部分,它是包括程序(Program) ,数据(Data)及其相关文档( Document)的 完整集合。
对软件开发成本和进度的估计常常不准确。开发 成本超出预算,实际进度比预定计划一再拖延的 现象并不罕见。 用户对“已完成”系统不满意的现象经常发生。 软件产品的质量往往靠不住。Bug一大堆,Patch 一个接一个。 软件的可维护程度非常之低。 软件通常没有适当的文档资料。 软件的成本不断提高。 软件开发生产率的提高赶不上硬件的发展和人们 需求的增长。
软件工程导论
邓娜
计算机学院
1/70
课程介绍及要求
用工程化的方法来开发软件
2/84
教学目标
为什么要学习这门课程
有助于正确理解和认识“软件”的概念及其特点 理解软件开发面临的问题和挑战
掌握软件工程的原则、方法和思想来系统地开发 软件,尤其是复杂、庞大的软件的开发
了解和接触软件开发所需的各种技术手段
9/84
课程设计(1/2)
内容
选择一个项目开发课题,用软件工程的思想知道其 开发过程。完成需求分析,详细设计,测试,项目 汇报。 以小组为单位,6—8人一组为宜 平时可以分组着手准备和进行,期末考试前要交, 具体时间待定
分组
时间
10/84
课程实习要求(2/2)
提交内容
课程设计纸质文档,装入文件袋 文档: 完整性、合理性、规范性
23/84
1.1 软件工程产生的背景
2) 软件危机 a、软件危机的表现(1/3)
成本高
IBM 360 OS, 5000多人年,耗 时4年(1963-1966),花费2亿 多美元 美国空军:1955年软件占总费 用(计算机系统)的18%,70年 60%,85年达到85% 美国全球军事指挥控制系统,硬 件1亿美元,软件高达7.2亿美元
软件工程就是建立和使用一套合理 的工程原理,从而经济地获得可靠的、 可以在实际机器上高效运行的软件。
38/84
1.2 软件工程定义(2)
Software engineering. (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE(The Institute for Electrical and Electronic engineers) Std 610-1990.) 软件工程是:(1)把系统的、规范的、 可度量的途径应用于软件开发、运行和维护 过程,也就是把工程应用于软件;(2)研究 (1)中提到的途径。
34/84
d、软件工程(学):克服软件危机的努力
(1)从管理的角度 软件开发过程的研究、文档的标准化以及人们 的交流方式等 (2)软件开发方法的研究 结构化软件开发方法, 面向对象的开发
35/84
1、解决危机的技术途径
提出有效的方法和工具支持软件开发
1968年提出软件工程概念和思想 20世纪70年代的结构化软件开发方法 20世纪80年代的面向对象的软件开发方法 新的技术: 软件重用、快速原型、需求工程 典型技术: COM, Java, C++, J2EE, .Net, …. 支撑工具和环境:Jbuilder, Visual Studio, WebLogic, …
37/84
1.2 软件工程定义(1)
The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines. (1968- Fritz Bauer)
开发复杂
17/84
1.1 软件工程产生的背景 b、软件的特征
成本高
18/84
1.1 软件工程产生的背景 b、软件的特征
风险大
1995年美国Standish咨询集团的统计分析(至90年代 初的软件项目执行情况)
成功:16.2% 失败:31% 受到挑战:53.8%
近几年来的统计数据
90 80 70 60 50 40 30 20 10 0 60年代 80年代 计算机软件 计算机硬件
计算机软件和硬件费用比
24/84
a、软件危机的表现(2/3)
软件质量得不到保证
软件应用面的扩大:科学计算、军事、航空航天、工业控 制、企业管理、办公、家庭 软件越来越多的应用于安全攸关(safety critical)的系统,对 软件质量提出更高的要求 80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误 美国阿托拉斯火箭的发射失败,原因是软件故障 英国1986年开发的办公室信息系统Folios经4年,因性能达 不到要求,1989年取消 日本第5代机因为软件问题在投入50亿美元后于1993年下马
早期 •面向批处理 •有限的分布 •自定义软件 第二阶段 •多用户 •实时 •数据库 第三阶段 •分布式系统 •嵌入“智能” •低成本硬件 第四阶段
•强大的桌面系统
•面向对象技术 •专家系统
•软件产品
•消费者的影响
•人工神经网络
•并行计算 •网路计算机
1968年10月,北大西洋公约组织(NATO)的科学家在德国 召开的学术会议上正式提出了软件危机问题。 21/84
工程
工程是对技术(或社会)实体的分析、 设计、建造、验证和管理。
传统工程
水利工程
建筑工程
机械工程
… …
新兴工程
气象工程
生物工程
软件工程
32/84
软件工程
---- Software Engineering
于1968年 NATO 组织在 德国召开的一次会议上提出
是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。
成功:26% 失败:28% 受到挑程产生的背景 b、软件的特征
维护困难
维护形式多样化
改正性:修改故障 完善性:增加功能 适应性:移植 55%到70%
维护成本越来越高
维护带来的问题
20/84
1.1 软件工程产生的背景
c. 软件的发展
理解、掌握和运用
3/84
理解
什么是软件工程 为什么需要软件工程(产生背景) 软件工程需要解决那些问题 软件工程涉及那些方面内容
4/84
掌握
软件工程
概念 技术 过程 手段 工具
5/84
运用
运用工程化思想进行软件开发
需求分析 软件设计 程序设计 软件维护
6/84
先导要求
程序设计语言 最好有一定的软件开发经验
7/84
学习要求
听
理解知识点和思想 无需死记硬背
做
实践 体会软件工程的原则、方法和技术,在实践中提高 培养抽象思维能力 培养独立解决问题的能力 培养合作精神
想
阅读相关资料
8/84
考核方式
考试(60%) 课程设计(30%) 考勤(10%)
30/84
C、软件工程(学)因危机而产生
开发一个具有一定规模和复杂性的软件系统与编写一 个简单的程序不一样
正如建设狗窝和高楼大厦
大型、复杂软件系统的开发是一项工程,必须按照工 程化的方法组织软件的生产和管理,必须经过分析、 设计、实现、测试、维护等一系列软件过程和活动
31/84
软件工程
1.
1950
1960
1970
1980
1990
2000
软件危机
1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN 程序:
DO 5 Ⅰ=1,3
误写成:DO 5 Ⅰ=1 . 3
1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点, 在进入大气层时因打不开降落伞而烧毁。