软件工程导论(ppt 76页)36051.pptx
-
资源ID:87667002
资源大小:897.85KB
全文页数:77页
- 资源格式: PPTX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
软件工程导论(ppt 76页)36051.pptx
软软 件件 工工 程程Software Engineering主讲:主讲:wangzhenE-mail: 电话:电话:86798113 1软件工程软件工程软软件件业业是是决决定定21 21世世纪纪国国际际竞竞争争地地位位的的战战略略性产业,是信息时代的朝阳产业。性产业,是信息时代的朝阳产业。1.1.软软件件产产业业是是信信息息产产业业的的核核心心,是是国国际际竞竞争的焦点和战略制高点。争的焦点和战略制高点。2.2.软件关系到国家政治、经济和社会的安软件关系到国家政治、经济和社会的安全及民族文化的发扬光大。全及民族文化的发扬光大。3.3.发展软件产业对优化我国产业结构、提发展软件产业对优化我国产业结构、提高经济运行质量具有极其重要的作用。高经济运行质量具有极其重要的作用。4.4.软软件件是是国国民民经经济济建建设设中中诸诸多多关关键键技技术术的的基础。基础。2 软件工程软件工程 近二十年来计算机软件已经成为现代科学近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门、研究和解决工程问题的基础,以及管理部门、生产部门、服务行业中的关键因素,渗透到了生产部门、服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少的一部分。各个领域,成为当今世界不可缺少的一部分。展望二十一世纪,软件仍将成为驱动任何事展望二十一世纪,软件仍将成为驱动任何事情情,从基础教育到遗传工程取得新进展的动力。从基础教育到遗传工程取得新进展的动力。学习研究工程化的软件开发方法,使开发学习研究工程化的软件开发方法,使开发过程更加规范,是我们学习的目标和动力。过程更加规范,是我们学习的目标和动力。3软软 件件 工工 程程软件工程导论(第四版)软件工程导论(第四版)张海藩张海藩 清华大学出版社清华大学出版社(2003)教教材材4软软 件件 工工 程程 实用软件工程实用软件工程(第二版)(第二版)郑人杰郑人杰 殷人昆殷人昆 陶永雷陶永雷 清华大学出版社(清华大学出版社(1996)软件工程软件工程-实践者的研究方法实践者的研究方法(英译版(英译版第五版)第五版)Roger S.Pressman机械工机械工业出版社业出版社参考书目参考书目5软软 件件 工工 程程课程评分方法课程评分方法 大作业大作业 30%+期末考试期末考试 70%=总评总评 100%其它其它作业仅供参考。可通过作业仅供参考。可通过e-mail递交递交考勤仅供参考,若抽查考勤仅供参考,若抽查3次缺勤,次缺勤,总成绩不及格总成绩不及格6学生管理系统学生管理系统StudentMisvv学生管理系统学生管理系统针对的用户是学校学生针对的用户是学校学生管理部门。管理部门。相应的需求有:相应的需求有:FF 能够存储一定数量的学生信息能够存储一定数量的学生信息,并方便有并方便有效的进行相应的学生数据操作和管理,主效的进行相应的学生数据操作和管理,主要包括:要包括:大作业大作业7 学籍管理学籍管理学籍管理学籍管理学生基本信息的导入、录入、删除及修改。学生基本信息的导入、录入、删除及修改。学生基本信息的导入、录入、删除及修改。学生基本信息的导入、录入、删除及修改。学生辅助信息学生辅助信息学生辅助信息学生辅助信息(综合测评、奖励、处分等综合测评、奖励、处分等综合测评、奖励、处分等综合测评、奖励、处分等)的录入、删除的录入、删除的录入、删除的录入、删除及修改。及修改。及修改。及修改。学生贷款管理(录入、删除及修改。查询)学生贷款管理(录入、删除及修改。查询)学生贷款管理(录入、删除及修改。查询)学生贷款管理(录入、删除及修改。查询)学生保险管理(录入、删除及修改。查询)学生保险管理(录入、删除及修改。查询)学生保险管理(录入、删除及修改。查询)学生保险管理(录入、删除及修改。查询)学生就业管理(录入、删除及修改。查询)学生就业管理(录入、删除及修改。查询)学生就业管理(录入、删除及修改。查询)学生就业管理(录入、删除及修改。查询)学生勤工助学管理(录入、删除及修改。查询)学生勤工助学管理(录入、删除及修改。查询)学生勤工助学管理(录入、删除及修改。查询)学生勤工助学管理(录入、删除及修改。查询)学生各种信息的多关键字检索查询。学生各种信息的多关键字检索查询。学生各种信息的多关键字检索查询。学生各种信息的多关键字检索查询。8FF 能够对需要的统计结果提供打印输出。能够对需要的统计结果提供打印输出。FF 能够提供一定的安全机制,提供数据信能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息授权访问,防止随意删改,同时提供信息备份的服务。息备份的服务。v 可选题目:可选题目:-商业管理系统的分析、设计与实现商业管理系统的分析、设计与实现-教务管理系统的分析、设计与实现教务管理系统的分析、设计与实现-订票管理系统的分析、设计与实现订票管理系统的分析、设计与实现v 可以自选题目可以自选题目,但需要教师认可但需要教师认可9应提交的文档应提交的文档n n软件需求规格说明书软件需求规格说明书n n软件设计规格说明书软件设计规格说明书n n用户安装及使用手册用户安装及使用手册n n系统测试计划系统测试计划n n演示程序演示程序n n其它其它10软软 件件 工工 程程目的目的 体验软件工程各阶段的主要工作,特别体验软件工程各阶段的主要工作,特别注意吸取教训;注意吸取教训;学会与他人合作,培养团队精神,单干学会与他人合作,培养团队精神,单干户将得不到成绩。户将得不到成绩。分组:分组:班长组织班长组织每组每组6-8人,选一个组长。人,选一个组长。组长负责:组织、分工、安排进度、作业提交等。组长负责:组织、分工、安排进度、作业提交等。作业提交作业提交:每组一个每组一个,但必须注明分工但必须注明分工.110.软件概论软件概论什么是软件什么是软件软件的分类软件的分类软件的发展软件的发展1.软件危机软件危机软件危机的表现软件危机的表现软件危机的原因软件危机的原因2.软件工程软件工程软件工程软件工程软件工程的目的和要求软件工程的目的和要求第一章第一章 软件工程学概述软件工程学概述12软件软件是计算机系统中与硬件相互依存的另是计算机系统中与硬件相互依存的另一部分,它是包括一部分,它是包括程序程序,数据数据及其相关及其相关文文档档的完整集合的完整集合程序程序是按事先设计的功能和性能要求执行是按事先设计的功能和性能要求执行的的指令序列指令序列数据数据是使程序能正常操纵信息的是使程序能正常操纵信息的数据结构数据结构文档文档是与程序开发,维护和使用有关的是与程序开发,维护和使用有关的图图文材料文材料0.软件概论软件概论13软件的特点软件的特点软件是一种软件是一种逻辑实体逻辑实体,而不是具体的物理,而不是具体的物理实体。因而它具有抽象性实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程软件的生产与硬件不同,在它的开发过程中中没有明显的制造过程没有明显的制造过程在软件的运行和使用期间,在软件的运行和使用期间,没有硬件那样没有硬件那样的机械磨损,老化问题的机械磨损,老化问题0.软件概论软件概论140.软件概论软件概论15软件的开发和运行常受到计算机系统的限制,软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性对计算机系统有着不同程度的依赖性软件的开发至今软件的开发至今尚未完全摆脱手工艺的开发尚未完全摆脱手工艺的开发方式方式软件本身是复杂的软件本身是复杂的实际问题的复杂性实际问题的复杂性程序逻辑结构的复杂性程序逻辑结构的复杂性 软件成本相当昂贵软件成本相当昂贵相当多的软件工作涉及到社会因素相当多的软件工作涉及到社会因素0.软件概论软件概论160.软件概论软件概论17软软件的分类件的分类按软件的功能进行划分:按软件的功能进行划分:系统软件系统软件 使计算机系统各个部件、相关软件和数据协调、使计算机系统各个部件、相关软件和数据协调、高效地工作的软件高效地工作的软件0.软件概论软件概论操作系统操作系统数据库管理系统数据库管理系统设备驱动程序设备驱动程序通信处理程序等通信处理程序等18支撑软件支撑软件 协助用户开发软件的工具软件协助用户开发软件的工具软件0.软件概论软件概论文本编辑程序文本编辑程序文件格式化程序文件格式化程序磁盘向磁带进行数据传输的程序磁盘向磁带进行数据传输的程序程序库系统程序库系统支持需求分析、设计、实现、测试和支支持需求分析、设计、实现、测试和支持管理的软件持管理的软件19应用软件应用软件0.软件概论软件概论商业数据处理软件商业数据处理软件工程与科学计算软件工程与科学计算软件计算机辅助设计制造软件计算机辅助设计制造软件系统仿真软件系统仿真软件智能产品嵌入软件智能产品嵌入软件医疗、制药软件医疗、制药软件事务管理、办公自动化软件事务管理、办公自动化软件计算机辅助教学软件计算机辅助教学软件20按软件规模进行划分:按软件规模进行划分:类别类别 参加人员数参加人员数 研制期限研制期限 源程序行数源程序行数 微型微型 1 14周周 0.5k 0.软件概论软件概论 小型小型 1 16月月 1k2k 数值计算或数据处理.通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。中型中型 25 12年年 5k50k 应用程序和系统程序。软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。系统的软件工程方法是完全必要的。21 大型大型 520 23年年 50k100k 编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。0.软件概论软件概论 甚大型甚大型 1001000 45年年 1M(=1024k)若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。极大型极大型 20005000 510年年 1M10M 军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。221.软件危机软件危机(SoftwareCrisis)在在6060年代中期以前年代中期以前:个体化软件开发方法.用户 程序员(编写者=使用者),无文档资料在在6060年代中期年代中期-70-70年代中期年代中期:软件作坊,产品软件.个体化软件开发方法.软件危机:软件危机:在计算机软件开发、维护过程中所遇到的一系列严重问题。231.软件危机软件危机例例:美国美国IBM公司在公司在1963年至年至1966年开发的年开发的IBM360机的操作系统。这一项目花了机的操作系统。这一项目花了5000人一人一年的工作量,最多时有年的工作量,最多时有1000人投入开发工作,人投入开发工作,写出了近写出了近100万行源程序。万行源程序。.据统计,这个据统计,这个操作系统每次发行的新版本都是从前一版本中操作系统每次发行的新版本都是从前一版本中找出找出1000个程序错误而修正的结果。个程序错误而修正的结果。.在程序运行时发现的错误,在程序运行时发现的错误,必须设法改正 用户有新的需求,用户有新的需求,必须相应地修改程序 硬件或硬件或OSOS的更新,的更新,通常需要相应地修改程序241.软件危机软件危机 这个项目的负责人这个项目的负责人F.D.BrooksF.D.Brooks事后总结了他事后总结了他在组织开发过程中的沉痛教训时说:在组织开发过程中的沉痛教训时说:“.“.正像正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,程序设计工作正像这样一个泥潭,.一批批程一批批程序员被迫在泥潭中拼命挣扎,序员被迫在泥潭中拼命挣扎,.谁也没有料到谁也没有料到问题竟会陷入这样的困境问题竟会陷入这样的困境.”.”。IBM360IBM360操作系操作系统的历史教训成为软件开发项目的典型事例为人们统的历史教训成为软件开发项目的典型事例为人们所记取。所记取。SoftwareCrisis!251.软件危机软件危机 项目没有被很好地理解;计划不周,最终导致项目没有被很好地理解;计划不周,最终导致进度拖延、成本超支。进度拖延、成本超支。软件危机的表现:软件危机的表现:计划很难制定致使经费预算常常突破:由于缺乏软件开发的经验,主观盲目地制定计划,执行起来和实际情况有很大差距;对于工作量估计不准确,进度计划无法遵循,开发工作完成的期限一拖再拖。已经拖延了的项目,为了加快进度而增加人力,反而更加延误了时间。项目没有被很好地理解:“闭门造车闭门造车闭门造车闭门造车”。需求在开发的初期阶段提得不够明确,或是未能得到确切的表达。软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,造成开发后期矛盾的集中暴露。然而这时问题既难于分析,也难于挽回。261.软件危机软件危机 没有充分的文档资料没有充分的文档资料(documentation)“软件软件”程序,人与人的程序,人与人的交流交流比写程序困比写程序困难得多。难得多。软件可靠性软件可靠性(reliability)缺少度量的标准,质量无缺少度量的标准,质量无法保证。法保证。如何保证软件产品的质量,是非常复杂困难的如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件,如:航天问题。特别对于规模庞大的软件,如:航天.271.软件危机软件危机 软件难以维护软件难以维护(maintainability)不易升级不易升级(evolvability)开发过程没有统一的、公认的方法论和规范指导,加之不重视文字资料工作,资料很不完整;忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。(5)未能充分做好检测工作未能充分做好检测工作(test)在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。28软件危机产生的原因:软件危机产生的原因:(1)软件自身的特点软件自身的特点(2)在开发和维护过程中,采用了错误的方法在开发和维护过程中,采用了错误的方法和技术和技术v早期的个体化开发特点早期的个体化开发特点v急于求成,仓促上阵急于求成,仓促上阵我们认为的问题我们认为的问题=用户要解决的问题?用户要解决的问题?v认为软件认为软件=编程、运行;轻视软件维护编程、运行;轻视软件维护编程工作量编程工作量10-20%软件维护工作量软件维护工作量55-70%v没有软件生命周期概念没有软件生命周期概念1.软件危机软件危机29高中低早中后变化出现的时期代价v软件开发过程中,引入同一变动软件开发过程中,引入同一变动付出的代价随时间变化趋势付出的代价随时间变化趋势1.软件危机软件危机30改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)31对软件的常见误解对软件的常见误解用户的误解开发人员的误解管理者的误解1.软件危机软件危机32误解误解先对软件需求做一般的说明,先对软件需求做一般的说明,以后再逐步明确就可以了以后再逐步明确就可以了.需求本身就是不断变化的,软需求本身就是不断变化的,软件容易改变可以很快调整适应件容易改变可以很快调整适应这种变化这种变化.现实现实l软件需求不明确是造成软件软件需求不明确是造成软件开发费用增加和延时交货的开发费用增加和延时交货的主要原因主要原因.l软件开发费用随着开发阶段软件开发费用随着开发阶段的后移而大大增加的后移而大大增加.1x1.5-6x60-100 x软件开发软件开发费用费用设计阶段设计阶段开发阶段开发阶段维护阶段维护阶段用户的误解1.软件危机软件危机33开发人员的误解误解误解l一旦程序开发完毕工作正常,一旦程序开发完毕工作正常,我的任务就完成了我的任务就完成了l在程序工作之前,无法顾及软在程序工作之前,无法顾及软件的质量问题件的质量问题.l对于一个成功的项目来说,唯对于一个成功的项目来说,唯一能够提供的就是可以工作的一能够提供的就是可以工作的程序程序.现实现实一个软件的一个软件的50%-70%的工作的工作量耗在软件交付使用以后量耗在软件交付使用以后.对于某些错误软件审查比软件对于某些错误软件审查比软件测试更加有效测试更加有效.一个完整的软件要包括程序、一个完整的软件要包括程序、各种文件和各种数据各种文件和各种数据.1.软件危机软件危机34管理者的误解管理者的误解误解误解书上已经有各种软件开发的书上已经有各种软件开发的标准,拿来用就是了标准,拿来用就是了.已经有足够的软件开发工具已经有足够的软件开发工具可供使用可供使用.一旦项目的程序员不够可以一旦项目的程序员不够可以随时增加随时增加.现实现实l书上是有各种软件开发的标准,书上是有各种软件开发的标准,但不是过时就是不适用但不是过时就是不适用.l软件工具不是一拿来就能用的软件工具不是一拿来就能用的.l“项目后期增加程序员会使项项目后期增加程序员会使项目的完成更加推后目的完成更加推后.-Brooks1.软件危机软件危机35 按工程化的原则和方法组织软件开发是软件按工程化的原则和方法组织软件开发是软件开发的一个主要出路。开发的一个主要出路。50年代到60年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。写出的程序通篇充满了程序技巧,这些程序很难被别人看懂。然而随着计算机的广泛使用,人们逐渐抛弃了这种观点。对于稍大的、并需要较长时间为许多人使用的程序,人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。多个软件人员分工合作、共同完成;只有在项目的总体要求和技术规范的约束下充分发挥和施展。n解决问题的出路解决问题的出路1.软件危机软件危机361.软件危机软件危机 Better management Different team organizations Better languages&tools Uniform coding conventions 技术技术技术技术+管理管理管理管理 必必须须意意识识到到:“软软件件”编编程程,它它有有自自己己的的生生命命周周期期(life cycle)。大大型型软软件件系系统统的的开开发发与与其其它它工工程程项项目目如如建建造造桥桥梁梁、制制造造飞飞机机、轮轮船船等的开发是同理的。等的开发是同理的。“软件工程软件工程”(SoftwareEngineering)NATOConference,Garmisch,Germany,1968.解决问题的想法:解决问题的想法:371.软软件工程的定义件工程的定义 BoehmBoehm:运用现代科学技术知识来设计并构运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料程序所必需的相关文件资料 IEEEIEEE:软件工程是开发、运行、维护和修软件工程是开发、运行、维护和修复软件的系统方法复软件的系统方法 Fritz BauerFritz Bauer:建立并使用完善的工程化原建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法有效运行的可靠软件的一系列方法 经典定义(经典定义(P5P5)2.软件工程软件工程(SoftwareEngineering)38软件工程 一种层次化技术一种层次化技术工具工具方法方法过程过程质量焦点质量焦点Software engineering layersSoftware engineering layers软件工程三个要素:软件工程三个要素:方法、工具、过程方法、工具、过程39软件工程三要素软件工程三要素方法、工具和过程方法、工具和过程支持软件工程的根基就在于支持软件工程的根基就在于对质量的关注对质量的关注。软件方法软件方法为软件开发提供了为软件开发提供了“如何做如何做”的技术的技术软件工具软件工具为软件工程方法提供了自动的或半自动为软件工程方法提供了自动的或半自动的软件支撑环境的软件支撑环境软件工程过程定义了软件工程过程定义了:方法使用的顺序方法使用的顺序 要求交付的文档资料要求交付的文档资料 为保证质量和适应变化所需要的管理为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑软件开发各个阶段完成的里程碑2.软件工程软件工程40软软件工程项目的基本目标件工程项目的基本目标付出较低的开发成本付出较低的开发成本达到要求的软件功能达到要求的软件功能取得较好的软件性能取得较好的软件性能开发的软件易于移植开发的软件易于移植需要较低的维护费用需要较低的维护费用能按时完成开发工作,及时交付使用能按时完成开发工作,及时交付使用2.软件工程软件工程41 软件开发项目力图在以上目标的冲突中软件开发项目力图在以上目标的冲突中取得一定程度的平衡。取得一定程度的平衡。2.软件工程软件工程42软件工程过程软件工程过程软件规格说明软件规格说明:规定软件的功能及其运行:规定软件的功能及其运行的限制的限制软件开发软件开发:产生满足规格说明的软件:产生满足规格说明的软件软件确认软件确认:确认软件能够完成客户提出的:确认软件能够完成客户提出的要求要求软件演进软件演进:为满足客户的变更要求,软件:为满足客户的变更要求,软件必须在使用的过程中演进必须在使用的过程中演进2.软件工程软件工程43软件工程过程的特性软件工程过程的特性易理解性易理解性可见性可见性可支持性可支持性可接受性可接受性可靠性可靠性健壮性健壮性可维护性可维护性速度速度2.软件工程软件工程44软件生存期软件生存期(或生命周期或生命周期)(life cycle)(life cycle)软件有一个孕育、诞生、成长、成熟、衰亡的软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期生存过程。这个过程即为计算机软件的生存期2.软件工程软件工程三个阶段:定义、开发、维护三个阶段:定义、开发、维护.八个步骤:问题定义、可行性研究、需求分析;八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合总体设计、详细设计、编码与单元测试、综合测试;运行维护测试;运行维护452、原理、原理(Principles):(P.7-9)用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理 项目概要计划项目概要计划 里程碑计划里程碑计划 项目控制计项目控制计划划 产品控制计划产品控制计划 验证计划验证计划 运运行维护计划行维护计划开发小组的成员应该少而精开发小组的成员应该少而精采用现代程序设计技术采用现代程序设计技术结果应能清楚地审查结果应能清楚地审查setstandards承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性2.软件工程软件工程坚持进行阶段评审坚持进行阶段评审实行严格的产品控制实行严格的产品控制基准配置管理基准配置管理(Baselineconfigurationmanagement)463、生命周期各阶段的基本任务、生命周期各阶段的基本任务(Principles):2.软件工程软件工程阶段阶段主要问题主要问题结束标准结束标准问题定义问题定义问题定义问题定义问题是什么?问题是什么?问题是什么?问题是什么?关于规模和目标的报关于规模和目标的报关于规模和目标的报关于规模和目标的报告书告书告书告书可行性研究可行性研究可行性研究可行性研究有可行的解吗?有可行的解吗?有可行的解吗?有可行的解吗?系统的高层逻辑模型:系统的高层逻辑模型:系统的高层逻辑模型:系统的高层逻辑模型:数据流图(数据流图(数据流图(数据流图(DFDDFDDFDDFD)成本成本成本成本/效益分析效益分析效益分析效益分析需求分析需求分析需求分析需求分析系统必须做什么系统必须做什么系统必须做什么系统必须做什么?系统的逻辑模型:系统的逻辑模型:系统的逻辑模型:系统的逻辑模型:数据流图(数据流图(数据流图(数据流图(DFDDFDDFDDFD)数据字典数据字典数据字典数据字典 算法描述算法描述算法描述算法描述47阶段阶段主要问题主要问题结束标准结束标准总体设计总体设计总体设计总体设计概括地说,应概括地说,应概括地说,应概括地说,应该如何解决这该如何解决这该如何解决这该如何解决这个问题?个问题?个问题?个问题?可能的解法:可能的解法:可能的解法:可能的解法:系统流程图系统流程图系统流程图系统流程图 成本成本成本成本/效益分析效益分析效益分析效益分析推荐的系统结构:推荐的系统结构:推荐的系统结构:推荐的系统结构:层次图层次图层次图层次图/结构图结构图结构图结构图详细设计详细设计详细设计详细设计怎样具体地实怎样具体地实怎样具体地实怎样具体地实现这个系统?现这个系统?现这个系统?现这个系统?编码规格说明:编码规格说明:编码规格说明:编码规格说明:HIPO HIPO HIPO HIPO图(层次图图(层次图图(层次图图(层次图+输入输入输入输入/处理处理处理处理/输出图)输出图)输出图)输出图)或或或或PDLPDLPDLPDL图(过程设计语言)图(过程设计语言)图(过程设计语言)图(过程设计语言)2.软件工程软件工程48阶段阶段主要问题主要问题结束标准结束标准编码和编码和编码和编码和单元测试单元测试单元测试单元测试正确的程序模块正确的程序模块正确的程序模块正确的程序模块源程序清单源程序清单源程序清单源程序清单单元测试方案、结果单元测试方案、结果单元测试方案、结果单元测试方案、结果综合测试综合测试综合测试综合测试符合要求的软件符合要求的软件符合要求的软件符合要求的软件综合测试方案、结果综合测试方案、结果综合测试方案、结果综合测试方案、结果 集成测试集成测试集成测试集成测试 验收测试验收测试验收测试验收测试完整一致的软件配置完整一致的软件配置完整一致的软件配置完整一致的软件配置2.软件工程软件工程49阶段阶段主要问题主要问题结束标准结束标准维护维护维护维护持久地满足用户持久地满足用户持久地满足用户持久地满足用户需要需要需要需要维护记录维护记录维护记录维护记录四类维护:四类维护:四类维护:四类维护:改正性维护:改正性维护:改正性维护:改正性维护:运行中发现错误运行中发现错误运行中发现错误运行中发现错误适应性维护适应性维护适应性维护适应性维护 :适应变化软件环境适应变化软件环境适应变化软件环境适应变化软件环境完善性维护:完善性维护:完善性维护:完善性维护:用户需求改进用户需求改进用户需求改进用户需求改进/扩充扩充扩充扩充预防性维护预防性维护预防性维护预防性维护2.软件工程软件工程50关键问题:关键问题:“要解决的问题是什么?要解决的问题是什么?”n n 问题定义问题定义2.软件工程软件工程确定问题的性质确定问题的性质确定要开发软件系统的目标、规模确定要开发软件系统的目标、规模与用户交互,提交文档(性质、目标、规模)与用户交互,提交文档(性质、目标、规模)时间最短:时间最短:1天天51关键问题:关键问题:“该问题有行得通的解决办法吗?该问题有行得通的解决办法吗?”n n 可行性研究可行性研究2.软件工程软件工程简化的系统分析、设计简化的系统分析、设计导出系统的高层逻辑模型(数据流图)导出系统的高层逻辑模型(数据流图)目标、规模更具体目标、规模更具体主要任务:成本主要任务:成本/效益分析效益分析 形成可行性研究报告,提交管理部门审查形成可行性研究报告,提交管理部门审查52关键问题:关键问题:“目标系统必须做什么?目标系统必须做什么?”n n 需求分析需求分析2.软件工程软件工程确定系统必须具备的功能确定系统必须具备的功能与用户充分交互,沟通与用户充分交互,沟通提出用户确认的系统逻辑模型(数据流图、数提出用户确认的系统逻辑模型(数据流图、数据字典、简要的算法)据字典、简要的算法)编写软件需求说明书或系统功能说明书及初步编写软件需求说明书或系统功能说明书及初步的系统用户手册,提交管理机构评审的系统用户手册,提交管理机构评审53关键问题:关键问题:“概括地说,应该如何解决这个问题?概括地说,应该如何解决这个问题?”n n 总体设计(或概要设计)总体设计(或概要设计)2.软件工程软件工程确定人机工作范围确定人机工作范围多方案的选择:多方案的选择:低成本低成本中等成本中等成本高成本高成本设计软件结构(模块)设计软件结构(模块)描述:结构图描述:结构图/层次图层次图编写设计说明书,提交评审。编写设计说明书,提交评审。54关键问题:关键问题:“应该怎样具体地实现这个系统?应该怎样具体地实现这个系统?”n n 详细设计详细设计2.软件工程软件工程对每个模块要完成的工作进行具体的描述,设对每个模块要完成的工作进行具体的描述,设计出程序的详细规格说明,为源程序编写打下计出程序的详细规格说明,为源程序编写打下基础基础描述:描述:HIPO图(层次图图(层次图+输入输入/处理处理/输出图)输出图)或或PDL语言(过程设计语言)语言(过程设计语言)编写详细设计说明书,提交评审。编写详细设计说明书,提交评审。55关键问题:把软件设计转换成计算机可以接受关键问题:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定的程序代码,即写成以某一种特定程序设计语程序设计语言言表示的表示的“源程序清单源程序清单”n n 编码和单元测试编码和单元测试2.软件工程软件工程程序应正确、容易理解程序应正确、容易理解(结构良好、清晰易读结构良好、清晰易读)、容易维护、容易维护测试每一模块(测试每一模块(功能、结构功能、结构)提交提交“源程序清单源程序清单”56关键任务:通过各种测试使软件达到预定要求关键任务:通过各种测试使软件达到预定要求n n 综合测试综合测试2.软件工程软件工程测试类型:集成、验收测试类型:集成、验收集成测试:将已测试过的模块按一定顺序组装集成测试:将已测试过的模块按一定顺序组装起来,进行测试起来,进行测试 用户验收测试:按规定的各项需求,逐项进行用户验收测试:按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否有效性测试,决定已开发的软件是否合格,能否交付用户使用交付用户使用 提交文档:测试计划、详细测试方案、测试结果提交文档:测试计划、详细测试方案、测试结果57关键任务:通过各种维护使系统持久地满足用关键任务:通过各种维护使系统持久地满足用户需要户需要四类维护:四类维护:改正性维护:改正性维护:运行中发现了软件的错误需要修正运行中发现了软件的错误需要修正适应性维护适应性维护:为了适应变化了的软件工作环境,:为了适应变化了的软件工作环境,需做适当变更需做适当变更完善性维护:完善性维护:为了增强软件的功能需做变更(用为了增强软件的功能需做变更(用户需求改进或扩充)户需求改进或扩充)预防性维护:为将来的维护做准备预防性维护:为将来的维护做准备记录维护活动记录维护活动n n 软件维护软件维护2.软件工程软件工程58软软件生存期模型件生存期模型软件生存期模型软件生存期模型是跨越整个生存期的系统开发、是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的运作和维护所实施的全部过程、活动和任务的结结构框架构框架瀑布模型瀑布模型快速原型模型快速原型模型增量模型增量模型 螺旋模型螺旋模型2.软件工程软件工程软件工程过程定义了软件工程过程定义了:方法使用的顺序方法使用的顺序 要求交付的文档资料要求交付的文档资料 为保证质量和适应变化所需要为保证质量和适应变化所需要的管理的管理 软件开发各个阶段完成的里程软件开发各个阶段完成的里程碑碑591.瀑布模型(线形顺序模型线形顺序模型)可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试定义定义阶段阶段开开发发阶阶段段维护阶段维护阶段2.软件工程软件工程602.软件工程软件工程 顺序性、依赖性顺序性、依赖性 推迟程序的物理实现推迟程序的物理实现 质量保证的观点质量保证的观点 阶段文档与评阶段文档与评审的要求,利于尽早发现错误。审的要求,利于尽早发现错误。每个阶段必须完成规定的文档每个阶段必须完成规定的文档;每个阶段结束前完成文档审查每个阶段结束前完成文档审查,及早改正错误。及早改正错误。特特点点612.原型模型(快速成型模型)建造建造/修改修改 原型原型用户测试用户测试运行原型运行原型 听取用听取用 户意见户意见原型范型原型范型原型范型原型范型2.软件工程软件工程62采用原型模型的软件生存周期分析定义分析定义系统需求系统需求生成生成原型原型系统系统设计设计程序程序设计设计编码编码测试测试运运 行行和维护和维护原型化原型化含原型化的含原型化的软件生存期软件生存期633.演化模型643.1 增量模型(递增模型)先完成一个系统子集的开发,先完成一个系统子集的开发,再按同样的开发步骤增加功能再按同样的开发步骤增加功能 (系统子集系统子集),),如此递增下去直至满如此递增下去直至满足全部系统需求。足全部系统需求。系统的总体设计在初始子集设计系统的总体设计在初始子集设计阶段就应作出设想。阶段就应作出设想。65分析分析 增量模型设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 分析分析 设计设计 编码编码测试测试 增量增量增量增量1 11 1增量增量增量增量2 22 2增量增量增量增量3 33 3增量增量增量增量n nn n 增量增量增量增量1 11 1交付客户交付客户交付客户交付客户 增量增量增量增量2 22 2交付客户交付客户交付客户交付客户 增量增量增量增量3 33 3交付客户交付客户交付客户交付客户 增量增量增量增量n nn n交付客户交付客户交付客户交付客户日历时间日历时间日历时间日历时间.663.2 螺旋模型风险风险分析分析工程工程实施实施用户通信用户通信用户用户评估评估产品维护项目产品维护项目产品维护项目产品维护项目产品增强项目产品增强项目产品增强项目产品增强项目新产品开发项目新产品开发项目新产品开发项目新产品开发项目概念开发项目概念开发项目概念开发项目概念开发项目计划计划计划计划建造及发布建造及发布建造及发布建造及发布67“基于版本发布基于版本发布”的特的特点点V1.01.0功功能能时间时间时间时间V2.02.0V1.11.168Trade-off Decision(折中决定折中决定)可可靠靠性性发布日期发布日期功功能能最优最优约束范围约束范围可接受可接受正确的正确的正确的正确的Trade-offTrade-off 决定决定决定决定694.面向对象模型704.1 喷泉模型进一步开发进一步开发实现和集成阶段实现和集成阶段运行状态运行状态实现阶段实现阶段面向对象设计阶段面向对象设计阶段计划阶段计划阶段面向对象分析阶段面向对象分析阶段需求阶段需求阶段维护期维护期71喷泉模型特点 主要用于支持面向对象开发主要用于支持面向对象开发过程体现了软件创建所固有的过程体现了软件创建所固有的迭代和无间隙的特征迭代和无间隙的特征724.2 4.2 可重用部件组装模型可重用部件组装模型使用重用技术的软件工程模型使用重用技术的软件工程模型构件构件(components):可重用的软件成份可重用的软件成份可复用性可复用性(Reusability)(可重用性)(可重用性)集成化软件开发环境集成化软件开发环境(ISEE)73可重用部件组装模型系统系统A A的的软件构成软件构成系统系统C C的的软件构成软件构成系统系统B B的的软件构成软件构成可重用可重用部部 件件 可重用可重用 部部 件件74 软件生产线应用构件应用构件提取车间提取车间 应用应用构件库构件库构件生构件生产车间产车间 构件库构件库组装组装车间车间领域领域 1 1领域领域 2 2应用应用系统系统.1 12 23 34 41 1基础构件,基础构件,2 2功能构件功能构件