1 软件危机与软件工程41676.pptx
《1 软件危机与软件工程41676.pptx》由会员分享,可在线阅读,更多相关《1 软件危机与软件工程41676.pptx(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Software Engineering张小洪张小洪Dr.Zhang,Xiaohong2006,FallSchool of Software Engineering,Chongqing University1个人信息个人信息n 张小洪 qEmail: qTEL:15923238399(小灵通)q办公地点:重庆大学A区主楼1003室n研究方向:q软件工程、机器视觉与数据挖掘等2软件工程的主要内容软件工程的主要内容n软件工程概述n过程模型n需求分析与分析建模n软件设计原则n软件体系结构设计n软件测试n软件维护n可行性分析n面向对象分析与设计3参考教材参考教材 软件工程软件工程-实践者的研究方法实践
2、者的研究方法(英文版(英文版 第五版)第五版)Roger S.Pressman 机械工机械工业出版社业出版社4教材教材软件工程导论(第三版)张海藩 清华大学出版社(1997)5第第1讲讲 软件危机与软件工程软件危机与软件工程6内容提要内容提要n软件的特点n软件的分类n软件工程产生的背景:软件危机与神话n软件工程的概念n软件工程现状7 计算机软件已经成为一种驱动力。它是进行商业决策的引擎;它是现代科学研究和工程问题寻求解答的基础;它也是鉴别现代产品和服务的关键因素。它被嵌入在各种类型的系统中:交通、医疗、电信、军事、工业生产过程、娱乐、办公、难以穷举。软件在现代社会中确实是必不可少的。而且我们进
3、入21世纪,软件将成为从基础教育到基因工程的所有领域新进展的驱动器。8什么是软件什么是软件n n软件软件软件软件是计算机系统中与硬件相互依存的另一部分,是计算机系统中与硬件相互依存的另一部分,是计算机系统中与硬件相互依存的另一部分,是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合它是包括程序,数据及其相关文档的完整集合它是包括程序,数据及其相关文档的完整集合它是包括程序,数据及其相关文档的完整集合n n程序程序程序程序是按事先设计的功能和性能要求执行的指令是按事先设计的功能和性能要求执行的指令是按事先设计的功能和性能要求执行的指令是按事先设计的功能和性能要求执行
4、的指令序列序列序列序列n n数据数据数据数据是使程序能正常操纵信息的数据结构是使程序能正常操纵信息的数据结构是使程序能正常操纵信息的数据结构是使程序能正常操纵信息的数据结构n n文档文档文档文档是与程序开发,维护和使用有关的图文材料是与程序开发,维护和使用有关的图文材料是与程序开发,维护和使用有关的图文材料是与程序开发,维护和使用有关的图文材料9软件的特点软件的特点n n软件是一种软件是一种软件是一种软件是一种逻辑实体逻辑实体逻辑实体逻辑实体,而不是具体的物理实体。,而不是具体的物理实体。,而不是具体的物理实体。,而不是具体的物理实体。因而它具有抽象性因而它具有抽象性因而它具有抽象性因而它具有
5、抽象性n n软件的生产与硬件不同,在它的开发过程中软件的生产与硬件不同,在它的开发过程中软件的生产与硬件不同,在它的开发过程中软件的生产与硬件不同,在它的开发过程中没有没有没有没有明显的制造过程明显的制造过程明显的制造过程明显的制造过程n n在软件的运行和使用期间,在软件的运行和使用期间,在软件的运行和使用期间,在软件的运行和使用期间,没有硬件那样的机械没有硬件那样的机械没有硬件那样的机械没有硬件那样的机械磨损,老化问题磨损,老化问题磨损,老化问题磨损,老化问题1011软件的特点软件的特点n n软件的开发和运行常受到计算机系统的限制,对软件的开发和运行常受到计算机系统的限制,对软件的开发和运行
6、常受到计算机系统的限制,对软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性计算机系统有着不同程度的依赖性计算机系统有着不同程度的依赖性计算机系统有着不同程度的依赖性n n软件的开发至今软件的开发至今软件的开发至今软件的开发至今尚未完全摆脱手工艺的开发方式尚未完全摆脱手工艺的开发方式尚未完全摆脱手工艺的开发方式尚未完全摆脱手工艺的开发方式n n软件本身是复杂的软件本身是复杂的软件本身是复杂的软件本身是复杂的n n实际问题的复杂性实际问题的复杂性实际问题的复杂性实际问题的复杂性n n程序逻辑结构的复杂性程序逻辑结构的复杂性程序逻辑结构的复杂性程序逻辑结构的复杂性 n n软件
7、成本相当昂贵软件成本相当昂贵软件成本相当昂贵软件成本相当昂贵n n相当多的软件工作涉及到社会因素相当多的软件工作涉及到社会因素相当多的软件工作涉及到社会因素相当多的软件工作涉及到社会因素1213软件的分类软件的分类n n按软件的功能进行划分:按软件的功能进行划分:qq系统软件 使计算机系统各个部件、相关软件和数据协调、高使计算机系统各个部件、相关软件和数据协调、高使计算机系统各个部件、相关软件和数据协调、高使计算机系统各个部件、相关软件和数据协调、高效地工作的软件效地工作的软件效地工作的软件效地工作的软件n n操作系统操作系统n n数据库管理系统数据库管理系统n n设备驱动程序设备驱动程序n
8、n通信处理程序等通信处理程序等14软件的分类软件的分类qq支撑软件 协助用户开发软件的工具软件协助用户开发软件的工具软件协助用户开发软件的工具软件协助用户开发软件的工具软件n n文本编辑程序文本编辑程序n n文件格式化程序文件格式化程序n n磁盘向磁带进行数据传输的程序磁盘向磁带进行数据传输的程序n n程序库系统程序库系统n n支持需求分析、设计、实现、测试支持需求分析、设计、实现、测试和支持管理的软件和支持管理的软件15软件的分类软件的分类qq应用软件n n商业数据处理软件商业数据处理软件n n工程与科学计算软件工程与科学计算软件n n计算机辅助设计制造软件计算机辅助设计制造软件n n系统仿
9、真软件系统仿真软件n n智能产品嵌入软件智能产品嵌入软件n n医疗、制药软件医疗、制药软件n n事务管理、办公自动化软件事务管理、办公自动化软件n n计算机辅助教学软件计算机辅助教学软件16软件的分类软件的分类n n按软件规模进行划分:按软件规模进行划分:n n类别类别类别类别 参加人员数参加人员数参加人员数参加人员数 研制期限研制期限研制期限研制期限 源程序行数源程序行数源程序行数源程序行数 n n微型微型微型微型 1 14周 0.5k n n小型小型小型小型 1 16月 1k2k 数值计算或数据处理,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没
10、有大题目那样严格。n n中型中型中型中型 25 12年 5k50k 软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。17软件的分类软件的分类 大型大型 520 23年年 50k100k 编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。实行严格的审查是绝对必要的。甚大型甚大
11、型 1001000 45年年 1M(=1000k)若干个子项目,每一个子项目都是一个大型软件。子项目之间具有若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。题没有软件工程方法的支持,它的开发工作是不可想象的。极大型极大型 20005000 510年年 1M10M军事指挥、弹道导弹防御系统。军事指挥
12、、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。只是对软件工程技术依赖的程度不同而已。18软件的分类软件的分类n n按软件工作方式划分:按软件工作方式划分:n 实时处理软件实时处理软件n 交互式软件交互式软件n 批处理软件批处理软件n 分时软件分时软件19软件的分类软件的分类n n按软件服务对象的范围划分:按软件服务对象的范围划分:n 项目软件项目软件n 产品软件产品软件20软件的分类软件的分类n n按使用的频度进行划分:按使用的频度进行划分:n 一次使用一次使用n 频繁使用频繁使用21软件的分类软件的分类n n按软件失效的影响进行划分:按软件失效的影响进行划分:n 高可靠性软件高可
13、靠性软件n 一般可靠性软件一般可靠性软件22软件的发展软件的发展Late 1950s:In the early days:“Software”=“Place a sequence of instructions together to get the computer to do something useful”.User ComputerComputer became cheaper and more commonHigh level languages were inventedProgrammerUser Computereasier23软件的发展软件的发展Early 1960s:Ve
14、ry few large software projects were done by some experts.Middle to late 1960s:Truly large software systems were attempted.After 1968:Software Engineering24软件的角色软件的角色n软件在社会上扮演了双重角色q它本身是一种产品n将计算机硬件的计算能力发挥出来n同时,它也是一种传递产品的工具q软件传递了我们这个时代最重要的产品:信息25计算机和软件的历史观计算机和软件的历史观n70年代和80年代q“新的工业革命”q“工业社会将转变为信息社会”q(大
15、批量生产带来的产品过剩)n90年代q“知识的民主化将改变旧的权力结构”n21世纪q“无所不在的信息”26软件危机软件危机美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。.这个项目的负责人这个项目的负责人F.D.BrooksF.D.Brooks事后总结了他在组织开发过程中的沉事后总结了他在组织开发过程中的沉痛教训时说:痛教训时说:“.“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,正像一只逃亡的
16、野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工程序设计工作正像这样一个泥潭,作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境谁也没有料到问题竟会陷入这样的困境.”.”。IBM360IBM360操作操作系统的历史教训成为软件开发项目的典型事例为人们所记取。系统的历史教训成为软件开发项目的典型事例为人们所记取。Software Crisis !27软件危机软件危机 项目没有被很好地理解;计划不周,最终导致进度拖延。例例 在在20世纪世纪60
17、年代后期,一位热情的年青工程师受命为一个自动化年代后期,一位热情的年青工程师受命为一个自动化制造应用项目制造应用项目“编写编写”计算机程序。选择他的理由非常简单,因为在整计算机程序。选择他的理由非常简单,因为在整个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编语言的语言的IN和和OUT指令以及指令以及Fortran语言有所了解,但是却根本不懂软件语言有所了解,但是却根本不懂软件工程,更不要说项目进度安排和跟踪了。工程,更不要说项目进度安排和跟踪了。他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年他的老板给
18、了他一大堆相关的手册,以及需要做些什么的口头描述。年轻人被告知该项目必须在两个月之内完成。轻人被告知该项目必须在两个月之内完成。他阅读了这些手册,想好了解决方法,就开始编写代码。两周后,老板他阅读了这些手册,想好了解决方法,就开始编写代码。两周后,老板将他叫到办公室询问项目进展情况。将他叫到办公室询问项目进展情况。问题出在哪里?问题出在哪里?28软件危机软件危机“非非常常好好”工工程程师师以以年年轻轻人人的的热热情情回回答答道道,“这这个个项项目目远远比比我我想想像的简单。我差不多已经完成了像的简单。我差不多已经完成了75%的任务。的任务。老老板板笑笑了了,说说道道:“真真是是太太棒棒了了”然
19、然后后他他嘱嘱咐咐年年轻轻人人继继续续努努力力工工作,准备好一周后再汇报一次工作进度。作,准备好一周后再汇报一次工作进度。一周后老板将年轻人叫到办公室,问他说:一周后老板将年轻人叫到办公室,问他说:“现在进度如何?现在进度如何?”“一一切切顺顺利利”年年轻轻人人回回答答说说,“但但是是我我遇遇到到了了一一些些小小麻麻烦烦。我我会会排除这些困难,很快就可以回到正轨上来。排除这些困难,很快就可以回到正轨上来。”“你觉得在最后期限之前能否完成?你觉得在最后期限之前能否完成?”老板问道。老板问道。“没有问题没有问题”工程师答道。工程师答道。“我差不多已经完成了我差不多已经完成了90%”如如果果读读者者
20、在在软软件件领领域域中中工工作作过过几几年年,你你一一定定可可以以将将这这个个故故事事写写完完。毫毫不不奇奇怪怪,年年轻轻工工程程师师在在整整个个项项目目工工期期内内始始终终停停留留在在90%的的进进度度上上,(在别人的帮助下)直到交付期限之后一个月才做完(在别人的帮助下)直到交付期限之后一个月才做完29软件危机软件危机 没有充分的文档资料没有充分的文档资料(documentation)人与人的人与人的交流交流比写程序困难得多。比写程序困难得多。Managers evaluate,track progress,.Programmers communicate to each otherMain
21、tainers 30软件危机软件危机 软件可靠性软件可靠性(reliability)缺少度量的标准,质量无法保缺少度量的标准,质量无法保证。证。如何保证软件产品的质量,是非常复杂困难的问题。如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件,如:特别对于规模庞大的软件,如:.The software supporting the American space shuttle consists of 3 million lines of code,including computers on the ground controlling the launch and the f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件危机与软件工程41676 软件 危机 软件工程 41676
限制150内