软件工程(概论)概述课件_第1页
软件工程(概论)概述课件_第2页
软件工程(概论)概述课件_第3页
软件工程(概论)概述课件_第4页
软件工程(概论)概述课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《软件工程方法与实践》,窦万峰等编著,机械工业出版社,2009.5《人月神话》,佛雷德里克.布鲁克斯著,UMLChina翻译组汪颖译,清华大学出版社软件工程第1章概述SoftwareSoft+Ware软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据及其相关文档的完整集合。软件与硬件、人、过程等共同构成计算机系统。硬件失效率曲线时间失效率磨合调整磨损用坏修改点时间失效率软件失效率曲线实际曲线理想曲线软件的生产与硬件不同软件的特点第1章概述软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化时间成本%软件硬件软件的特点第1章概述软件的分类第1章概述按软件的功能进行划分系统软件支撑软件应用软件按软件的开发进行划分软件项目软件产品第1章概述软件的演变程序软件软件产品传统软件开发现代软件开发营业额增长曲线第1章概述软件生态链的变化硬件(主机、PC、网络设备)嵌入式软件基础(系统)软件(OS、DB)系统集成应用软件最终用户第1章概述软件生态链的变化硬件(主机、PC、网络设备)嵌入式软件基础(系统)软件(OS、DB)系统集成应用软件最终用户中间件业务支撑平台第1章概述软件生态链的变化硬件(主机、PC、网络设备)嵌入式软件基础(系统)软件(OS、DB)应用集成应用软件最终用户中间件网络集成系统集成业务支撑软件第1章概述软件生态链的变化硬件(主机、PC、网络设备)嵌入式软件基础(系统)软件(OS、DB)应用集成应用软件最终用户网络集成云服务提供商中间件第1章概述云计算制造业硬件产业网络设备服务器半导体终端设备存储设备系统集成软件产业基础软件应用软件中间件基础设施服务基础网络数据中心行业平台应用部署政务应用农业应用教育应用SaaS服务云计算服务业支持产业评估认证设计咨询、PaaS服务开发测试数据库平台PaaS服务虚拟存储虚拟机WebHosting企业应用商务应用社会应用娱乐应用第1章概述软件危机在软件开发和维护过程中所遇到的一系列严重问题包含两个问题:如何开发、如何维护典型表现:对开发成本和进度的估计常常很不准确,开发成本和开发周期严重超标;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)由于没有文档资料软件常常是不可维护的,软件修改和维护非常困难;(5)软件成本在计算机系统总成本中所占比例逐年上升;(6)软件开发生产率很低。第1章概述软件危机的原因软件的不可见性:软件是计算机系统中的逻辑部件而不是物理部件,管理和控制软件开发过程相当困难。运行中发现错误,很可能是遇到了一个在开发时期引入的,在测试阶段没能检测出来的故障。

因此,软件维护通常意味着改正或修改原来的设计,这就在客观上使得软件较难维护。软件规模不断扩大:程序的复杂性将随着程序规模的增加而呈指数上升。如何保证每个人完成的工作合在一起确实能构成一个高质量的大型软件系统,更是一个极端复杂困难的问题,不仅涉及许多技术问题,诸如分析方法、设计方法、形式说明方法、版本控制等,更重要的是必须有严格而科学的管理。第1章概述软件危机的原因对软件的错误认识:与软件开发和维护有关的许多错误认识和作法的形成,可以归因于在计算机系统发展的早期软件开发的个体化特点。错误认识和作法主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。事实上,对用户要求没有完整准确的认识就匆忙着手编写程序是软件开发工程失败的主要原因之一。软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的周期。a)问题定义b)可行性研究c)需求分析c)软件设计(总体设计和详细设计)d)编写程序(软件开发全部工作量的10%-20%)e)测试和维护(软件开发全部工作量的40%-50%)软件是程序以及开发、使用和维护程序需要的所有文挡。第1章概述后期修改:在软件开发的不同阶段进行修改需要付出的代价是很不相同的,根据美国一些软件公司的统计资料,在后期引入一个变动比在早期引入相同变动所需付出的代价高2~3个数量级。轻视维护是一个最大的错误。许多软件产品的使用寿命长达10年甚至20年,在这样漫长的时期中:a)必须改正使用过程中发现的每一个潜伏的错误;b)当环境变化时(例如硬件或系统软件更新换代)还必须相应地修改软件以适应新的环境;c)必须经常改进或扩充原来的软件以满足用户不断变化的需要。所有这些改动都属于维护工作,而且是在软件已经完成后进行的,是极端艰巨复杂的工作,需要花费很大代价。统计数据表明,实际上用于软件维护的费用占软件总费用的55%~70%。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。软件危机的原因第1章概述消除软件危机的途径⑴组织管理:软件开发不是某种个体劳动的神秘技巧,软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;⑵方法:应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好、更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;⑶工具:应该开发和使用更好的软件工具。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。第1章概述1968年,Bauer在北大西洋公约组织(NATO)会议上的定义:“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法"。1983年,IEEE的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法"。1993年,IEEE的一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中"。软件工程定义采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并维护它。

为软件开发提供了“如何做”的技术个性化方法⇒结构化方法⇒面向对象方法⇒软件复用第1章概述软件工程范畴软件工程学

软件开发技术

软件工程管理软件开发方法学软件工具软件工程环境软件工程管理学软件产权保护软件经济学

目的:为了按进度及预算完成软件计划内容:成本估算、进度安排、人员组织、质量保证等推迟实现;逐步求精;分解与抽象;信息隐蔽;质量保证。软件工程的基本思想第1章概述软件工程的发展阶段1、第一代软件工程——传统的软件工程60年代末到70年代为了克服“软件危机”(SoftwareCrisis)提出“软件工程”的名词,将软件开发纳入工程化的轨道,基本形成软件工程的概念、框架、技术和方法。称为传统的软件工程。2、第二代软件工程——对象工程80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。第1章概述软件工程过程ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。

软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。软件工程过程包含基本活动:开发活动:软件开发模型;项目管理活动:项目的范围(要做的内容)、进度(要花费的时间)、成本(要耗费的资源)过程改进活动:关注质量、软件开发的最佳实践、过程定义和改进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论