




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,SoftwareEngineering,张小洪Dr.Zhang,Xiaohong2006,FallSchoolofSoftwareEngineering,ChongqingUniversity,2,个人信息,张小洪Email:xhongzTEL小灵通)办公地点:重庆大学A区主楼1003室研究方向:软件工程、机器视觉与数据挖掘等,3,软件工程的主要内容,软件工程概述过程模型需求分析与分析建模软件设计原则软件体系结构设计软件测试软件维护可行性分析面向对象分析与设计,4,参考教材,软件工程-实践者的研究方法(英文版第五版)RogerS.Pressman机械工业出版社,5,教材,软件工程导论(第三版)张海藩清华大学出版社(1997),6,第1讲软件危机与软件工程,7,内容提要,软件的特点软件的分类软件工程产生的背景:软件危机与神话软件工程的概念软件工程现状,计算机软件已经成为一种驱动力。它是进行商业决策的引擎;它是现代科学研究和工程问题寻求解答的基础;它也是鉴别现代产品和服务的关键因素。它被嵌入在各种类型的系统中:交通、医疗、电信、军事、工业生产过程、娱乐、办公、难以穷举。软件在现代社会中确实是必不可少的。而且我们进入21世纪,软件将成为从基础教育到基因工程的所有领域新进展的驱动器。,9,什么是软件,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料,10,软件的特点,软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,11,12,软件的特点,软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵相当多的软件工作涉及到社会因素,13,14,软件的分类,按软件的功能进行划分:系统软件使计算机系统各个部件、相关软件和数据协调、高效地工作的软件操作系统数据库管理系统设备驱动程序通信处理程序等,15,软件的分类,支撑软件协助用户开发软件的工具软件文本编辑程序文件格式化程序磁盘向磁带进行数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件,16,软件的分类,应用软件商业数据处理软件工程与科学计算软件计算机辅助设计制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件,17,软件的分类,按软件规模进行划分:类别参加人员数研制期限源程序行数微型114周0.5k小型116月1k2k数值计算或数据处理,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。中型2512年5k50k软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。,18,软件的分类,大型52023年50k100k编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。甚大型100100045年1M(=1000k)若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。极大型20005000510年1M10M军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。,19,软件的分类,按软件工作方式划分:实时处理软件交互式软件批处理软件分时软件,20,软件的分类,按软件服务对象的范围划分:项目软件产品软件,21,软件的分类,按使用的频度进行划分:一次使用频繁使用,22,软件的分类,按软件失效的影响进行划分:高可靠性软件一般可靠性软件,23,软件的发展,Late1950s:,Intheearlydays:“Software”=“Placeasequenceofinstructionstogethertogetthecomputertodosomethinguseful”.UserComputer,ComputerbecamecheaperandmorecommonHighlevellanguageswereinvented,Programmer,User,Computer,24,软件的发展,Early1960s:Veryfewlargesoftwareprojectsweredonebysomeexperts.,Middletolate1960s:Trulylargesoftwaresystemswereattempted.,After1968:SoftwareEngineering,25,软件的角色,软件在社会上扮演了双重角色它本身是一种产品将计算机硬件的计算能力发挥出来同时,它也是一种传递产品的工具软件传递了我们这个时代最重要的产品:信息,26,计算机和软件的历史观,70年代和80年代“新的工业革命”“工业社会将转变为信息社会”(大批量生产带来的产品过剩)90年代“知识的民主化将改变旧的权力结构”21世纪“无所不在的信息”,27,软件危机,美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。.这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,SoftwareCrisis!,28,软件危机,项目没有被很好地理解;计划不周,最终导致进度拖延。,例在20世纪60年代后期,一位热情的年青工程师受命为一个自动化制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编语言的IN和OUT指令以及Fortran语言有所了解,但是却根本不懂软件工程,更不要说项目进度安排和跟踪了。他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年轻人被告知该项目必须在两个月之内完成。他阅读了这些手册,想好了解决方法,就开始编写代码。两周后,老板将他叫到办公室询问项目进展情况。,问题出在哪里?,29,软件危机,“非常好”工程师以年轻人的热情回答道,“这个项目远比我想像的简单。我差不多已经完成了75%的任务。老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续努力工作,准备好一周后再汇报一次工作进度。一周后老板将年轻人叫到办公室,问他说:“现在进度如何?”“一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。我会排除这些困难,很快就可以回到正轨上来。”“你觉得在最后期限之前能否完成?”老板问道。“没有问题”工程师答道。“我差不多已经完成了90%”如果读者在软件领域中工作过几年,你一定可以将这个故事写完。毫不奇怪,年轻工程师在整个项目工期内始终停留在90%的进度上,(在别人的帮助下)直到交付期限之后一个月才做完,30,软件危机,没有充分的文档资料(documentation),人与人的交流比写程序困难得多。,Managersevaluate,trackprogress,.ProgrammerscommunicatetoeachotherMaintainers,31,软件危机,软件可靠性(reliability)缺少度量的标准,质量无法保证。如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件,如:.,ThesoftwaresupportingtheAmericanspaceshuttleconsistsof3millionlinesofcode,includingcomputersonthegroundcontrollingthelaunchandtheflight;therewereonehundredthousandlinesofcodeintheshuttleitselfin1985.PresidentReagansproposedStrategicDefenseInitiative(SDI)isestimatedtorequire10to100millionlinesofcode.Manycomputerscientistsandsoftwareengineerscontinuetobelievethereisnowaytowriteandtestthesoftwaretoguaranteeadequatereliability.,32,软件危机,软件难以维护(maintainability)不易升级(evolvability),33,软件神话管理神话,负责软件的管理者像大多数其他行业的管理者一样,都有巨大的压力,要维持预算、保持进度,还要提高质量。就像溺水者抓住一根救命稻草,软件管理者常常抓住软件神话不放,这些神话能够缓解其压力的话(哪怕是暂时的)。神话1:我们已经有了关于建造软件的标准和规程的书籍,难道它们不能给人们提供所有它们需要知道的信息吗?现实:不错,关于标准的书籍已经存在,但真正使用它们了吗?软件实践者知道它们的存在吗?它们是否反映了现代软件工程实践?它们完备吗?它们对在保持关注质量的情况下改善交付时间是简便有效的吗?很多情况下,这些问题的答案是否定的。,34,软件神话管理神话,神话2:我们已经有了很多很好的软件开发工具,而且,我们为它们最新的的计算机。现实:计算机辅助软件工程(CASE)工具与硬件相对而言对于获得高质量和高生产率更为重要。神话3:如果我们已经落后于计划,可以增加更多的程序员赶上进度。现实:给一个已经延迟的软件项目增加人手只会使其更加延迟。神话4:如果我决定向第三方外包软件项目,我可以放松并让承包公司去建造它。现实:如果一个机构不了解如何在内部管理和控制软件项目,当它外包软件项目时将总是处于挣扎的境地。,35,软件神话客户神话,在许多情况下,客户相信关于软件的神话,因为负责软件开发的管理者和开发人员很少去纠正客户的错误理解。导致客户过高的期望值,并最终引起对开发人员的不满意。神话1:有了对目标的一般性描述就足以开始写程序了,我们可以以后再补充细节。现实:糟糕的系统定义是软件项目失败的主要原因。关于信息领域、功能、行为、性能、接口、设计约束及确认标准的形式化的、详细的描述是必要的。这些内容只有通过客户和开发者之间彻底地交流后才能确定。神话2:软件需求确实是经常变更的,但这些变更能够很容易地满足,因为软件是灵活的。现实:软件需求确实是变更的,但这些变更产生的影响会随着其被引入的时间而不同的。,36,软件神话实践者神话,在软件的早期阶段,程序设计被看成是一门艺术。神话1:一旦我们写出了程序并使其正常运行,我们的工作就结束了。现实:越早开始写代码,就要花越长的时间才能完成它。研究表明在一鼐软件上所投入的60%到80%的工作量是花费在软件第一次交付客户之后。神话2:在程序真正运行之前,没有办法评估其质量。现实:从项目一开始就可以应用的最有效的软件质量保证机制之一是正式的技术评审。神话3:一个成功项目唯一应该提交的就是运行程序。现实:运行程序仅是软件配置的一部分,软件配置包括很多东西。神话4:软件工程将使我们创建大量的、不必要的文档,并总是延缓我们的进度。现实:软件工程并不是为创建文档,而了创建质量。,37,软件工程,人们对软件生产提出了许多疑问:为什么需要那么长的时间才能完成软件开发。为什么开发成本如此高为什么我们不能在把软件提交客户之前就发现所有的错误为什么在软件开发过程总是难以度量其进展造成以上问题的原因主要是:软件行业发展的速度太快,对经验总结不足人们对自身处理能力的认识不清解决的方法:多实践,积累成功和失败的案例总结、思考、提取经验建立软件的模型和模式,38,软件工程,BettermanagementDifferentteamorganizations(组织)Betterlanguages&toolsUniformcodingconventions(规范)必须意识到:“软件”编程,它有自己的生命周期(lifecycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。,“软件工程”(SoftwareEngineering)NATO(北大西洋公约组织)Conference,Garmisch,Germany,1968.,解决问题的想法:,39,软件工程定义,Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料IEEE:软件工程是开发、运行、维护和修复软件的系统方法FritzBauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法,40,软件工程要素,软件工程三要素:方法、工具和过程软件工程方法为软件开发提供了“如何做”的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件工程过程定义了:方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑,41,软件工程原理,用分阶段的生命周期计划严格管理项目概要计划里程碑计划项目控制计划产品控制计划验证计划运行维护计划坚持进行阶段评审实行严格的产品控制基准配置管理(Baselineconfigurationmanagement),开发小组的成员应该少而精1+12,采用现代程序设计技术,结果应能清楚地审查setstandards,承认不断改进软件工程实践的必要性,42,我国软件业的现状,我国软件业的规模目前,我国从事软件开发、研制、销售、维护和服务的软件企业有2000家左右,加上兼营的企业,总数大约有10000多家,其中具有自主软件研发能力的软件企业约5700家,已经通过双软认定的有2300余家,从事软件销售、维护和服务的企业5000多家。在这里面,营业规模超过一亿元的软件企业达到100家以上,超过5亿元的达到18家,超过10亿元的达到12家。,43,我国软件业的现状,2001年,世界软件产品市场销售额超过1865亿美元,我国当年的销售额为285亿元人民币,只占世界市场不到2的份额。国内软件市场有限的份额中大部分为国外软件厂商所瓜分,国内所开发的软件产品仅占小部分。,44,我国软件业的现状,2001年我国软件销售总额963亿美元,软件企业约5000家,从业人员29万。2001年印度软件销售总额1023亿美元,软件企业约6000家,从业人员40万。2001年我国软件的出口额仅为7.2亿美元,2000年与1999年分别为4亿美元及2.5亿美元。印度在软件出口方面,则一直保持高速的增长。1990年印度软件出口只有5000万美元,1999年就达到了39亿美元,2000年达到了62亿美元,而2001年印度软件出口额为778亿美元,已经占到了印度全部出口总额的10.5。,45,我国软件业的现状,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省深圳市桃源居中澳实验学校2025-2026学年高三上学期第一次月考历史试题
- 应届生安全培训内容
- 巡防安全卫士培训内容课件
- 2025年电商应用与品牌市场洞察分析报告
- 岩石学课件地大北京
- 输电安全培训特色亮点课件
- 小鸭过河课件
- 高级管理人员劳动局认可的特殊待遇劳动合同模板
- 多种担保保证方式在工程项目中的应用合同
- 个人股权变更及收益分配合同
- 2025年人教版八年级地理上册全册教案
- 2025年涉台知识竞赛试题及答案
- 黑龙江省哈尔滨市哈尔滨市第一中学校2024-2025学年度上高一期中考试语文试题
- 2025年广西壮族自治区招聘警务辅助人员考试真题及答案
- GJB3206B-2022技术状态管理
- 园林养护服务公司简介范文
- 2025秋人教版(2024)二年级上册数学教学计划
- 2025至2030中国清真食品市场供需前景调查及发展动向分析报告
- 农业综合服务战略合作协议书
- 检验科实验室生物安全风险评估报告
- 药厂复试面试常见问题及答案解析
评论
0/150
提交评论