软件工程学概述.ppt
《软件工程学概述.ppt》由会员分享,可在线阅读,更多相关《软件工程学概述.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Software EngineeringSoftware Engineering软件工程软件工程主讲:柯胜男主讲:柯胜男第第1章章 软件工程学概述软件工程学概述江西师范大学软件学院江西师范大学软件学院 1-2本章目标本章目标?了解软件工程学产生的背景和原因了解软件工程学产生的背景和原因?了解软件工程的基本原理、了解软件工程的基本原理、概念和方法概念和方法?掌握软件生命周期模型,掌握软件生命周期模型,为特定的项目选择适合的模型为特定的项目选择适合的模型 1-3问题问题为什么要提出软件工程呢?软件工程对软件开发有什么帮助呢?1-4主要内容主要内容n软件危机(Software Crisis)n软件工
2、程(Software Engineering)n软件生命周期(Software Life Cycle)n软件过程(Software Process)1-5内容线索内容线索n软件危机软件危机软件发展过程软件危机n软件危机表现n软件危机产生原因n消除软件危机的途径n软件工程n软件生命周期n软件过程 1-6软件发展过程软件发展过程n1950s1960s中:规模较小的程序,个体化的软件开发,只有程序清单n1960s中1970中:“软件作坊”,广泛使用产品软件“软件危机”出现了1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,在这次会议上正式提出并使用了“软件工程”这个名
3、词,一门新兴的工程学科就此诞生了 1-7软件发展过程软件发展过程n1970中1980s:微处理器的出现并广泛应用分布式系统、嵌入智能n1980s:网络迅速普及强大的桌面系统、面向对象技术、专家系统、人工智能、神经网络、并行计算、网格计算、虚拟组织 1-8软件发展过程软件发展过程n软件发展过程中存在的问题 软件开发能力不能满足人们的需要社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护 由于经济原因,嵌入式系统存在许多怪现象,企业不愿意投入资源再生产,而采取打补丁+时髦界面的方法 1-9问题实例问题实例日常生活:零元帐
4、单国计民生:nWWMCCS计算机网络警报n医用系统:Therac-25医用线性加速器,严重过量辐射n军用系统:飞毛腿导弹身边n浦东移动通讯瘫痪n操作系统有趣的实验nGoogle和baidunExcel 1-10 1-11 1-12美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。.n这个项目的负责人这个项目的负责人F.D.BrooksF.D.Brooks事后总结了他在组织开发过程中的沉事后总结
5、了他在组织开发过程中的沉痛教训时说:痛教训时说:“.“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工程序设计工作正像这样一个泥潭,作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境谁也没有料到问题竟会陷入这样的困境.”.”。IBM360IBM360操作操作系统的历史教训成为软件开发项目的典型事例为人们所记取。系统的历史教训成为软件开发项目的典型事例为人们所记取。问题实例问题实例 1
6、-13软件危机软件危机n软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题n典型表现:开发成本和进度的估计常常很不准确 用户对“已完成的”软件系统不满意“软件质量不可靠 软件常常是不可维护的软件没有适当的文档资料 软件产品“供不应求”1-14软件危机软件危机软件成本的比例逐年上升 1-15产生软件危机的原因产生软件危机的原因n软件的规模加大、复杂性提高、性能增强n软件是逻辑产品,尚未完全认识其本质和特点软件缺乏“可见性”:管理和控制软件开发过程相当困难不会“用坏”:错误很可能是在开发时期引入,软件维护通常意味着修改原来的设计,这就在客观上使得软件较难维护 1-16产生软件危机的原
7、因产生软件危机的原因n缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法n用户和软件开发人员的理解鸿沟n错误的认识和作法:忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等 1-17产生软件危机的原因产生软件危机的原因 1-18消除软件危机的途径消除软件危机的途径n消除“软件就是程序”的错误观念一个软件必须由一个完整的配置组成软件是程序、数据及相关文档的完整集合文档是开发、使用和维护程序所需要的图文资料软件软件=程序程序+数据数据+文档文档 1-19消除软件危机的途径消除软件危机的途径n软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各
8、类人员协同配合、共同完成的工程项目n成功的软件开发技术和方法n软件工具和软件工程支撑环境 1-20内容线索内容线索n软件危机n软件工程软件工程软件工程定义软件工程定义软件工程的本质特征软件工程的本质特征软件工程的基本原理软件工程的基本原理软件工程方法学软件工程方法学n软件生命周期n软件过程 1-21软件工程软件工程n1968NATO(North Atlantic Treaty Organization)会议,德国Garmisch Partenkirchen(加米斯帕腾基辛),计算机科学会议n软件危机根源解决途径软件工程n目的:解决“软件危机”1-22软件工程定义软件工程定义n“概括地说,软件工
9、程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。”1-23软件工程定义软件工程定义nNATO:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理nIEEE定义:软件工程是(1)把系统化的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径 1-24软件工程定义软件工程定义nBoehm(巴里.勃姆):软件(包括程序和文档)设计、实现、检查、运
10、行、维护各个过程使用的立足于科学基础的实用方法n中国大百科全书:软件工程是应用计算机科学、数学及管理科学等原理开发软件的过程。它借鉴传统工程的原则、方法,以提高质量、降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、降低成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程是一门交叉学科 1-25软件工程的本质特性软件工程的本质特性n软件工程关注于大型程序的构造 1-26软件工程的本质特性软件工程的本质特性n软件工程的中心课题是控制复杂性n软件经常变化n开发软件的效率非常重要n和谐地合作是开发软件的关键纪律是成功地完成软件开发项目的一个关键n
11、软件必须有效地支持它的用户n在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品 1-27软件工程的基本原理软件工程的基本原理n用分阶段的生命周期计划严格管理n坚持进行阶段评审错误出现的时间(63%:37%)改正错误的代价n实行严格的产品控制基线配置、变动控制n采用现代程序设计技术n结果应能清楚地审查n开发小组的人员应该少而精n承认不断改进软件工程实践的必要性 1-28软件工程方法学软件工程方法学n软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科n通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(
12、paradigm)1-29软件工程方法学三要素软件工程方法学三要素软件工程软件工程过程过程方法方法工具工具 1-30传统方法学传统方法学n传统方法学也称为生命周期方法学或结构化范型n它采用结构化技术(结构化分析、结构化设计和结构化实现)n结构化范型要么面向行为(即对数据的操作),要么面向数据 1-31面向对象方法学面向对象方法学n面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法n面向对象方法学具有下述4个要点面向对象方法面向对象方法=对象对象+类类+继承继承+用消息通信用消息通信 1-32传统方法与面向对象方法比较传统方法与面向对象方法比较n
13、信息隐藏(Information hiding)n有利用维护软件n使得软件开发变得容易n职责驱动设计(Responsibility-driven design)或按合同设计(design by contract)1-33内容线索内容线索n软件危机n软件工程n软件生命周期软件生命周期n软件过程 1-34软件生命周期软件生命周期n软件产品或系统一系列相关活动的全周期软件定义软件定义软件开发软件开发可可行行性性分分析析需需求求分分析析总总体体设设计计详详细细设设计计编编 码码测测 试试软软件件发发布布软软件件运运行行软软件件维维护护软件维护软件维护问问题题定定义义系统设计系统设计系统实现系统实现 1
14、-35软件定义软件定义n1.问题定义“要解决的问题是什么?”确定用户要求解决的性质、工程的目标和规模n2.可行性研究“对于上一个阶段所确定的问题有行得通的解决办法吗?”经济、技术、法律可行性、不同的方案n3.需求分析“为了解决这个问题,目标系统必须做什么”确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景 规格说明书(specification)1-36软件开发软件开发n4.总体设计(概要设计)“概括地说,应该怎样实现目标系统?”设计出实现目标系统的几种可能的方案。推荐一个最佳方案确定程序由哪些模块组成以及模块之间的关系n5.详细设计(模块设计)“应该怎样具体地实现这个系
15、统呢?”设计出程序的详细规格说明确定实现模块功能所需要的算法和数据结构 1-37软件开发软件开发n6.编码和单元测试 写出正确的易理解、易维护的程序模块并仔细测试每个模块n7.综合测试集成测试和验收测试,现场测试或平行运行 1-38软件维护软件维护n8.软件维护使系统持久地满足用户的需要维护工作分成以下四类n改正性维护n适应性维护n完善性维护n预防性维护 1-39内容线索内容线索n软件危机n软件工程n软件生命周期n软件过程软件过程 1-40软件过程软件过程n软件过程软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤n运用方法的顺序、文档资料、管理措施,各个
16、阶段的里程碑n通常使用生命周期模型简洁地描述软件过程生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序也称为过程模型 1-41过程模型过程模型n典型的过程模型瀑布模型(Waterfall model)快速原型开发模型(Rapid Prototyping model)增量模型(Incremental model)螺旋模型(Spiral model)n其它模型极限编程(eXtreme Programming)RUP(Rational Unified Process)建造修补模型(Build-and-fix model)1-42瀑布模型瀑布模型理想的瀑布模型理想的瀑布模型实际的瀑布模型实
17、际的瀑布模型 1-43瀑布模型的特点瀑布模型的特点n阶段间具有顺序性和依赖性n推迟实现的观点清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现n质量保证的观点(文档驱动)每个阶段都必须完成规定的文档每个阶段结束前都要对所完成的文档进行评审 1-44瀑布模型的缺点瀑布模型的缺点n开发过程一般不能逆转,否则代价太大n规格说明很难理解:“我知道这是按我的要求做的,但不是我想要的样子。”n软件的实际情况必须到项目开发的后期客户才能看到 1-45快速原型模型快速原型模型n快速原型是一个与产品子集功能上相同的工作模型快速建立起来的可以在计算机上运行的程序它所能完成的功能往往是最终产品能完成的功能的一个
18、子集 1-46快速原型模型快速原型模型用户测试用户测试运行原型运行原型建造建造/修改修改 原型原型 听取用听取用 户意见户意见 1-47快速原型模型的特点快速原型模型的特点n快速原型的本质是“快速”n快速原型可以取代规格说明阶段,但不是设计阶段,容易适应需求的变化n有利于开发与培训的同步n开发费用低、开发周期短、维护容易且对用户更友好客户与开发者对原型理解不同准确的原型设计比较困难不利于开发人员的创新 1-48快速原型模型的应用范围快速原型模型的应用范围n用户需求不完全或不准确,有快速的原型开发工具n项目招投标时,可以以原型模型作为软件的开发模型n产品移植或升级或对已有产品原型进行客户化工作
19、1-49比较比较n瀑布模型试图一次就获得正确的产品n快速原型频繁变化,然后废弃 1-50增量模型增量模型n把软件产品作为一系列增量构件来设计、编码、集成和测试构件构件:由一些代码块组成,这些代码块来自多个相互作用的模块,完成特定的功能 1-51增量模型的特点增量模型的特点n瀑布模型和快速原型模型的目标交付给客户一个完整的、可用的产品n增量模型的优点每个阶段交付一个可用的产品减少一个全新产品给客户带来的心理上的影响分阶段地交付产品不需要大的资金支出需求经常变化,增量模型的灵活性使其具有更加优越的适用性n增量模型的困难需要一个开放的结构,方便构件的加入增量模型本身就是一个矛盾的名词 1-52风险更
20、大的增量模型风险更大的增量模型 1-53螺旋模型螺旋模型n螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析 1-54简化的螺旋模型简化的螺旋模型n简化版本:瀑布模型+风险分析每个阶段之前n确定目标,可供选择的办法及其限制条件n风险分析每个阶段之后n评估n计划下一阶段 1-55简化的螺旋模型简化的螺旋模型 1-56完整的螺旋模型完整的螺旋模型风险分析制定计划客户评价实施工程累积的成本阶段 1-57螺旋模型的特点螺旋模型的特点n螺旋模型的优点容易确定何时已经对某一阶段的产品充分测试完毕维护和开发之间没有什么本质上的差别n 螺旋模型的缺点仅适合于大型软件n 风险驱动既是优点也
21、是缺点 1-58RUP过程过程n四个阶段开始(Inception):定义项目范围精化(Elaboration):项目计划、需求、架构 构造(Construction):软件产品 过渡(Transition):软件产品过渡给用户开始开始开始开始精化精化精化精化构造构造构造构造过渡过渡过渡过渡时间生命期目标生命期目标 生命期架构生命期架构 初始运行能力初始运行能力 产品发布产品发布 1-59RUP过程过程n迭代是一系列明确的具有建立计划和评估准则的活动,将产生一个可执行的发布(内部或外部)初始初始初始初始迭代迭代迭代迭代架构架构架构架构迭代迭代迭代迭代架构架构架构架构迭代迭代迭代迭代开发开发开发开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 工程学 概述
限制150内