软件工程课件ch1概述.ppt

上传人:牧羊曲112 文档编号:6434252 上传时间:2023-10-30 格式:PPT 页数:62 大小:2.66MB
返回 下载 相关 举报
软件工程课件ch1概述.ppt_第1页
第1页 / 共62页
软件工程课件ch1概述.ppt_第2页
第2页 / 共62页
软件工程课件ch1概述.ppt_第3页
第3页 / 共62页
软件工程课件ch1概述.ppt_第4页
第4页 / 共62页
软件工程课件ch1概述.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《软件工程课件ch1概述.ppt》由会员分享,可在线阅读,更多相关《软件工程课件ch1概述.ppt(62页珍藏版)》请在三一办公上搜索。

1、知识回顾,软件工程40年回顾信息时代的软件工程,第一章 软件工程概述,信息学院计算机系 张翠肖,软件是人类思维创造的杰作,是信息化的核心。如何以经济有效的方法开发高质量的软件是人们一直努力研究的问题。软件工程(Software Engineering)是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。软件工程是一门指导计算机软件系统开发和维护的工程学科,是一门新兴的边缘学科,主要研究如何应用软件开发的科学理论和工程技术来指导大型软件系统的开发。软件工程是为了解决开发成本效益和软件质量的问题。,内容提纲,软件 软件的定义与软件危机 软件的本质特性,软件工程 定义与发展历史 理解软件

2、质量 过程、方法和工具 软件工程学科 软件工程知识体系(SWEBOK)软件工程职业道德规范,基本要求,了解软件的发展历程掌握软件和软件工程的概念理解软件工程知识体系了解软件工程职业道德规范,内容提纲,软件 软件的定义与软件危机 软件的本质特性,软件工程 定义与发展历史 理解软件质量 过程、方法和工具 软件工程学科 软件工程知识体系(SWEBOK)软件工程职业道德规范,1.1 什么是软件,软件的定义(IEEE Standard Glossary of Software Engineering Terminology),软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。,从软件的内

3、容来说,软件更像是一种嵌入式的数字化知识,其形成是一个通过交互对话和抽象理解而不断演化的过程。,(1)软件的分类,通用软件(Generic Software),通用软件是由软件开发组织开发,面向市场用户公开销售的独立运行系统,有时也被称为套装软件。,举例:操作系统、数据库系统、字处理软件等,定制软件(Customized Software),定制软件是由某个特定客户委托,软件开发组织在合同的约束下开发的软件。,举例:企业 ERP 系统、卫星控制系统、空中交通指挥系统等,根据软件服务对象的范围分类,实时系统:嵌入式系统:数据处理系统:信息系统:传感系统:系统软件:通信软件:办公系统:科学计算软件

4、:图形软件:,空中交通控制系统数码相机,GPS电话帐单网站,数字图书气象数据操作系统,编译器路由器,移动电话文字处理,视频会议仿真模拟,天气预报电影制作,CAD 设计,7,软件的应用,No silver bullet:essence and accidents of software engineering,Fredrick P.Brooks,IBM OS360 项目经理 1999 年图灵奖获得者,“没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量上的进步。”,软件的本质特性,复杂性(Complexity)一致性(Conformity)可变性(Changeabi

5、lity)不可见性(Invisibility),12,(2)软件的本质特性,复杂性,(1)软件实体可能比任何由人类创造的其他实体要复杂,因为没有任何两个软件部分是相同的。(2)数字计算机本身就比人类建造的大多数东西复杂。计算机拥有大量的状态,这使得构思、描述和测试都非常困难。软件系统的状态又比计算机系统状态多若干个数量级。(3)软件实体的扩展也不仅仅是相同元素重复添加,而必须是不同元素实体的添加。,(4)软件的复杂度是必要属性,不是次要因素。抽掉复杂度的软件实体描述常常也去掉了一些本质属性。数学家和物理学家们建立模型以简化复杂的现象,从模型中抽取出各种特性,并通过试验来验证这些特性,复杂性,复

6、杂性,复杂性问题造成软件产品开发问题团队成员之间的沟通非常困难,导致了产品瑕疵、成本超支和进度延迟由于复杂度,列举和理解所有可能的状态十分困难,影响了产品的可靠性由于函数的复杂度,函数调用变得困难,导致程序难以使用由于结构性复杂度,程序难以在不产生副作用的情况下用新函数扩充由于结构性复杂度,造成很多安全机制状态上的不可见性,复杂性,复杂度引发管理上的问题全面理解问题变得困难,从而妨碍了概念上的完整性它引起了大量学习和理解上的负担,使开发慢慢演变成了一场灾难,一致性(Conformity),软件必须遵从人为的惯例并适应已有的技术和系统,软件必须遵循各种接口、协议和标准 有些情况下,兼容性是软件开

7、发的目标,软件需要随接口的不同而改变,随时间的推移而变化,而这些变化是不同的人设计的结果。,许多复杂性来自保持与其他接口的一致,对软件的任何再设计,都无法简化这些复杂特性。,14,(2)软件的本质特性,可变性(Changeability),软件产品扎根于文化的母体中,如各种应用、用户、自然及社会规律、计算机硬件等,后者持续不断地变化着,这些变化无情地强迫着软件随之变化。,所有成功的软件都会发生变更!,当人们发现软件很有用时,会在原有应用范围的边界,或者在超越边界的情况下使用软件;,功能扩展的压力主要来自那些喜欢基本功能,又对软件提出了很多新用法的用户。,15,(2)软件的本质特性,软件修改会带

8、来的副作用,不断的修改最终导致软件的退化。,软件的失效率曲线,16,可变性,不可见性Invisibility,软件是不可见的和无法可视化的,软件的客观存在不具有空间的形体特征 定义“需要做什么”成为软件开发的根本问题,人们一直试图使用不同的技术进行软件可视化,控制流程、数据流、依赖关系、UML、这些技术仍然无法给出准确的、完整的描述,软件仍然保持着无法可视化的固有特性,从而剥夺了一些具有强大功能的概念工具的构造思路。这种缺憾不仅限制了个人的设计过程,也严重地阻碍了相互之间的交流。,(2)软件的本质特性,(3)软件的发展,(1)第一阶段:20世纪50-60年代应用:快速计算语言:Algol Fo

9、rtran程序质量依赖于程序员个人的技巧60年代末出现了“软件危机”(2)第二阶段:20世纪70年代应用:涉及非数值计算的商业事务处理。语言:Pascal Cobol软件的概念包含了文档。开始采用开发模型,(3)软件的发展,(3)第三阶段:20世纪80年代微处理器出现,计算机大众化语言:面向对象CASE开始注重软件质量(4)第四阶段:20世纪90年代至今Internet技术迅速发展,软件系统从封闭走向开放WEB应用、分布式软件、软件复用、构件技术进入21世纪:Internet向智能网络时代发展,网格技术、web services 分布式计算等。,(4)软件危机,“软件危机”主要表现:(1)经费

10、预算经常突破,完成时间一再拖延。(2)开发的软件不能满足用户要求。(3)开发的软件可维护性差。(4)开发的软件可靠性差。,软件危机(Software Crisis)是指在计算机软件的开发和维护过程中遇到的一系列严重问题。,软件危机出现于 20 世纪 60 年代末,ARIANE 5 火箭,1996 年 6 月,耗资 70 亿美元,发射 37 秒后爆炸 发射失败的原因在于软件的错误,软件错误,程序中试图将 64 位浮点数转换成 16 位整数时产生溢出 缺少错误处理程序对数据溢出进行管理 备份软件复制而成,严格地遵守软件确认过程可以避免这种错误,软件错误的实例,爱国者导弹,曾在海湾战争期间对抗伊拉克

11、飞毛腿导弹 1991 年 2 月,一次对抗失利中 28 名美国士,兵丧生,问题的症结在于导弹软件包含一个累加计时误差,软件错误,target=f(velocity,time),计时采用系统时钟(即 1/10 秒)并使用整数表达,(1/10)2,24 位寄存器,存储导致误差(0.000000095)10,10,软件错误的实例,千年虫问题,迫于计算机存储空间的限制,程序员将日期年份缩减 为 2 位数 世界各地更换或升级 2000 年问题软件的花费超过数亿美元,11,1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。,软件错误的实例,IBM公

12、司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:DO 5 I=1,3 误写为:DO 5 I=1.3,软件错误的实例,软件危机,软件危机的原因:软件规模越来越大,结构越来越复杂,超过了人所能接受的程度。软件开发的管理困难,可靠性无法保证。软件开发费用不断

13、增加。软件开发技术落后。生产方式落后。开发工具落后。,软件工程,人们在分析了软件危机的原因之后,开始探索用工程化的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新。于是产生了计算机科学技术的一个新领域软件工程。,内容提纲,软件 软件的定义与软件危机 软件的本质特性,软件工程 定义与发展历史 理解软件质量 过程、方法和工具 软件工程学科 软件工程知识体系(SWEBOK)软件工程职业道德规范,1.2:(1)工程的含义,工程是将理论和所学的知识应用于实践的科学,以便经济有效地解决实际问题。,19,手工和工程规模上的差异,花园小道 vs.汽车高速公路

14、 树上小屋 vs.摩天大楼,加法程序 vs.医院档案系统,手工(Craft):小规模的设计与建造,简单问题与单一目标 个人控制与个人技能,工程(Engineering):大规模的设计与建造,复杂问题与目标分解,多人参与,需要考虑运营、管理、成本、质量控制、安全等,20,1.2-(1)工程的含义,(2)工程的特征,平衡与决策,需要进行一系列决策和认真评价,并在每一个决策点做出适当选择,适当与否可以通过平衡成本和利益的分析来判断。,度量与验证,应该度量事物,在适当的时候定量工作;需要校正并验证度,量,并在经验和实验数据的基础上进行近似。,运用工具,工程师需要将工具系统地应用在过程中,因此选用适当的

15、工,具是工程的关键。,21,团队协同工作,注重训练有素,并以团队的形式进行有效的工作。,角色分工,多重角色:研究、开发、设计、生产、测试、构造、实施、管理以及其他诸如销售、咨询和教学等。,最佳实践,通过专业团体不断地开发和确认工程原则、标准和实践。,强调重用,工程师应该重用设计和设计制品。,22,(2)工程的特征,只有编码的开发过程,编码实现,23,工程化的软件开发概念形成?需求规格,说明,?设计,?,实现,24,(3)什么是软件工程,软件工程的定义,Fritz Bauer,1968,软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。,CMU,199

16、0,软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题。,IEEE,1993,软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;对中所述方法的研究。,25,(3)什么是软件工程,26,软件工程的关注焦点,软件质量(Software Quality),软件质量是软件产品与明确的和隐含的需求相一致的程度 软件质量通常采用一系列质量特性来描述,软件成本(Software Cost),软件开发成本是指软件开发,过程中所花费的费用,软件维护成本是指软件投入运行后软件变更所需的费用,(4)理解软件质量,你同意以下说法吗?为什么?,“运行

17、正确的软件就是高质量的软件。”,软件除了提供用户所需的功能以外,还应该具有一系列反映质量的属性,包括可维护性、可依赖性、有效性和可用性等。,可维护性:软件必须能够不断进化以满足客户的需求变化可依赖性:软件必须是可靠的、保密的、安全的有效性:软件不应该浪费内存和处理器等系统资源可用性:软件必须是可用的,用户可以很方便地使用,28,(4)理解软件质量维护人员良好的文档可读的代码良好的设计可重用性,最终用户,功能性易使用易学习,可靠性正确性有效性,降低成本可移植性增强产品性,客户,(5)软件工程的三要素,过程 支持软件生命周期的所有活动 方法 为软件开发过程提供“如何做”的技术,方法质量,工具 为软

18、件开发方法提供自动的或,工具,过程,半自动的软件支撑环境30,软件工程以关注软件质量为目标,包括过程、方法和工具三个要素。,什么是软件过程,软件过程是指开发软件产品的一组活动及其结果。软件过程的四个基本活动,规格说明(Specification),定义软件功能以及对其使用的限制,软件开发(Development),设计和实现满足规格说明的软件,软件确认(Validation),验证软件以保证能够满足客户的要求,软件演化(Evolution),改进软件以适应不断变化的需求,31,什么是软件过程模型 软件过程模型是从特定角度呈现的对软件过程的简化描述。软件过程模型是对实际过程的抽象描述 包括软件过

19、程的活动、软件产品以及参与人员的不同角色 常见的软件过程模型,瀑布模型进化式开发模型形式化模型组件式开发模型,33,什么是软件工程方法,软件工程方法是软件开发的结构化方法,包括模型描,述、规则、设计建议和过程指南等,模型描述,对所开发的系统建立图形化的模型描述 例如:对象模型、数据流模型、状态机模型,规则,应用于系统模型的约束,设计建议,有关良好设计实践的建议,过程指南,软件开发所遵循的活动以及这些活动的组织结构,34,结构化方法 vs.面向对象方法,自然语言传统的编程语言,问题域需求分析总体设计详细设计编程,分析与设计的鸿沟,自然语言面向对象的编程语言,问题域面向对象分析面向对象设计面向对象

20、编程面向对象测试,测试,计算机,计算机35,CASE(Computer Aided Software Engineering)计算机辅助软件工程是一组工具和方法的集合,用于辅助软件开发、维护、管理过程中的各项活动,促进软件过程的工程化和自动化。所有的软件工程方法都需要 CASE 的相应技术来支持 用于系统模型的图形编辑器 管理设计实体的数据字典 生成用户界面的 GUI 软件辅助生成系统文档的报告生成器支持程序纠错的调试器代码生成器,36,什么是CASE,CASE 的层次问题定义,需求分析,软,分析设计工作台,总体设计 件开,详细设计 发过,集成化环境,编程,程与,程序设计工作台,软件测试 管理

21、软件维护,测试工作台,CASE工具,CASE工作台,CASE环境,37,CASE 工具,IBM Rational 公司产品(http:/),开发过程管理:RUP 需求管理:RequisitePro 可视化建模:Rose,自动测试:Robot,Test Realtime,TestManager,XDE Tester 项目管理:ProjectConsole,配置管理:ClearCase,ClearQuest,开源 CASE 工具(http:/,CVS:应用广泛的版本管理工具,UML Modeler:UML 模型图形编辑工具,UML2EJB:将 XML 表示的 UML 模型转换成 EJB 代码的转换

22、器,38,(6)软件工程的发展,软件工程的诞生,1969 年,NATO 科学委员会在德国的加尔密斯举行会议,讨论大型软件项目的若干问题,提出了“软件工程”和“软件危机”的术语,一本经典的著作“人月神话(Mythical Man Month)”,Brooks 在 1975 年出版,描写了大型软件开发中的许多关键问题,Brooks 法则:向进度落后的项目中增加人手,,只会使进度更加落后。,people time,39,控制机器(19561967),软件工程的史前时代批处理系统,汇编语言,FORTRAN语言,COBOL语言已经认识到软件开发不仅是编码,控制过程(19681982),软件工程成为一个研

23、究领域,出现软件产品的定价和独立的软件产业 结构化开发技术,Pascal语言,C语言,面向对象编程语言,形成软件生命周期的概念,以瀑布模型为典型,40,(6)软件工程的发展,控制复杂性(19831995),PC 时代的到来,CASE 工具的开发,原型化开发技术,CMM,软件过程改进活动 面向对象开发技术,Objective C,C+,JAVA 语言,1996现在,分布式计算,应用领域的扩展,网络环境的软件工程,面向对象技术的进一步发展(设计模式、组件、中间件),41,(6)软件工程的发展,遗留系统的问题,遗留系统是指那些过时或存在问题的计算机系统,通常是许,多年以前开发的,挑战:既要以合理的成

24、本维护和更新系统,又要能够继承系,统中重要的商业信息和服务,异构系统的问题,网络环境下包含不同的硬件平台和软件系统,挑战:需要提出新的开发技术,能够使所开发的软件系统运,行在不同的硬件平台和系统环境下,42,软件工程面临的挑战,软件工程面临的挑战,高可信软件开发的要求,软件的重要作用要求正确性、可靠性、安全性等可信性质 挑战:如何在软件的开发和运行中保证其具有高可信的性质,软件开发方式的变化,网络时代带来的冲击,开源软件开发技术 Web 工程,挑战:研究分布式的软件体系结构和开发模式,探索与之相,适应的软件工程策略,43,内容提纲,软件 软件的定义与软件危机 软件的本质特性,软件工程 定义与发

25、展历史 理解软件质量 过程、方法和工具 软件工程学科 软件工程知识体系(SWEBOK)软件工程职业道德规范,(1)软件工程学科的形成与发展,1985-2005,1968-1990,2000-,面向对象的软件开发,人机界面,多媒体,项目管理、CMM、CMMI,基于网络、构件、中间件的软件开发,计算安全,敏捷开发,软件工程概念的形成与发展,软件工程课程逐步成熟,成为CC1991的一个领域,软件工程成为CC2004的一个学科,硬件支撑能力,小、中、大型计算机系统PDP1170VAX11780,结构化的分析、设计、实现、测试,项目管理,基于网络服务的超大系统、计算安全、系统管理、监控、评估,个人计算机

26、、窗口、网络、分布计算,Internet广泛应用,软件工程知识体系(SoftWare Engineering Body Of Knowledge:),IEEE 计算机学会发起研究,从而促进软件工程发展成为独立,的专业学科,2001 年 5 月完成,最新发布“SWEBOK 指南 V1.00(试用版)”,SWEBOK 的组成,将软件工程知识分解成若干知识域,形成层次化的组成结构 10 个知识域,软件需求、软件设计、软件构造、软件测试、软件维护,软件配置管理、软件工程管理、软件工程过程、软件工程工具与,方法、软件质量,45,(2)软件工程知识体SWEBOK,(2)软件工程知识体SWEBOK,(2)软

27、件工程知识体SWEBOK,(3)软件工程及其相关学科软件工程是应用计算机科学、,数学与管理科学等基本原理,开发软件的工程。它借鉴传统工程的原则和方法,以提高质,工程科学知识与实践,量,降低成本为目的。,管理科学,应用领域,计算机科学和数学用于构造软件的模型与算法;工程科学用,知识与实践,软件工程知识与实践,知识与实践,于制定规范、设计范型、评估,成本及确定权衡;管理科学用于计划、资源、质量、成本等,计算机科学基本原理,数学基本原理,管理。47,(4)软件工程职业道德规范 软件工程不仅是技术的应用,还包括许多责任。软件工程人员应当遵循本行业的职业道德规范,否则无法在这个行业中长久立足。分析下面的

28、一些行为将公司的软件代码随意复制给其他人为了个人的利益作出不切实际的承诺使用盗版软件迫于时间压力交付缺乏严格测试的代码未经允许就在别人的机器上玩游戏和上网,49,IEEEACM 职业道德准则,1.公众,软件工程人员应始终与公众利益保持一致。,2.客户和雇主,在与公众利益保持一致的原则下,软件工程人员应满足客户和雇主的最大利益。,3.产品,软件工程人员应当确保他们的产品及其改进符合尽可能高的专业标准。,4.判断,软件工程人员应当具备公正和独立的职业判断力。,50,5.管理,软件工程管理者和领导者应拥护和倡导合乎道德的有关软件开发和维护的管理方法。,6.职业,在与公众利益一致的原则下,软件工程人员应当提高职业的信誉。,7.同行,软件工程人员对其同行应持平等和支持的态度。,8.自我,软件工程人员应当终身学习专业知识,促进合乎道德的职业实践方法。,51,IEEEACM 职业道德准则,作业:,思考题:为什么要研究和学习软件工程?作业题:1.什么是软件?软件产品的特性是什么?2.什么是软件危机?其产生的原因是什么?3.软件工程包括哪些基本要素?请简要说明这些要素极其作用。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号