软件工程实践 课件 单元1 软件工程概述_第1页
软件工程实践 课件 单元1 软件工程概述_第2页
软件工程实践 课件 单元1 软件工程概述_第3页
软件工程实践 课件 单元1 软件工程概述_第4页
软件工程实践 课件 单元1 软件工程概述_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件的概念、特点和分类1.1软件的概念、特点和分类软件是计算机系统中与硬件相互依存的另一部分,它包括程序、数据、相关文档的完整集合以及完善的售后服务。软件=程序+数据+文档+服务软件就是程序,开发软件就是编写程序。软件的概念:1.1软件的概念、特点和分类软件的概念:软件=程序+数据+文档+服务程序:用计算机程序设计语言描述的。数据:是程序加工的对象和结果。文档:记录软件开发的活动和中间制品,记录软件配置及变更,用于软件专业人员和用户的交流,用于软件开发、过程管理和运行阶段的维护。服务:完善的售后服务1.1软件的概念、特点和分类1)软件是一种逻辑实体,不是具体的物理实体2)软件产品的生产过程主要是研制3)软件具有“复杂性”,其开发和运行常受到计算机系统的限制4)软件成本昂贵,其开发目前尚未完全摆脱人工的开发方式5)软件不存在磨损和老化问题,但存在退化问题软件的特点:1.1软件的概念、特点和分类失效率时间磨合调整磨损用坏硬件失效曲线图软件失效曲线图软件的特点:1.1软件的概念、特点和分类软件的分类:1.1软件的概念、特点和分类软件的分类——按软件的功能划分:(3)应用软件商业数据处理软件工程与科学计算软件地理信息系统软件系统仿真软件智能产品嵌入软件医疗、制药软件(1)系统软件操作系统数据库管理系统设备驱动程序通信处理程序等(2)支撑软件文本编辑程序图形处理软件数据库管理软件CASE工具软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件危机和软件工程1.2软件危机和软件工程1.2.1软件危机软件危机的概念、表现、原因、解决途径1.2.2软件工程

软件工程的概念、发展阶段1.2.1软件危机什么是软件危机?20世纪60年代末,西方工业发达国家经历了一场“软件危机”。1968年,由北大西洋公约组织(NATO)在德国召开的国际学术会议上首次提出。这场软件危机表现为:一方面,软件十分复杂,价格昂贵,供需差日益增大;另一方面,软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去控制。软件危机是指:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。1.2.1软件危机软件危机的表现:(1)对软件开发成本和进度的估计常常很不准确。(2)用户对“已完成的”软件系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例逐年上升。(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。1.2.1软件危机软件危机的产生原因:(1)客观:软件本身特点软件的规模庞大、复杂性高。没有完善的质量保证体系。(2)主观:软件开发和维护方法不正确忽视需求分析认为:软件开发=程序编写轻视软件维护1.2.1软件危机软件危机的产生原因:1.2.1软件危机软件危机的解决途径:组织管理工程项目管理方法技术措施软件开发技术与方法软件工具结论:按工程化的原则和方法组织软件开发工作是必要的、有效的,也是摆脱软件危机的一个主要出路。1.2.2软件工程软件工程(SoftwareEngineering)是在克服60年代末所出现的“软件危机”的过程中逐渐形成与发展的。

随着互联网平台和环境的迅速发展,对软件工程的发展产生了变革性的巨大影响,网格计算、普适计算、中间件、网构软件等一批新技术和理念,从网络资源共享与管理,人机交互及软件服务等各方面提出了软件技术的新课题。1.2.2软件工程

40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程

组件工程3.第三代软件工程

过程工程2.第二代软件工程

对象工程1.第一代软件工程

传统的软件工程1.2.2软件工程软件工程的发展阶段:

40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程

—组件工程3.第三代软件工程

—过程工程2.第二代软件工程

—对象工程1.第一代软件工程

传统的软件工程20世纪60年代末,为了克服软件危机,提出“软件工程”术语,将软件开发纳入工程化的轨道,基本形成软件工程的概念、框架、技术和方法。这一阶段称为传统的软件工程。1.2.2软件工程软件工程的发展阶段:

40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程

—组件工程3.第三代软件工程

—过程工程2.第二代软件工程

—对象工程1.第一代软件工程

传统的软件工程20世纪80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。1.2.2软件工程软件工程的发展阶段:

40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程

—组件工程3.第三代软件工程

—过程工程2.第二代软件工程

—对象工程1.第一代软件工程

传统的软件工程20世纪80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产效率,保证软件质量的关键是“软件过程”,是软件开发和维护中的管理和支持能力,逐步形成软件过程工程。1.2.2软件工程软件工程的发展阶段:

40多年来,软件工程已经历了四个重要发展阶段:4.第四代软件工程

—组件工程3.第三代软件工程

—过程工程2.第二代软件工程

—对象工程1.第一代软件工程

传统的软件工程20世纪90年代起,基于组件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用组件组装完成,而无须从头开始构造,以此达到提高效率和质量,降低成本的目的。这一阶段称为组件工程。软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件工程的定义和基本原则1.3软件工程的定义和基本原则软件工程的提出:“软件工程”一词是1968年北大西洋公约组织(NATO)在联邦德国召开的一次会议上首次提出的,这个会议专门讨论了软件危机问题。它反映了软件人员认识到软件危机的出现及谋求解决这一危机的努力。因此,这次会议被看作是软件发展史上一个重要的里程碑。1.3

软件工程的定义和基本原则1968年德国人Bauer在北大西洋公约组织会议上的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。1983年IEEE的软件工程定义:软件工程是开发,运行,维护和修复软件的系统方法。1993年IEEE的一个更加综合的定义:将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程,即将工程化应用于软件中+

这些方法的研究。软件工程的定义:1.3软件工程的定义和基本原则软件工程是指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。简言之:工程方法+管理技术+技术方法+经济软件工程的定义:1.3软件工程的定义和基本原则软件工程的层次:1.3软件工程的定义和基本原则软件工程的目标:(1)付出较低的开发成本;(2)达到要求的软件功能;(3)取得较好的软件性能;(4)开发的软件易于移植;(5)需要较低的维护费用;(6)能按时完成开发工作,及时交付使用。1.3软件工程的定义和基本原则软件工程的基本原则:著名的软件工程专家B.W.Boehm提出了软件工程的七条基本原理。这七条原理是确保软件产品质量和开发效率的原理的最小集合。这七条原理是互相独立的,其中任意六条原理的组合都不能代替另一条原理,因此,它们是缺一不可的最小集合,然而这七条原理又是相当完备的,人们虽然不能用数学方法严格证明它们是一个完备的集合,但是,可以证明在此之前已经提出的100多条软件工程原理都可以由这七条原理的任意组合蕴含或派生。1.3软件工程的定义和基本原则软件工程的基本原则:1.用分阶段的生命周期计划严格管理不成功的软件项目中有一半左右是由于计划不周造成的。2.坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后再进行。3.实行严格的产品控制在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。4.采用现代程序设计技术采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。1.3软件工程的定义和基本原则软件工程的基本原则:5.结果应能清楚地审查根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。6.开发小组的人员应该少而精开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。小组人员增加,交流情况和讨论问题而造成的通讯开销也急剧增加。7.承认不断改进软件工程实践的必要性不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。1.3软件工程的定义和基本原则软件工程的其他原则:抽象信息隐藏模块化局部化一致性完整性可验证性软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件过程模型(上)1.4软件过程模型(上)软件工程过程的定义:软件工程过程是为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动。软件过程是一个任务集合,包括一组软件工程任务、里程碑和应该交付的产品。软件过程主要是定义了运用方法的顺序,应该交付的文档资料,为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。1.4软件过程模型(上)软件过程示意图:方法与规范工具和设备有技能、经过培训的开发人员软件过程1.4软件过程模型(上)软件过程模型也称为软件生存期模型或软件开发模型,是描述软件过程中各种活动如何执行的模型。定义了软件开发活动,给出了它们之间的逻辑关系,为软件工程管理提供里程碑和进度表;为软件开发提供框架和方法。软件过程模型的定义:1.4软件过程模型(上)由于吸取了开发早期的教训,人们开始将软件开发视为工程来管理。类似于其他的工程管理,软件开发也具有一定的工序。“软件生命周期”这一概念真正被提了出来。瀑布模型是最早的过程模型。1、瀑布模型1.4软件过程模型(上)1、瀑布模型可行性研究可行性论证论告需求分析需求说明书运行与维护维护报告测试测试报告编码程序详细设计详细设计文档概要设计

概要设计文档运行阶段计划阶段问题定义目标与范围说明书开发阶段产生的文档1.4软件过程模型(上)例:某个老师(T)想要考察一个同学(S)的学习情况和技术水平,于是交给该学生一个任务。1、瀑布模型T:我有一个朋友想要一个图象浏览软件,能够查看多种格式的图像,包括BMP、TIFF、JPG、PNG,并且能够支持一般的放大、缩小。你能做这样一个软件吗?S:就是类似ACDSEE这样的软件吗?T:差不多,不过不需要那么强大的功能,我这个朋友计算机是外行,最好能做的比较方便,傻瓜型的,但是自动翻页这种功能还是要的。S:我以前学过BMP和JPG的图像格式解析,我想没有问题。T:好的,给你30天时间,下周你再来一趟,跟我讲一下你的工作进度。1.4软件过程模型(上)1、瀑布模型这位同学非常明白老师的意图,回去后想了一下,并列出了一个清单:

一、功能:1.读取、显示、另存四种格式图片(BMP、TIFF、JPG、PNG)2.放大、缩小3.列出当前目录下所有四种格式图片文件名4.PAGEUP(PAGEDOWN)自动调出当前目录上一张(下一张)图片二、其它说明:1.界面尽量简洁,容易操作2.不要图片预览和打印三、开发工具:VC++

四、开发环境:普通PC机;Windows7

五、工作计划:1.研究一下四种图片的格式2.设计一个解析器类,解析这四种格式3.设计一个文档类,实现读取、另存和目录浏览功能4.设计一个视图类,实现显示、缩放功能1.4软件过程模型(上)1、瀑布模型1.4软件过程模型(上)特点:(1)从上一项开发活动接受该项活动的工作对象,作为输入。(2)利用这一输入,实施该项活动应完成的工作内容。(3)给出该项活动的工作成果,作为输出传给下一项活动。(4)对该项目活动实施的工作成果进行评审。若工作得到确认,则继续进行下一次开发活动,否则返回前一项,甚至更前项的活动。1、瀑布模型1.4软件过程模型(上)1、瀑布模型优点:(1)消除非结构化软件。(2)降低软件的复杂度。(3)促进软件开发工程化。缺点:(1)阶段与阶段划分完全固定,阶段间产生的大量文档,极大地增加了工作量。(2)由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间较长,也增加了一定的风险。(3)前面未发现的错误传到后面的开发活动中,可能会扩散,进而可能会造成更不理想的效果。1.4软件过程模型(上)增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的。该模型有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。2、增量模型定义概要需求把需求分配给需要设计系统结构开发系统增量验证增量组装增量验证系统系统不完全最终系统1.4软件过程模型(上)增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。2、增量模型1.4软件过程模型(上)2、增量模型问:增量模型和瀑布模型之间的本质区别是什么?答:增量模型包含了瀑布模型的基本活动,但是瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前必须完成前一阶段的所有细节;而增量模型属于非整体开发模型,即它推迟某些阶段或所有阶段中的细节,然后不断将细节补充进去,每次增量过程都会发布一个可运行的产品,直到产生工作软件。1.4软件过程模型(上)2、增量模型优点:(1)客户不必等到整个系统全部完成就能得到他们所需要的东西。第一个增量构件满足他们最关键的需求,软件可以直接使用。(2)客户可以使用较早的增量构件作为原型,用于取得经验,从而获得稍后的增量构件的需求。(3)项目失败的风险较低。虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。一个必然的事实是:最重要的系统服务将接受最多的测试。这意味着系统最重要的部分一般不会遭遇失败。1.4软件过程模型(上)2、增量模型缺点:要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。1.4软件过程模型(上)2、增量模型适用于具有以下特征的软件开发项目:-软件产品可以分批次地进行交付-待开发的软件系统能够被模块化-软件开发人员对应用领域不熟悉,难以一次性地进行系统开发-项目管理人员把握全局的水平较高软件工程概述软件工程软件工程的定义和基本原则软件危机和软件工程软件过程模型(上)软件过程模型(下)软件的概念、特点和分类软件过程模型(下)1.5软件过程模型(下)3、快速原型模型

快速原型的工作模型是一个循环的模型,分为以下4步:1.快速分析:快速确定软件系统的基本要求,确定原型所要体现的特征(界面、总体结构、功能、性能)2.构造原型:考虑主要特征,快速构造一个可运行的系统。有三类原型:用户界面原型、功能原型、性能原型。3.运行和评价原型4.修改与改进运行和评价修改改进构造原型快速分析1.5软件过程模型(下)3、快速原型模型适用于具有以下特征的软件开发项目:-已有产品或产品的原型(样品),只需客户化的工程项目-简单而熟悉的行业或领域-有快速原型开发工具-进行产品移植或升级1.5软件过程模型(下)螺旋模型将瀑布模型与原型模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型适应于风险较大的大型软件项目的开发。它的优点是将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险。但是这种模型的控制和管理较为复杂,可操作性不强,对项目管理人员的要求较高。4、螺旋模型1.5软件过程模型(下)4、螺旋模型1.5软件过程模型(下)实施工程:按照确定的方案开发验证产品;风险分析:评估方案、标识风险和解决风险;客户评估:客户运行原型并评价后,计划下一周期工作。4、螺旋模型螺旋模型的每个螺旋周期可分为4个工作步骤:制定计划:确定当前周期的目标、方案和限制条件;1.5软件过程模型(下)该模型克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。适宜面向对象的方法。迭代性:软件的某部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙性:分析和设计活动等各项活动之间没有明显的边界。5、喷泉模型1.5软件过程模型(下)喷泉模型以面向对象

温馨提示

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

评论

0/150

提交评论