您好,欢迎访问三七文档
——软件过程第二章软件过程•软件生命周期的基本任务(重点)•瀑布模型(重点)•快速原型模型•增量模型•螺旋模型(重点)•喷泉模型——软件过程软件过程•定义:软件工程过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。•主要包括:•软件规格说明:规定软件的功能及其运行的限制;•软件开发:产生满足规格说明的软件;•软件确认:确认软件能够完成客户提出的要求;•软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。——软件过程•软件过程定义了:•方法使用的顺序•要求交付的文档资料•为保证质量和适应变化所需要的管理•软件开发各个阶段完成的里程碑•软件过程特性:•易理解性•可见性•可支持性•可接受性•可靠性•健壮性•可维护性•速度——软件过程§2.1软件生命周期的基本任务1.软件生存期Softwarelifecycle•软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期。•软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生存周期。软件生存周期主要包括以下3个部分:1.软件定义(系统分析):问题定义、可行性研究(软件计划)、需求分析;2.软件开发(系统设计):概要设计、详细设计、软件实现(编码、单元测试)、综合测试(组装测试、确认测试);3.软件运行、维护。——软件过程可行性研究、制定初步软件项目计划需求分析、制定需求规格说明概要设计详细设计实现组装测试确认测试使用维护退役问题定义可行性研究需求分析概要设计详细设计编码和单元测试综合测试软件维护——软件过程一、问题定义问题定义阶段必须回答的关键问题:“要解决的问题是什么”。通过调研,系统分析员应该提出关于问题性质、工程目标和工程规模的书面报告,并且得到客户对这份报告的确认。这一阶段应该完成的书面报告《立项建议书》、《立项调查报告》。——软件过程二、可行性研究这个阶段要回答的关键问题是:“上一阶段所确定的问题是否有行得通的解决办法”。•确定要开发软件系统的总目标;•给出功能、性能、可靠性以及接口等方面的要求;•完成该软件任务的可行性研究;•估计可利用的资源(硬件,软件,人力等)、成本、效益、开发进度;•制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查;•编写《软件可行性分析报告》。——软件过程三、需求分析这个阶段要准确的回答:“目标系统必须做什么”。需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,对系统目标提出完成、准确、清晰、具体的要求。•对用户提出的要求进行分析并给出详细的定义;•编写软件需求说明书或系统功能说明书及初步的系统用户手册;•最后完成产品需求定义,编写产品需求规格说明书;•提交管理机构评审。——软件过程四、概要设计这个阶段要概括地回答:“怎样实现目标系统”。概要设计也可以说是体系结构的设计,根据软件需求规格说明建立软件系统的总体结构和模块间的关系,定义个功能模块的接口,规定设计约束,确定设计策略、制定组装测试计划。把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应,编写设计说明书,评审。——软件过程五、详细设计这个阶段要概括地回答:“怎样具体地实现这个系统”。详细设计阶段的任务就是对概要设计产生的功能模块逐步细化,形成若干个可编程的程序模块,用某种过程设计语言设计程序模块的内部细节,包括算法、数据结构和各程序模块之间的详细接口信息,为编写源代码提供必要的说明,并拟定模块测试方案。整个阶段包括用户界面设计、数据库设计、模块设计,编写设计说明书,提交评审。——软件过程需求开发实现与测试体系结构设计用户界面设计数据库设计模块设计系统设计概要设计详细设计——软件过程六、编码和单元测试这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块,并对这些程序进行调试和程序单元测试。准备编程代码审查单元测试组装测试缺陷管理与改错模块——软件过程七、综合测试这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。最基本的测试时集成测试和验收测试。集成测试:根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过成程中队程序进行必要的测试。验收测试:按照规格说明书的规定,由用户(或在用户积极参与下)对目标系统进行验收。——软件过程八、软件维护这个阶段的关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。•改正性维护:诊断和改正在使用过程中发现的软件错误;•适应性维护:修改软件以适应环境的变化;•完善性维护:根据用户的要求改进或扩充软件,使它更完善;•预防性维护:修改软件为将来的维护活动预先准备。——软件过程阶段关键问题结束标准(任务)问题定义问题是什么?关于规模和目标的报告书可行性研究是否可行?系统的高层逻辑模型;数据流图;成本/效益分析需求分析系统必须做什么?系统的逻辑模型;数据流图;数据字典,算法描述概要设计任何解决问题?系统流程图;成本/效益分析层次图和结构图详细设计怎样具体的实现细化功能模块、设计所需的算法和数据结构编码和单元测试正确的程序模块源程序清单;单元测试方案和结果组装测试符合要求的软件综合测试方案和结果;完整一致的软件配置运行、维护持久地满足用户需要完整准确的维护记录——软件过程•软件生命周期基本原则:(1)用户参与的原则;(2)“先逻辑,后物理”的原则;(3)“自顶向下”的原则;(4)工作成果描述标准化的原则。•软件生命周期核心思想:(1)严格区分工作阶段。(2)自顶层向下层逐层开发,结构化,模块化。(3)建立面向用户的观点,充分预料可能发生的外部环境、内部处理、用户需求的变化。(4)加强调查研究和系统分析,推迟编程和保证开发质量。——软件过程软件开发模型•软件开发模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。•瀑布模型•快速原型模型•增量模型•螺旋模型•喷泉模型——软件过程§2.2瀑布模型•瀑布模型(生存周期模型)就是传统的生命周期方法学(既自顶向下结构化开发模型方法)。•特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证观点。•优点:奠定了软件工程方法的基础;流水依赖;便于分工协作;推迟现实;文档易修改;有复审质量保证。•缺点:用户需求明确困难;用户见面晚;纠错慢;难于克服系统分析员不懂专业领域的知识,用户不懂计算机的困难,成功率低。适合于系统要求明确的小系统。——软件过程——软件过程问题定义可行性研究需求分析概要设计详细设计编码测试运行维护评价返回计划维护阶段开发阶段定义阶段定义做什么的问题结构设计如何做的体系结构修改设计需求说明书设计说明书源程序清单测试报告维护报告——软件过程§2.3快速原型模型•原型模型(prototypemodel)是为了确定需求而提出的实际模型。打破传统的自顶向下结构化开发模型方法,在计划和需求分析后,把系统主要功能接口做为设计依据,快速开发出软件样机,及时征求用户意见,正确确定系统需求,然后再进一步准确地进行系统设计与实现。•优点:与用户见面快;开发成功率高,适合于需求不确定的大系统。•缺点:周期长,开发成本高。——软件过程——软件过程计划需求分析原型开发原型评价最终系统设计最终系统实现用户反馈意见建立/修改原型听取用户意见用户测试运行原型•开发思路对需求简单快速分析后,利用先进的开发工具,尽快构造出一个原型,直至系统提供给用户评价、试用,在试用中不断修改完善原型,直至用户满意为止,否则重新构造一个原型。——软件过程§2.4增量模型•增量模型也称渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。增量模型由若干个开发序列构成,每个序列均采用瀑布模型来开发可以发行的“增量”,每个“增量”都是在原有软件基础上开发出来的,每产生一个“增量”相当于推出一个软件新版本。增量模型是一种分段的线性模型。它与瀑布模型没有实质性的区别。——软件过程——软件过程优点:1.抗变化能力比瀑布模型强;2.每一个“增量”实现后就可以交给用户使用,开发新的“增量”不会花费太长的时间。难点:1.在把每个增量构件集成到现有软件体系结构中时,必须不破坏原来已经发布出的产品。2.必须把软件的体系机构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程简单、方便。——软件过程分析调试编码设计增量4系统/信息工程分析调试编码设计增量1第1个增量的发布分析调试编码设计增量2第2个增量的发布分析调试编码设计增量3第3个增量的发布第4个增量的发布——软件过程§2.5螺旋模型•螺旋模型(spiralmodel)它是瀑布模型与原型模型的结合,不仅体现了两个模型的优点,而且还增加了新的成分——风险分析。螺旋模型沿着螺线旋转(一个螺旋式周期),在四个象限上分别表达四个方面的活动,即:•制定计划──确定软件目标,选定实施方案,弄清项目开发的限制,选定完成目标的策略;•风险分析──分析所选方案,考虑如何识别和消除风险,风险角度分析该策略;•实施工程──实施软件开发,启动一个开发阶段;•客户评估──评价前一步开发工作,提出修正建议,计划下一轮的工作。——软件过程——软件过程——软件过程•特点•瀑布模型+快速原型+风险分析•迭代过程•边开发、边评审•缺点•执行风险分析的费用较高,会大大降低项目的利润;•使用该模型要求开发人员具备相当丰富的风险分析经验;•螺旋模型过于复杂,不及瀑布模型那么容易理解。——软件过程§2.6喷泉模型•喷泉模型(spiralmodel)喷泉模型是一种“逐步求精”的面向对象生命周期模型。喷泉模型其实是瀑布模型的另一种表述,其中的各个活动仍然按照分析、设计、实现这样的顺序来执行。迭代、无缝——软件过程——软件过程组合模型软件开发模型是针对软件开发的某些问题和要求设计的,他们都有各自的优点和不足,在实践中,经常把几种模型组合在一起配套使用,形成组合模型。1.以一种模型为主,潜入另外一种或几种模型;2.建立软件开发的组合模型。——软件过程小结软件生命周期:问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试以及维护八个阶段。•瀑布模型:规范、文档驱动的方法,适合于项目管理。•原型模型(快速原型):适于需求不稳定情形。•增量模型:在早期阶段使投资获得明显回报,适于需求不稳定情形,它能够有计划地管理技术风险,易于维护。体系结构必须是开放的。•螺旋模型:适合于大型的内部开发项目。•喷泉模型:适用于C/S模式的开发模型,是一种面向对象范型的过程模型。——软件过程讨论1.对于大型软件系统的开发,当缺乏系统开发经验时,通常采用什么开发方法?为什么?2.开发一决策支持系统不适宜选用哪个方法?请说明理由,并给出适宜的开发方法。3.某一实际项目要求尽量避免编程,减少设计、测试、安装和维护的工作量,选用什么过程模型较为适宜?为什么?
本文标题:软件工程2
链接地址:https://www.777doc.com/doc-213005 .html