《实用软件工程课件.pptx》由会员分享,可在线阅读,更多相关《实用软件工程课件.pptx(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软 件 工 程 实用软件工程实用软件工程(第二版)(第二版)郑人杰郑人杰 殷人昆殷人昆 陶永雷陶永雷 清华大学出版社(清华大学出版社(1996)软件工程软件工程-实践者的研究方法(英文版实践者的研究方法(英文版 第四版)第四版)Roger S.Pressman 机械工业出版社机械工业出版社参考书目第1页/共50页参考书目 Fundamentals of Software Engineering Carlo Ghezzi,Mehdi Jazayeri,Dino Mandrioli Prentice-Hall,Inc.(1991)Software Engineering,Theory and Pr
2、actice Shari Lawrence Pfleeger,Prentice-Hall,Inc.(1998)第2页/共50页 软件工程 近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门、生产部门、和服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少的一部分。展望二十一世纪,软件仍将成为驱动任何事情从基础教育到遗传工程取得新进展的动力。学习研究工程化的软件开发方法,使开发过程更加规范。第3页/共50页 什么是软件什么是软件 软件的分类软件的分类 软件的发展软件的发展 软件危机软件危机 软件生存期软件生存期 软件工程软件工程 软件工程的目的和要求软件工程的目的
3、和要求第4页/共50页软件软件是与计算机系统操作有关的是与计算机系统操作有关的程序、规程、规则及任何与之相程序、规程、规则及任何与之相关的文档及数据。关的文档及数据。程序程序是按事先设计的功能和性能是按事先设计的功能和性能要求执行的指令序列要求执行的指令序列数据数据是使程序能正常操纵信息的是使程序能正常操纵信息的数据及其结构数据及其结构文档文档是与程序开发,维护和使用是与程序开发,维护和使用有关的图文材料有关的图文材料什么是软件?什么是软件?第5页/共50页软件的特点软件的特点软件是一种软件是一种逻辑实体逻辑实体,而不是具体,而不是具体的物理实体。因而它具有抽象性的物理实体。因而它具有抽象性软
4、件的生产与硬件不同,在它的开软件的生产与硬件不同,在它的开发过程中发过程中没有明显的制造过程没有明显的制造过程在软件的运行和使用期间,在软件的运行和使用期间,没有硬没有硬件那样的机械磨损,老化问题件那样的机械磨损,老化问题第6页/共50页软件的开发和运行常受到计算机系软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同统的限制,对计算机系统有着不同程度的依赖性程度的依赖性软件的开发至今软件的开发至今尚未完全摆脱手工尚未完全摆脱手工的开发方式的开发方式软件本身是复杂的软件本身是复杂的实际问题的复杂性实际问题的复杂性程序逻辑结构的复杂性程序逻辑结构的复杂性 软件成本相当昂贵软件成本相当昂贵
5、相当多的软件工作涉及到社会因素相当多的软件工作涉及到社会因素第7页/共50页第8页/共50页软件的分类软件的分类按软件的功能进行划分:按软件的功能进行划分:系统软件系统软件 操作系统操作系统 数据库管理系统数据库管理系统 设备驱动程序设备驱动程序 通信处理程序等通信处理程序等第9页/共50页 支撑软件支撑软件文本编辑程序文本编辑程序文件格式化程序文件格式化程序磁盘向磁带向数据传输的程序磁盘向磁带向数据传输的程序程序库系统程序库系统支持需求分析、设计、实现、支持需求分析、设计、实现、测试和支持管理的软件测试和支持管理的软件第10页/共50页 应用软件应用软件 商业数据处理软件商业数据处理软件 工
6、程与科学计算软件工程与科学计算软件 计算机辅助设计制造软件计算机辅助设计制造软件 系统仿真软件系统仿真软件 智能产品嵌入软件智能产品嵌入软件 医疗、制药软件医疗、制药软件 事务管理、办公自动化软件事务管理、办公自动化软件 计算机辅助教学软件计算机辅助教学软件第11页/共50页按软件规模进行划分:按软件规模进行划分:类别类别 参加人员数参加人员数 研制期限研制期限 源程源程序行数序行数 微型微型 1 14周周 0.5k 小型小型 1 16月月 1k2k中型中型 25 12年年 5k50k大型大型 520 23年年 50k100k甚大型甚大型 1001000 45年年 1M(=1000k)极大型极
7、大型 20005000 510年年 1M10M第12页/共50页按软件工作方式划分:按软件工作方式划分:实时处理软件实时处理软件 分时软件分时软件 交互式软件交互式软件 批处理软件批处理软件 按软件服务对象的范围划分:按软件服务对象的范围划分:项目软件项目软件 产品软件产品软件第13页/共50页 按使用的频度进行划分:按使用的频度进行划分:一次使用一次使用 频繁使用频繁使用 按软件失效的影响进行划分:按软件失效的影响进行划分:高可靠性软件高可靠性软件 一般可靠性软件一般可靠性软件第14页/共50页软件发展阶段软件发展阶段程序设计阶段程序设计阶段 50至至60年代年代为具体运用专门编写小规模的程
8、序程序系统阶段程序系统阶段 60至至70年代年代软件作坊的出现沿用个体软件开发方法使得软件不可维护出现软件危机软件工程阶段软件工程阶段 70年代以后年代以后70707070年代中期年代中期年代中期年代中期80808080年代年代年代年代分布式系统、计算机网络、嵌入式系统发展80808080年代末开始年代末开始年代末开始年代末开始面向对象、专家系统、人工智能的应用第15页/共50页软软件危机件危机(Software Crisis)表现表现 -对软件开发成本和进度的估算很不准确对软件开发成本和进度的估算很不准确对软件开发成本和进度的估算很不准确对软件开发成本和进度的估算很不准确 -用户对用户对用户
9、对用户对“已完成已完成已完成已完成”软件系统不满意的现象经常发生软件系统不满意的现象经常发生软件系统不满意的现象经常发生软件系统不满意的现象经常发生 开发人员与用户交流不充分开发人员与用户交流不充分开发人员与用户交流不充分开发人员与用户交流不充分 -质量不可靠质量不可靠质量不可靠质量不可靠 缺乏质量保证技术(审查、复审和测缺乏质量保证技术(审查、复审和测缺乏质量保证技术(审查、复审和测缺乏质量保证技术(审查、复审和测试)试)试)试)-软件常常是不可维护的软件常常是不可维护的软件常常是不可维护的软件常常是不可维护的 -没有适当的文档资料没有适当的文档资料没有适当的文档资料没有适当的文档资料 -软
10、件成本比重逐年上升软件成本比重逐年上升软件成本比重逐年上升软件成本比重逐年上升 -供不应求:软件开发生产率跟不上计算机应用迅速供不应求:软件开发生产率跟不上计算机应用迅速供不应求:软件开发生产率跟不上计算机应用迅速供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势深入的趋势深入的趋势深入的趋势第16页/共50页原因原因 -用户需求描述不准确用户需求描述不准确用户需求描述不准确用户需求描述不准确 -理解问题理解问题理解问题理解问题 -管理人员缺乏经验管理人员缺乏经验管理人员缺乏经验管理人员缺乏经验 -开发人员的疏漏开发人员的疏漏开发人员的疏漏开发人员的疏漏 -缺乏方法学支持缺乏方法学支持缺乏
11、方法学支持缺乏方法学支持 -软件本身的特殊性和人类的智力障碍软件本身的特殊性和人类的智力障碍软件本身的特殊性和人类的智力障碍软件本身的特殊性和人类的智力障碍解决软件危机的途径解决软件危机的途径 -技术措施(方法和工具)技术措施(方法和工具)技术措施(方法和工具)技术措施(方法和工具)-组织管理措施组织管理措施组织管理措施组织管理措施第17页/共50页例例:美国美国IBMIBM公司在公司在19631963年至年至19661966年开发的年开发的IBM360IBM360机的操作系统。这一项目花了机的操作系统。这一项目花了50005000人一人一年的工作量,最多时有年的工作量,最多时有1000100
12、0人投入开发工作,人投入开发工作,写出了近写出了近100100万行源程序。万行源程序。.据统计,这个据统计,这个操作系统每次发行的新版本都是从前一版本中操作系统每次发行的新版本都是从前一版本中找出找出10001000个程序错误而修正的结果。个程序错误而修正的结果。.第18页/共50页 这个项目的负责人这个项目的负责人F.D.BrooksF.D.Brooks事后总结了他在组织开发过程中的沉痛教事后总结了他在组织开发过程中的沉痛教训时说:训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。陷得越深,最
13、后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷谁也没有料到问题竟会陷入这样的困境入这样的困境.”。IBM360IBM360操作系统的历史教训成为软件开发项目的典型操作系统的历史教训成为软件开发项目的典型事例为人们所记取。事例为人们所记取。Software Crisis !第19页/共50页 项目没有被很好地理解;计划不周,最终导致进项目没有被很好地理解;计划不周,最终导致进度拖延。度拖延。例例1.In the late 1960s,a bright-eyed yo
14、ung engineer*was chosen to“write”a computer program for an automated manufacturing application.The reason for his selection was simple.He was the only person in his technical group who had attended a computer programming seminar.He knew the ins and outs of assembler language and Fortran,but nothing
15、about software engineering and even less about project scheduling and tracking.*If youre wondering whether this story is autobiographical,it is!问题出在哪里?问题出在哪里?第20页/共50页His boss gave him the appropriate manuals and a verbal description of what had to be done.He was informed that the project must be co
16、mpleted in two months.He read the manuals,considered his approach,and began writing code.After two weeks,the boss called him into his office and asked how things were going.“Really great,”said the young engineer with youthful enthusiasm,“This was much simpler than I thought.Im probably close to 75 p
17、ercent finished.”The boss smiled.“Thats really terrific,”he said.He then told the young engineer to keep up the good work and plan to meet again in a weeks time.第21页/共50页A week later the boss called the engineer into his office and asked,“Where are we?”“Everythings going well,”said the youngster,“bu
18、t Ive run into a few small snags.Ill get them ironed out and be back on track soon.”“How does the deadline look?”the boss asked.“No problem,”said the engineer.“Im close to 90 percent complete.”If youve been working in the software world for more than a few years,you can finish the story.Itll come as
19、 no surprise that the young engineer stayed 90 percent complete for the entire project duration and only finished(with the help of others)one month late.第22页/共50页例例2:In the early 1980s,the United States Internal Revenue Service(IRS)hired Sperry Corporation to build an automated federal income tax fo
20、rm processing system.According to the Washington Post,the“system has proved inadequate to the workload,cost nearly twice what was expected and must be replaced soon”(Sawyer 1985).In 1985,an extra$90 million was needed to enhance the original$103 million worth of Sperry equipment.In addition,because
21、the problem prevented the IRS from returning refunds to taxpayers by the deadline,the IRS was forced to pay$40.2 million in interest and$22.3 million in overtime wages for its employees who were trying to catch up.第23页/共50页In 1996,the situation had not improved.The Los Angeles Times reported on Marc
22、h 29 that there was still no master plan for the modernization of IRS computers,only a six-thousand-page technical document.Congressman Jim Lightfoot called the project“a$4-billion fiasco that is floundering because of inadequate planning”(Vartabedian 1996).Myth:If we get behind schedule,we can add
23、more programmers and catch up.Reality:Software development is not a mechanistic process like manufacturing.In the words of Brooks,“adding people to a late software project makes it later.”第24页/共50页 没有充分的文档资料没有充分的文档资料(documentation)Myth:The only deliverable for a successful project is the working pro
24、gram.Reality:A working program is only one part of a software configuration that includes programs,documents,and data.Documentation forms the foundation for successful development and,more important,provides guidance for the software maintenance task.VITAL!人与人的人与人的交流交流比写程序困难得多。比写程序困难得多。Managers eval
25、uate,track progress,.Programmers communicate to each otherMaintainers 第25页/共50页 软件可靠性软件可靠性(reliability)(reliability)缺少度量的标准,质缺少度量的标准,质量无法保证。量无法保证。如何保证软件产品的质量,是非常复杂困难的如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件,如:问题。特别对于规模庞大的软件,如:.The software supporting the American space shuttle consists of 3 million lines
26、of code,including computers on the ground controlling the launch and the flight;there were one hundred thousand lines of code in the shuttle itself in 1985.President Reagans proposed Strategic Defense Initiative(SDI)is estimated to require 10 to 100 million lines of code.Many computer scientists and
27、 software engineers continue to believe there is no way to write and test the software to guarantee adequate reliability.第26页/共50页 软件难以维护软件难以维护(maintainability)(maintainability)不易升级不易升级(evolvability)(evolvability)Myth:Once we write the program and get it to work,our job is done.Reality:Someone once
28、said that“the sooner you begin writing code,the longer itll take you to get done.”Industry data indicate that between 50 and 70 percent of all effort expended on a program will be expended after it is delivered to the customer for the first time.第27页/共50页 Better management Different team organizatio
29、ns Better languages&tools Uniform coding conventions 必必须须意意识识到到:“软软件件”编编程程,它它有有自自己己的的生生命命周周期期 (life life cyclecycle)。大大型型软软件件系系统统的的开开发发与与其其它它工工程程项项目目如如建建造造桥桥梁梁、制制造造飞飞机机、轮轮船船等等的的开开发是同理的。发是同理的。“软件工程软件工程”(Software Engineering)NATO Conference,Garmisch,Germany,1968.解决问题的想法:解决问题的想法:第28页/共50页软件工程过程软件工程过程软件
30、规格说明:软件规格说明:规定软件的功能及规定软件的功能及其运行的限制其运行的限制软件开发:软件开发:产生满足规格说明的软产生满足规格说明的软件件软件确认:软件确认:确认软件能够完成客户确认软件能够完成客户提出的要求提出的要求软件演进:软件演进:为满足客户的变更要求,为满足客户的变更要求,软件必须在使用的过程中演进软件必须在使用的过程中演进第29页/共50页软件工程过程的特性软件工程过程的特性易理解性易理解性可见性可见性可支持性可支持性可接受性可接受性可靠性可靠性健壮性健壮性可维护性可维护性速度速度第30页/共50页软件生存期软件生存期 life cycle软件有一个孕育、诞生、成长、成软件有一
31、个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即熟、衰亡的生存过程。这个过程即为计算机软件的生存期为计算机软件的生存期软件生存期的六个步骤,即软件生存期的六个步骤,即制定计制定计划划、需求分析需求分析、设计设计、程序编码程序编码、测试测试及及运行维护运行维护第31页/共50页瀑布模型瀑布模型 第32页/共50页制定计划制定计划确定要开发软件系统的确定要开发软件系统的总目标总目标给出给出功能功能、性能性能、可靠性可靠性以及以及接口接口等方面的要求等方面的要求完成该软件任务的完成该软件任务的可行性研究可行性研究估计可利用的估计可利用的资源资源(硬件,软件,硬件,软件,人力等人力等)、成本成本、
32、效益效益、开发进度开发进度制定出完成开发任务的制定出完成开发任务的实施计划实施计划,连同可行性研究报告,提交管理部连同可行性研究报告,提交管理部门审查门审查第33页/共50页需求分析和定义需求分析和定义对用户提出的要求进行对用户提出的要求进行分析分析并给出并给出详细的定义详细的定义编写编写软件需求说明书软件需求说明书或或系统功能说系统功能说明书明书及及初步的系统用户手册初步的系统用户手册提交管理机构提交管理机构评审评审第34页/共50页软件设计软件设计概要设计概要设计 把各项需求转换成把各项需求转换成软软件的体系结构件的体系结构。结构中每一组成部。结构中每一组成部分都是意义明确的模块,每个模块
33、分都是意义明确的模块,每个模块都和某些需求相对应都和某些需求相对应详细设计详细设计 对每个模块要完成的对每个模块要完成的工作进行具体的描述,为源程序编工作进行具体的描述,为源程序编写打下基础写打下基础编写编写设计说明书设计说明书,提交,提交评审评审。第35页/共50页程序编写程序编写把软件设计转换成计算机可以接受把软件设计转换成计算机可以接受的程序代码的程序代码,即写成以某一种特定,即写成以某一种特定程序设计语言表示的程序设计语言表示的“源程序清单源程序清单”写出的程序应当是结构良好、清晰写出的程序应当是结构良好、清晰易读的,且与设计相一致的易读的,且与设计相一致的第36页/共50页软件测试软
34、件测试单元测试单元测试,查找各模块在功能和结,查找各模块在功能和结构上存在的问题并加以纠正构上存在的问题并加以纠正组装测试组装测试,将已测试过的模块按一,将已测试过的模块按一定顺序组装起来定顺序组装起来按规定的各项需求,逐项进行按规定的各项需求,逐项进行有效有效性测试性测试,决定已开发的软件是否合,决定已开发的软件是否合格,能否交付用户使用格,能否交付用户使用第37页/共50页运行维护运行维护改正性维护改正性维护 运行中发现了软件运行中发现了软件中的错误需要修正中的错误需要修正适应性维护适应性维护 为了适应变化了的为了适应变化了的软件工作环境,需做适当变更软件工作环境,需做适当变更完善性维护完
35、善性维护 为了增强软件的功为了增强软件的功能需做变更能需做变更第38页/共50页软件生存期模型软件生存期模型软件生存期模型是跨越整个生存期软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架全部过程、活动和任务的结构框架 瀑布模型瀑布模型 演化模型演化模型 螺旋模型螺旋模型 喷泉模型喷泉模型 智能模型智能模型第39页/共50页第40页/共50页演化模型演化模型由于在项目开发的初始阶段人们对由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发而使得开发项目难于做
36、到一次开发成功,出现返工再开发在所难免。成功,出现返工再开发在所难免。做两次做两次第一次只是试验开发,其目标只是第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求在于探索可行性,弄清软件需求第二次则在此基础上获得较为满意第二次则在此基础上获得较为满意的软件产品的软件产品第41页/共50页螺旋模型螺旋模型螺旋模型沿着螺线旋转,在四个象螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:限上分别表达四个方面的活动,即:制定计划制定计划确定软件目标,选定确定软件目标,选定实施方案,弄清项目开发的限制实施方案,弄清项目开发的限制风险分析风险分析分析所选方案,考虑分析所选方案,考虑如何
37、识别和消除风险如何识别和消除风险实施工程实施工程实施软件开发实施软件开发客户评估客户评估评价开发工作,提出评价开发工作,提出修正建议修正建议第42页/共50页 第43页/共50页喷泉模型喷泉模型对象驱动对象驱动迭代迭代 重复重复 演进演进无间隙无间隙 各阶段间无明显界限各阶段间无明显界限第44页/共50页第45页/共50页软件工程的定义软件工程的定义Boehm:运用现代科学技术知识来设运用现代科学技术知识来设计并构造计算机程序及为开发、运行和计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料维护这些程序所必需的相关文件资料IEEE:软件工程是开发、运行、维护软件工程是开发、运行
38、、维护和修复软件的系统方法和修复软件的系统方法Fritz Bauer:建立并使用完善的工程建立并使用完善的工程化原则,以较经济的手段获得能在实际化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方机器上有效运行的可靠软件的一系列方法法第46页/共50页软件工程三要素:软件工程三要素:方法、工具和过程方法、工具和过程软件工程方法为软件开发提供了软件工程方法为软件开发提供了“如何做如何做”的技术的技术软件工具为软件工程方法提供了软件工具为软件工程方法提供了自动的或半自动的软件支撑环境自动的或半自动的软件支撑环境第47页/共50页软件工程过程定义了软件工程过程定义了:方法使用的顺序方法使用的顺序 要求交付的文档资料要求交付的文档资料 为保证质量和适应变化所需要的为保证质量和适应变化所需要的管理管理 软件开发各个阶段完成的里程碑软件开发各个阶段完成的里程碑第48页/共50页软件工程项目的基本目标软件工程项目的基本目标付出较低的开发成本付出较低的开发成本达到要求的软件功能达到要求的软件功能取得较好的软件性能取得较好的软件性能开发的软件易于移植开发的软件易于移植需要较低的维护费用需要较低的维护费用能按时完成开发工作,及时交付使能按时完成开发工作,及时交付使用用第49页/共50页感谢您的观看。第50页/共50页