SE02软件及软件工程幻灯片

上传人:E**** 文档编号:89707633 上传时间:2019-05-31 格式:PPTX 页数:75 大小:888.82KB
返回 下载 相关 举报
SE02软件及软件工程幻灯片_第1页
第1页 / 共75页
SE02软件及软件工程幻灯片_第2页
第2页 / 共75页
SE02软件及软件工程幻灯片_第3页
第3页 / 共75页
SE02软件及软件工程幻灯片_第4页
第4页 / 共75页
SE02软件及软件工程幻灯片_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《SE02软件及软件工程幻灯片》由会员分享,可在线阅读,更多相关《SE02软件及软件工程幻灯片(75页珍藏版)》请在金锄头文库上搜索。

1、软件及软件工程,李俊,提纲,软件定义 软件发展史 软件危机 软件工程 软件工程基本原理 软件工程涉及人员,何为软件,软件 当它被执行时提供希望的功能和性能的指令(计算机程序) 使得程序能够适当地操作信息的数据结构 描述程序的操作和使用的文档,软件特征,了解软件与人类建造的其他事物的区别 软件是被开发或设计的,而不是传统意义上被制造的 人的创造性工作(分析、设计、建造、测试)转化成有形的形式 软件不会“磨损” 软件产业正在向基于构件的组装化前进,但大多数软件仍然是定制的,硬件磨损趋势,软件磨损趋势,故障数,时间,故障数,时间,磨合,补丁,软件分类,系统软件 商业软件 工程和科学计算软件 嵌入式软

2、件 个人计算机软件 基于Internet的软件 人工智能软件 分布式软件 云 ,注意区分,软件系统仅仅是信息系统的一部分 软件过程是企业业务过程的一部分 企业身处社会环境之下,提纲,软件定义 软件发展史 软件危机 软件工程 软件工程基本原理 软件工程涉及人员,分类方法,早期:面向批处理,有限分布,自定义,个体软件,军工和科研 二:多用户,实时、数据库,软件产品和软件作坊,商务 三:分布式系统,嵌入、智能、低成本硬件技术,消费者有影响,个人应用 四:强大的桌面系统,丰富的网络系统,面向对象技术,专家系统,人工神经网络,并行计算,娱乐,软件发展4050年代,处理机器码,软件开发又称程序编写 用途:

3、科学计算或军事有关的计算 目的:确定计算机硬件的工作序列 开发方法:单独设计,全球约500人 发展:汇编语言 技术突破 对时间-空间的关系认识提高,用存储器代替计算机硬件的逻辑功能,软件发展4050年代,迭代反复使用的子程序的利用,不仅是依靠硬件组合 资金-时间的转变,突破运算速度和存储容量的限制 理论 冯.诺伊曼,存储程序 图灵,图灵测试 程序的质量完全依赖于个人的技巧,要求程序能执行,执行快,有结果,软件发展50-60年代,使用符号语言和高级语言编程 用途扩大到商业 目的: 确定软件人员定义的动作序列 开发方法,功能性开发,调试用dump 认识到软件应独立于硬件 非数值运算功能得到发展 软

4、件危机出现,软件发展50-60年代,理论成就 提出软件工程,意识到大型软件的开发工作与熟知的建设工程类似 结构化编程思想 目标 扩大程序系统的规模,适应更复杂的应用 为客户作程序,软件发展70年代,程序设计 := 数据结构 + 算法 用途更广 程序员的主要精力集中在选择和发展主要数据结构及相应算法 开发方法 从程序中分离出算法和数据结构 Donald Ervin Knuth,高德纳计算机程序设计艺术 结构化设计方法发展成结构化开发方法 分析和设计方法,软件发展70年代,认识 空间、时间复杂度的平衡,算法复杂性及度量 复杂问题不再强调过分的技巧 状况 数据独立的概念,数据可脱离系统而存在 并发访

5、问的执行机制 认识到状态的重要性,软件发展70年代,突破 数据结构和算法从程序中分离,容易学习编程经验,基本解决编程方法和逻辑技巧问题 发展了各种语言 Pascal, Smalltalk, Prolog 对系统软件和应用软件进行区分 完整的软件系统=可执行系统+数据状态+系统 成就 数据结构和算法 形式方法用推理和逻辑断言验证程序正确 软件工程方法提出,瀑布模型及相关方法,软件发展70年代,目标 解决软件危机 要求在时间、费用和质量三个要求下完成项目 管理问题得到重视,软件发展80年代,对象 大型复杂的软件系统 用途 数据库应用系统 开发方法 单纯的编程技术转向构造系统的方法 技术 管理,软件

6、发展80年代,认识 软件系统的生命周期,维护的重要性 从软件生命周期的总费用和总价值来决定软件开发采用的方案 注重团队的协作 各地开始研究软件工程 突破 c/s结构 成就 关系数据库 软件度量问题, Cocomo模型 软件过程改进模型CMM,软件发展90年代,处理对象 Internet & Multimedia 计算机使用方式的改变 开发方法 基于部件 认识 独立完整系统的不足 强调集成和演进,可适应性 软件体系结构反映了系统的非功能性需求,软件发展90年代,计算机领域的特殊性,总结和复用设计经验 目标管理过程管理,认识到 获得普适性的软件开发理论是不可能的,从而追求软件过程改进 成就 设计模

7、式 体系结构 图灵模型交互模型,软件发展 21世纪,大型/超大型软件 协同软件 集群系统和软件 基于网络 交互技术无处不在,bug的术语,故障(fault): 当人们在进行软件开发活动的过程中出现错误(error),将产生故障 失效(failure):系统违背了它应有的行为,什么是好的软件,关于质量的定义,不同视角结果不同: 先验论的观点:质量是可认知而不能定义的 用户的观点:质量是恰好达到目的 制造业的观点:质量是与规格说明的一致 产品的观点:质量是与产品的内在特征相联系的 基于价值的观点:质量取决于客户愿意支付的金额,什么是好的软件(续),好的软件过程必须包含产生高质量软件的策略 有组织的

8、质量承诺为原则 质量的6个特性:功能性、可靠性、易使用性、效率、易维护性和易移植性 3种方式考虑质量 产品的质量 生产该产品的过程的质量 产品将使用的商业环境背景下产品的质量,产品的质量,用户从外部特性进行评价(故障数目和故障类型等) 设计和编码人员考虑产品的内部特性(如故障类型) 不同观点具有不同的判据,从而需要质量模型将用户的观点和设计人员的观点联系起来 MaCall质量模型,McCall质量模型,提纲,软件定义 软件发展史 软件危机 软件工程 软件工程基本原理 软件工程涉及人员,软件危机表现,历史方面 经济方面 维护方面 需求、分析和设计方面 团队 没有计划 没有测试 没有文档,失败软件

9、的例子,0元账单 安全问题 蠕虫 推迟与超预算 丹佛国际机场 延期且超预算 War Games 1979.11.9,美国战略空军收到计算机系统发出的苏联向美国发射导弹,延迟交付 1984年,2亿美元的系统开发18个月后,又花了3年时间修改。 不必要的复杂性 MD C-17超预算5亿,包括19台机载计算机、80个微处理器、6种语言 IBM 360操作系统 17个IBM的研究单位700多人,历时4年多,总耗时5000多人年,2.5亿多,丹佛机场,甲方:经验丰富,需求明确 乙方:全球完成过类似70个项目的顶尖公司 黄金搭档的公司,完全可控的软件失败了! 1991.12,美联航承租2号航站楼,BAE设

10、计和建设自动化行李处理系统,预计2.5年完成 1992.3,BAE为全机场承建自动化行李处理系统,并预见了风险 1992年3月,BAE公司,大型系统故障示例,软件问题统计1,1983年统计发布的软件 10%按经费完成 15%按时完成 70%实现了要求的功能 2002年统计,Cutter Consortium统计 78% 的IT机构卷入纠纷并以诉讼结束 67% 交付软件没有达到开发者声称的性能或功能 56% 承诺交付日期推迟 45% 的产品错误非常严重以致无法运行,软件问题统计 2,2004年,Standish Group分析了9236个软件项目,经济方面,采用新技术还是不革新 考虑Tnew和T

11、old Tnew花费时间减少10%,采用否?,Tnew考虑,Tnew的引入费用 Tnew的维护费用 将来开发采用Tnew还是Told? 工程领域,提倡保守 不做第一个吃螃蟹的人 4GL 软件工程7原理之4如何取舍?,维护方面,Lientz等1978年统计,而Linux内核和gcc编译器的实际维护数据表明:至少50%交付后维护是纠错性的。,Microsoft 每月的Patch?,维护成本,1976-1981年间统计,1992-1998年间统计,再看Tnew的可行性,不同时期纠错的代价,错误来源,Boehm 1979年统计 较大型项目的错误中,60-70%来自于需求、分析和设计 最新审查结果 需求

12、、分析和设计中的错误仍占大比例,软件危机,软件编写从个体化软件作坊,但开发方法还是个体式的。程序的维护工作在整个计算机系统中的比重越来越大。 许多个体化软件变得无法维护;大型软件的开发成本急剧上升,质量得不到保证。 60年代中期到70年代中期,软件危机提出,软件危机,软件危机是软件开发和维护中遇到的一系列问题:软件不能工作;如何开发软件,如何维护软件 原因 自身特点:复杂,故障难检测、工作量难估计,成本增长无法控制 开发方法不当,软件工程,1968年Nato的科学委员会提出“软件工程” 指导科学地开发软件、制作软件产品、集成计算机系统,以降低成本、提高质量、符合进度要求,软件成本,提纲,软件定

13、义 软件发展史 软件危机 软件工程 软件工程基本原理 软件工程涉及人员,软件如何生产?,建筑工程 生产流程,分阶段、按部就班,软件工程定义,软件工程师计算机科学的一个领域,研究如何构建非常庞大或非常复杂的软件系统,该系统往往需要一个或多个软件工程师团队来开发。,软件工程是指导计算机软件开发和维护的工程学科。,IEEE 1990: 对软件开发、运作、维护的系统化的、有纪律的、可定量的方法之应用,IEE93 将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中; 上述方法的研究。,另一个角度看软件工程,问题求解 软件问题多为大型且复杂 解决方法:分析和综合 分

14、析 将问题分解为可以理解的小的部分 抽象能力和关键 综合 小的模块组合成大的结构 创作过程很有挑战,分析工程大事化小、分而治之,综合过程遣词造句,解决问题,方法(method)/技术(technology) 产生某些结构的形式化过程 工具(tool) 以更好的方式完成某件事情的设备或自动化系统 过程(procedure) 将工具和方法结合起来共同产生特定产品 范型(paradigm) 构造软件的特定方法或哲学,软件工程研究内容的层次结构,软件工程的基础是软件过程 过程是将技术层结合在一起 过程定义了一组关键过程区域,这是软件项目的管理控制基础,建立了语境,规定了技术方法的采用、工程产品的产生、

15、里程碑的建立、质量的保证和变化的适当管理 方法提供了建造软件在技术上“如何做” 覆盖了系列任务:需求分析、设计、编程、测试和维护等 方法依赖于一组原则 工具对过程和方法提供了自动或半自动的支持 CASE,软件工程焦点,软件工程5要素,提纲,软件定义 软件发展史 软件危机 软件工程 软件工程基本原理 软件工程涉及人员,指导性原则,软件需求的变动性 采取适当措施来保证结果产品能满足用户需求 要考虑模块化、抽象和信息隐蔽、局部化、一致性等 稳妥地设计方法将大大方便软件开发 软件工具和环境对软件设计的支持来说,极其重要 质量和经济开销直接取决于对它提供的支撑的质量和效用 有效的软件工程只有在对软件过程

16、进行有效管理的情况下才能实现,两个规则,(7,2)规则 80-20规律,软件工程的7条基本原理,Boehm 1983提出,确保软件产品质量和开发效率的原理的最小集合 用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性,软件工程的精髓,软件系统比企业信息系统的范围小 软件过程是业务过程的一部分 软件工程不同于传统工程 软件工程不只是程序设计 软件工程需要建模 软件系统是复杂的,企业信息系统,信息系统涉及 人员 数据 过程 软件 硬件 通信,不同管理层次的软件,业务过程需要效果 软件过程只提供效率,为业务增值提供产品和服务,例:软件系统服务于单一的管理层次 高利润产品背后的规则和事实,知识库 订单趋势,联机分析处理 订单与发票,联机事务处理,软件工程的精髓,软件系统比企业信息系统的范围小 软件过程是业务过程的一部分 软件工程不同于传统工程 软件工程不只是程序设计 软件工程需要建模 软件系统是复杂的,通信复杂性,增加接口降低复

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号