XXXX秋 计算机学科概论 软件工程概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程SoftwareEngineering2010秋第10章软件工程1.1软件危机软件危机的定义、含义、实质、具体表现、产生的原因、解决途径1.2软件工程软件工程的定义、基本原理、软件工程方法学、要素结构化方法、面向对象方法1.3软件生命周期瀑布、快速原型、增量、螺旋、喷泉、RUP、敏捷、MS主要内容第10章软件工程计算机系统的发展历程系统的概念(1)若干部件的集合;(2)每个部件有自己独立的功能和边界;(3)部件之间的关系构成系统的结构;(4)部件之间的相互作用构成系统的运动。软件危机结构的概念:元素及关系。关系:1:11:mm:n系统的观点:完整、层次、功能、运动第10章软件工程计算机系统的发展历程过程文档数据库人员软件硬件计算机系统的组成所谓计算机系统就是指适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。第10章软件工程计算机系统的发展历程计算机系统的发展历程:经历了四个不同的发展阶段。个体开发(1950-1960)软件工程(1970-1980)软件作坊(1960-1970)软件产业(1980-)4GT和4GL?第10章软件工程1.1软件危机计算机系统的发展历程计算机系统的发展软件危机第10章软件工程软件危机“危机”:(1)是危险的环境中酝酿的机会,也是机遇背后暗藏的危险(2)危险的机会、矛盾、出事了(3)政治危机、经济危机、金融危机、信任危机、心理危机、婚姻危机……1.1软件危机第10章软件工程软件危机“危机”的含义一是指突发事件,出乎人们意料发生的,如地震、水灾、空难、疾病爆发、恐怖袭击、战争等;二是指人所处的紧急状态。当个体遭遇重大问题或变化发生使个体感到难以解决、难以把握时,平衡就会打破,正常的生活受到干扰,内心的紧张不断积蓄,继而出现无所适从甚至思维和行为的紊乱,进入一种失衡状态,这就是危机状态。危机意味着平衡稳定的破坏,引起混乱、不安。危机出现是因为个体意识到某一事件和情景超过了自己的应付能力,而不是个体经历的事件本身。第10章软件工程软件危机软件危机的定义软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。即:效率和质量的问题。第10章软件工程软件危机软件危机的具体表现(1)开发成本和进度估计不准。(2)用户对“已完成的”软件系统不满意。(3)软件质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本逐年上升。(7)软件开发生产率滞后于硬件和计算机应用普及。第10章软件工程软件危机软件开发周期:一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,该时期称为软件的生命周期。第10章软件工程软件危机软件危机案例8客户所付的钱9上线后的技术支持7最后交付给用户的软件0客户真正的需求1客户解释他们想要的4程序员写出的代码2项目负责人对客户需求的认识3系统分析员分析的6项目文档一片空白5顾问所描绘的情景第10章软件工程软件危机产生软件危机的原因:(1)软件本身的特性缺乏可见性、无制造过程、规模庞大(2)对软件开发错误的认识和做法软件就是程序、开发软件就是编程序、轻视文档、不懂测试、不想维护、轻视管理(3)开发与维护的方法不正确非工程化(个体、软件作坊)落后的方法学(结构化的、面向对象的)(4)概念的商业炒作与迷信软件危机仍然在困扰我们。第10章软件工程软件危机不同时期对软件修改付出的代价:引入同一变动付出的代价随时间变化的趋势:越晚越大。O早中晚变化出现的时期代价第10章软件工程软件危机第10章软件工程软件危机软件危机与《人月神话》焦油坑史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。第10章软件工程软件危机软件危机与《人月神话》焦油坑过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统——不过,其中只有非常少数的项目满足了目标、时间进度和预算的要求。各种团队,大型的和小型的,庞杂的和精干的,一个接一个淹没在了焦油坑中。表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,团队的行动就会变得越来越慢。对问题的麻烦程度,每个人似乎都会感到惊讶,并且很难看清问题的本质。不过,如果我们想解决问题,就必须试图先去理解它。第10章软件工程软件危机消除软件危机的途径:(1)对软件正确认识。(2)推广使用成功的技术和方法。(3)研究探索更好更有效的技术和方法。(4)应该开发和使用更好的软件工具。总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。第10章软件工程(1)软件是无形的(intangible)比其他工程产品更加不可捉摸。你无法感觉软件产品的形状,它的设计也难以直观表示。因此确定软件产品的质量或者估计其开发的工作量是非常困难的。这就是人们总是低估系统开发时间的一个原因。软件的特性第10章软件工程软件的特性(2)软件副本的大批量生产轻而易举绝大多数其他类型的工程师非常关心每一个部件耗费的成本与劳动量。换句话说,对于有形产品,设计完成之后的制作过程往往是代价昂贵的部分。与之相反,软件产品能通过网络下载或制作CD以极低的成本进行复制。因此,几乎全部的软件成本都存在于它的开发过程中,而不是制造过程中。第10章软件工程软件的特性(3)软件业是劳动密集型的通过使用机器,制造业与建筑业的许多领域已经实现了自动化;因此其他工程分支可以用更少的劳动量生产出更多的产品。但是,使软件的设计与编程完全实现自动化,需要真正“智能”的机器。目前这个方向上的尝试离成功还很遥远。第10章软件工程软件的特性(4)一个没有经过充分训练的软件开发人员很容易编写出难以理解和修改的软件编程新手可以创建复杂的系统完成有用的功能,但它的设计却可能极其紊乱。其他工程领域也可能产生不良的设计,但是这些缺陷通常比较容易发现,因为它们不会隐藏在上千页的源代码中。例如,如果土木工程师设计了一座不安全的桥梁,审查人员一般会比较容易地发现设计中的缺陷,因为他们清楚地知道在每张图纸和每次计算中应当寻找什么。第10章软件工程软件的特性(5)软件本身很容易修改但由于它的复杂性,又很难正确地修改人们总是试图在尚未完全了解软件的时候就去修改它,而这些修改又会带来新的错误。第10章软件工程软件的特性(6)软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退化对软件的修改很容易引入新的缺陷,因此修改过的软件从设计角度讲容易变差。随着时间的流逝,软件后续版本的设计可能会表现出严重的退化,这时就需要完全重新设计了。第10章软件工程软件的特性(6)软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退化。第10章软件工程软件的特性软件的特性造成的问题总而言之,以上这些特性说明,大部分现有软件的质量都相对较差,而且还在不断地变得更差。同时,对新的、修改过的软件的需求旺盛,客户希望它们质量高,并且能够很快地生产出来。因此,软件开发人员常常满足不了经理与客户的期望——许多软件项目不是根本没有交付,就是推迟交付而且超出了预算。此外,许多已交付的软件系统的问题太多,从未投入使用;而其他一些软件在使用前需要做较大的修改。第10章软件工程什么是工程对“工程(engineering)”的理解:大事情、施工的过程、工程学科。•大事情:大的、复杂的、由众多的人共同完成的。如建筑工程、三峡工程、航天工程。第10章软件工程什么是工程对“工程(engineering)”的理解:1.对“工程”的理解:大事情,施工的过程,工程学科。施工的过程:分析设计实现维护做啥,怎么做,用什么做(工具、技术),谁作,什么时候做开始做:……做得怎么样?持久使用:维修是啥,要啥,啥样,理解,搞清楚,弄明白第10章软件工程什么是工程1.对“工程”的理解:大事情,施工的过程,工程学科。工程学科的简称。文、理、法、医、农、工……计算机工程、化学工程、机械工程、电子工程……第10章软件工程什么是工程1.对“工程”的理解“人”与“草”的区别“人”与其它“动物”的共性:面对复杂性复杂性:体力与智力受到挑战科学:揭示复杂性技术:如何解决复杂性工程:运用科学与技术解决复杂性软件工程:靠计算机软件延伸人的智力第10章软件工程构建一个小狗屋可以由一个人制造需求:最小的模型简单的过程简单的工具第10章软件工程由一个团体建设,并且需要更高的效率、更精确的时间限制,需求模型,良好定义的过程,功能强大的工具构造一栋房屋第10章软件工程构建一个高层建筑第10章软件工程过程有限的理论知识早期的结构第10章软件工程现代的结构进步-先进的原材料和先进的分析范围-Pantheon的五倍范围Cheops的3倍高度第10章软件工程房屋建模第10章软件工程第10章软件工程第10章软件工程第10章软件工程第10章软件工程第10章软件工程“工程”的定义定义有很多,通常来说:用最少的代价解决问题......目的是处理实际的难题......以科学知识为手段......建造工具......服务于人类目标:使普通人能做以前只有专家圣手才能做的事情。第10章软件工程科学商业专业工程生产科学商业专业工程生产手工“工程”的进化第10章软件工程“工程”化的步伐手工(Craft)商业(Commerical)工程(ProfessionalEngineering)行家里手和业余天才熟练的工匠受过系统教育的专业人员直觉与强力既定程序分析与理论偶然的进步注重实效地优化以科学为指导地升级换代不经意的推广言传身教专业教育课程奢侈地使用原料注重成本与原料利用原料多次利用生产是为了使用而不是出售为销售而生产市场份额第10章软件工程规范化循环专门的解决方法土方法规范化模型与理论新的问题实践提高第10章软件工程讨论工程、项目、科学、技术、方法、工具、过程之间的关系?第10章软件工程软件工程的背景和历史1968年由NATO(北大西洋公约组织)在德国Garmish召开的学术会议上,FeitzBauer首先提出了“软件工程”概念。北约(美国)、华约(苏联)、第三世界(中国)第10章软件工程软件工程的概念概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。第10章软件工程软件工程的概念1993年IEEE的定义:(1)把系统化的、规范的、可度量的途径应用与软件开发、运行和维护;(2)研究(1)中的途径。第10章软件工程软件工程的本质特性1.关注大型程序的构造2.中心课题是控制复杂性(分解便于管理)3.软件经常变化4.开发效率非常重要5.和谐协作是关键6.软件必须有效地支持用户7.开发者与使用者文化不同(隔行如隔山)第10章软件工程软件工程的基本原理1.用分阶段的生命周期计划进行严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性第10章软件工程软件生命周期定义可研分析总体设计(概要、外部、方案)详细设计(内部、算法、模块)编码测试维护定义分析设计实现维护开发维护第10章软件工程软件工程方法学通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程范畴中,这两个词的含义基本相同。第10章软件工程软件工程方法学软件工程方法学三要素,这

1 / 102
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功