第01章软件工程学概述02_第1页
第01章软件工程学概述02_第2页
第01章软件工程学概述02_第3页
第01章软件工程学概述02_第4页
第01章软件工程学概述02_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

人是有生命期的,那么软件呢?什么是软件生命周期?,软件工程导论,1.3软件生命周期,1、定义(GB/T11457)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期2、理解要点,1)从时间角度分解软件开发和维护中的各种复杂问题;2)是一个描述软件生存周期内系统开发、操作和维护所需实施的过程、活动和任务的框架;3)软件生存周期阶段的划分可因软件的规模、种类、开发方式、开发环境、开发方法的不同而不同。4)1988年发布的GB8566计算机软件开发规范中软件生存周期阶段的划分是基于“瀑布模型”给出的。,3,3、生命周期各阶段的基本任务,(系统分析),4,案例分析,某电力公司A,希望软件公司B为他们制造一种”电费结算系统”,该系统用于结算每一户电表1个月期间应该缴纳的电费。B公司得到电力公司A的这个要求之后,开始进入制作“电费结算系统”软件的生命周期。,5,问题定义阶段,该阶段的关键任务是要明确:要解决的问题是什么?,思考:以下几个选项中,哪个是B公司得出的结论:A.要解决某小区用电总度数问题B.要解决某小区总收电费问题C.要解决电力公司A管辖范围内的所有电表每月每户电费结算问题D.要解决重庆市内电表结算问题,6,可性行研究阶段,该阶段的关键任务是要明确:做不做?用最小的代价在尽可能短的时间内从经济、技术、社会因素等方面论证解决方案的可行性,思考:B公司在可行性分析阶段应该做些什么事情,会得出什么结论?,高层逻辑模型,准确和具体的工程规模和目标,成本/效益分析等可行性报告,7,需求分析阶段,该阶段的关键任务是要明确:做什么通过与客户不断的讨论、协商,对目标系统提出完整、准确、清晰、具体的要求.用正式的文档准确地记录对目标系统的需求,形成软件需求规格说明书(SRS),注意点,B公司在这个阶段应该对用户的要求进行详细的调研与分析,需要去了解电费结算中需要涉及到信息、结算电费的标准与公式、这个电费结算系统的产出文档是什么等内容,确定该系统需要实现的功能,例如:对使用电表的用户进行管理,对1个用户1个月的电费计算,能够生成结算单。最后以文档的形式描述出需求规格。这些是指导B公司进行下一步工作的依据。,8,概要设计(总体设计)阶段,该阶段的关键任务是要明确:怎么做?提出实现目标系统的几种方案,制定最佳方案的详细计划系统的体系结构设计阶段性成果:概要设计说明书、数据库或者数据结构说明书、组装测试计划等,根据上一步得到的需求规格说明书,将需求功能进行模块划分,B公司的设计人员开始了对“电费结算系统”的设计。例如,系统管理模块,电费计算模块,生成结算单模块等。,9,详细设计阶段,该阶段的关键任务是要明确:具体做法设计出程序的详细规格说明,即详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。阶段性成果:详细设计规格说明书和单元测试计划等,对每一个模块,设计它的实现算法和数据结构。例如,电费计算模块,需要根据计算公式进行电费的计算。B公司的设计人员开始了对“电费结算系统”的设计。,10,编码和单元测试阶段,该阶段的关键任务是编码和单元测试编写出正确的、易理解的、易维护的程序模块;仔细测试编写出的每一个模块;阶段成果:经过单元测试后的代码,单元测试报告等。,B公司程序员们开始对每个模块进行分工,各自负责1个或者多个模块,然后写代码,代码写好了,还需要对自己所写模块的代码进行测试,保证自己的正确性。,11,综合测试阶段,该阶段的关键任务是通过各种类型的测试(及调试)使软件达到预定的要求组装测试:根据设计的软件结构,把经过单元测试检验的模块按某种策略装配起来,在装配过程中对程序进行必要的测试。验收测试:按照规格说明书的规定,由用户对目标系统进行验收,看其是否达到需求规格说明书中定义的全部功能和性能等方面的需求。验收测试结束后,经过评审的软件产品就可以交付投入使用了。,经过上面的几个步骤,B公司的人员终于拿出了“电费结算系统”,他们需要对该系统进行各种测试,包括集成测试,系统测试,用户环境测试,验收测试等等,确保该系统能够平稳的运行在A公司中。,12,软件维护阶段,该阶段的关键任务是通过各种必要的维护活动使系统持久地满足用户的要求。改正性维护:诊断和改正在使用过程中发现的软件错误适应性维护:修改软件以适应环境的变化完善性维护:根据用户的要求改进或扩充软件使它更完善预防性维护:修改软件为将来的维护活动预先做准备,在电力公司A的实际使用当中,“电力结算系统”出现了一些问题,B公司需要派人员进行维护。此外,A公司对B公司所开发的系统比较满意,愿意继续让B公司对其进行其他方面功能的扩充,例如:分小区进行用电量和电费收益的统计分析等。,13,软件工程(生命周期各阶段的基本任务),问题定义,可行性研究,需求分析,总体设计,详细设计,编码与单元测试,综合测试,软件维护,要解决的问题是什么?,问题性质、工程目标和规模的报告,分析员:实际用户+负责人,是否有解决办法?,分析员,高层逻辑模型,准确和具体的工程规模和目标,成本/效益分析等可行性报告,为了解决问题,目标系统必须做什么?准确确定系统的功能,系统的逻辑模型(数据流图+数据字典+简要算法),如何解决这些问题,模块划分软件结构,如何具体地实现系统:每个模块的流程图(程序的详细规格说明),通过各种类型的测试,使软件达到预定的要求,写出正确的容易理解和容易维护的程序模块,通过各种必要的维护活动使系统持久地满足用户的需要,14,几个关干软件生命周期阶段的问题,问题一:开发一个软件大概需要多少资金、时间,将获得什么效益一般是在哪个阶段确定?相对而言,在哪个阶段与用户交流最多?问题二:系统分析员主要工作在哪个时期?程序员主要工作在哪个时期?问题三:软件定义时期的三个阶段,各自回答什么关键问题?问题四:软件开发时期有几个阶段?各自回答什么关键问题?,15,几个关干软件生命周期阶段的问题,问题五:软件体系结构最早是在哪个阶段决定的?问题六:详细设计与程序编写阶段有什么样的密切联系?问题七:“软件测试是为了验证系统的正确性”这句话对吗?问题八:软件维护有那几种?各有什么功能?,16,1.4软件过程,软件开发的这些阶段,是按什么样的顺序排列的呢?经过软件工程领域科学家在实际项目的基础上不断研究和发现,总结出了一些可以遵循的规律过程模型,17,1.4软件过程,什么是软件过程?为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。过程是软件工程三要素之一。通常用软件生命周期模型来描述。,18,软件开发模型,瀑布模型快速原型模型螺旋模型喷泉模型,19,过程模型的选择,首先,了解每一种过程模型的特点和适用性。其次,根据软件项目的特点选择合适的过程模型。值得注意的是,由于现实中项目的复杂性,通常会在一个项目中选择几种过程模型嵌套使用。,20,案例:,某个老师(T)想要考察一个同学(S)的学习情况和技术水平,于是交给该学生一个任务。T:我有一个朋友想要一个图象浏览软件,能够查看多种格式的图象,包括BMP、TIFF、JPG、PNG,并且能够支持一般的放大、缩小、漫游。你能做这样一个软件吗?S:就是类似ACDSEE这样的软件吗?T:差不多,不过不需要那么强大的功能,我这个朋友计算机是外行,最好能做的比较方便,傻瓜型的,例如象ACDSEE自动翻页这种功能还是要的。S:我以前学过BMP和JPG的图象格式解析,我想没有问题T:好的,给你30天时间,下周你再来一趟,跟我讲一下你的工作进度。这位同学非常明白老师的意图,回去后想了一下,并列出了一个清单。,21,一、功能:1。读取、显示、另存四种格式图片(BMP、TIFF、JPG、PNG)2。放大、缩小、漫游3。列出当前目录下所有四种格式图片文件名4.PAGEUP(PAGEDOWN)自动调出当前目录上一张(下一张)图片二、其它说明:1。界面尽量简介,容易操作2。不要图片预览和打印三、开发工具:VisualStudio四、开发环境:普通PC机;Windows7/8/10五、工作量:1.研究一下四种图片的格式2.设计一个解析器类,解析这四种格式3.设计一个文档类,实现读取、另存和目录浏览功能4.设计一个视图类,实现显示、缩放、漫游功能,工作清单,22,PARTONETheProcess,软件制造的八个阶段:,可行性分析,需求分析,概要设计,详细设计,编码,测试,交付,维护,对话过程,工作清单一、二,工作清单三、四、五,写代码前的思考过程,写代码,提交给老师检查,给老师朋友安装、讲解,修正问题、改进软件,23,实际情况1一切顺利,学生S按期交付了软件,经过一两周的试用、修改、完善后,三方都比较满意,该软件在老师的朋友那里成为一个得心应手的工具。,瀑布模型,24,1.4.1瀑布模型,1970年,由W.Royce提出1、传统的瀑布模型从上一阶段接受本阶段的工作对象,作为输入;利用输入,完成本阶段活动的内容本阶段的工作成果作为输出传入下一阶段。,25,瀑布模型实际的瀑布模型,需求分析,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,增加了一个评审活动,评审每个阶段完成的活动,若得到确认,则进行下一阶段的活动;否则返回前一阶段,甚至更前阶段返工;,26,瀑布模型特点,阶段间具有顺序性和依赖性推迟实现的观点质量保证的观点,27,瀑布模型,优点:1)可强迫开发人员采用规范的开发方法;2)严格规定每个阶段必须提交的文档;3)要求每个阶段的提交工作产品都必须通过QA的验证,缺点:缺乏灵活性,变动成本高,适用于需求非常明确的情况。,28,实际情况2一周后,学生去见老师,并提交了工作清单,他发现老师的这位朋友(C)和老师在一起。S:这是工作清单,我已经研究清楚了四种文件的格式,可以写代码了。T:很好,不过我这位朋友有一些新想法,你不妨听听。C:你好。我新买了一个扫描仪,你的程序可不可以直接扫描图片进来。S:你可以自己扫描呀,买扫描仪的时候一般都会送正版软件的。C:是的,可是我一直不太会用,你知道我计算机水平不高,学一些新东西很累,也没有时间,如果你能直接链接扫描仪,我只要学会你的软件就行了,我愿意多支付一些费用,还有,我想建一个图片库,你知道,我工作时需要上百个图片,经常找不到,最好还带模糊查询。,29,实际情况2(续)S:.!C:还有一些,现在一时想不起来,我想起来的话会再跟你联系,时间上可以长一些。S:.!T:要不这样吧,你先做一个样子出来给C看看,一边做,一边改。C:这样最好,看见一个基本样子我就知道我想要什么了事情就这样定下来了,S愤怒的撕掉了自己的工作清单.,回去后S花1天时间用DELPHI做了个样子,只能读BMP和JPG文件,做了些菜单和工具栏,用ACCESS建了一个图片库。就这个“假”的程序,S和C讨论了一天,S又修改了几次,又讨论了几次,一周后,这个“假”的程序表面看起来和真的一模一样。,30,实际情况2(续)于是S打算用VC重写这个程序,但是他很快发现继续用DELPHI写更方便,因为至少界面不用重做了,于是,两个月后,这个事情终于结束了。S顺利的完成了他的毕业设计JPG压缩优化算法设计,C一直使用这个软件管理他的图片,并庆幸花了这么少的钱得到了这么有用的东西,而T,则正在考虑如何为他下一批学生分派任务。,原型模型,31,1.4.2快速原型模型,快速原型模型是软件开发过程中,软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用。,32,原型模型的开发途径,1.仅仅模拟软件系统的人机界面和人机交互方式2.开发一个工作模型,实现软件系统中重要的或者容易产生误解的功能。3.利用一个或者几个类似的正在运行的软件向用户展示软件系统的可见部分。,33,由于软件项目的特点和运行原型的目的不同,分为两种类型:,软件原型的分类,2、追加(addon)型也称快速建立渐进原型RCP法(RapidCyclicPrototyping)法采用循环渐进的开发方式,对系统模型作连续精化,即先构造一个功能简单而且质量要求不高的模型系统,将系统需要具备的性质逐步添加上去,通过不断地扩充修改,逐步追加新的要求,直至所有性质全部满足,此时的原型模型也就是最终的产品。,1、废弃(throwaway)型也称为快速建立需求规格原型RSP法(RapidSpecificPrototyping),先构造一个功能简单而且质量要求不高的模型系统,针对这个模型系统反复进行分析修改,让用户学习。待需求说明书一旦确定,原型将被废弃,后阶段的工作仍按照瀑布模型开发。,34,快速原型模型(RapidPrototypingModel),快速原型模型,规格说明,可运行原型,快速原型模型的基本思想:,快速分析,快速实现,及时反馈,反复评价和改进,适应变化,最终实现系统,原型不断的废弃,得不到用户的认可,需求总是确定不下来,花费掉大量的人力物力。,35,原型模型:一个反复修改的过程,原型很快被接受,确认了用户的需求,可以开始进入设计阶段了。,36,快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求。适用:主要适用于项目需求不太明确,项目组成员(需求分析人员,设计人员,程序员和用户)不能很好交流或者通信有困难的情况。,快速原型模型,37,1.4.3增量模型,增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。第二个增量构件提供更完善的编辑和文档生成功能;第三个增量构件实现拼写和语法检查功能;第四个增量构件完成高级的页面排版功能。,38,构件1,增量模型:第1个模型是核心具有迭代性质,每个增量都提交一个可操作的产品并行开发规避技术风险,演化提交方式,在瀑布模型基础上所有阶段都进行增量开发,增量提交,及早发现问题,修改方便.,39,增量模型与瀑布模型的区别,瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作前,必须完成前一阶段的所有细节。增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早产生工作软件。,40,40,增量模型的优点,采用瀑布模型或快速原型模型开发软件时,目标都是一次就把一个满足所有需求的产品提交给用户。增量模型则与之相反,它分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件接一个构件地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。显然,能在较短时间内向用户提交可完成部分工作的产品,是增量模型的一个优点。,41,螺旋模型:对于大型软件,只开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即:制定计划确定软件目标,选定实施方案,弄清项目开发的限制条件风险分析分析所选方案,考虑如何识别和消除风险实施工程实施软件开发客户评估评价开发工作,提出修正建议,特点:在原型模型基础上,引入多次原型反复并增加风险评估。,1.4.4螺旋模型(SpiralModel)(Boehm88),42,螺旋模型(SpiralModel)(Boehm88),风险分析原型1,需求、生命周期计划,风险分析原型2,软件需求需求确认,开发计划,风险分析原型3,软件产品设计设计确认验证,集成与测试计划,风险可运行,模拟模型详细设计编码单元测试集成测试,螺旋模型,分析,制定计划,确定目标选择方案设定约束,风险分析,识别风险排除风险,客户评估,实施工程,开发验证,提出修改意见,实现,验收测试,原型,基准,43,螺旋模型是一种演进式软件过程模型.采用循环方式逐步加深系统定义和实现深度,降低风险确定一系列里程碑,确保共同利益者都支持可行的和令人满意的系统解决方案建立在风险驱动上,若没发现大的风险或专家都风险评估不准,肯定发生问题.,使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高,44,各种模型的比较,45,1.4.5喷泉模型,是典型的面向对象生命周期模型。“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。为避

温馨提示

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

评论

0/150

提交评论