软件过程模型
- 瀑布模型
- 瀑布模型变种-V模型
- 演化模型-原型模型
- 增量模型
- 演化模型-螺旋模型
- 喷泉模型
- 基于构件的开发模型
- 形式化方法模型
- 统一过程模型
- 敏捷方法
- 极限编程
- 其他方法
- 软件过程模型概述
- 练习题
瀑布模型
- 瀑布模型(SDLC):瀑布模型是一个经典的生命周期模型,一般将软件开发分为:可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码、测试、运行维护几个阶段。
- 瀑布模型是以文档作为驱动、适合于软件需求很明确的软件项目的模型。
- 瀑布模型特点:
①从上一项开发活动接收该项活动的工作对象作为输入。
②接收输入后,实施该项活动应完成的工作内容。
③给出该项活动的工作成果,作为输出传给下一项开发活动。
④对该项活动的实施工作成果进行评审。若评审通过,则进入下一项开发活动;否则返回前一项甚至更前项的活动。
瀑布模型变种-V模型
- V模型:从整体上看起来,就是一个V字型的结构,由左右两边组成。
- 左边的线分别代表了需求建模(需求分析)、概要设计、详细设计、编码。
- 右边的线分别代表了单元测试、集成测试、系统测试与验收测
试。
- V模型的特点如下:
① 单元测试主要针对编码过程中可能存在的各种错误进行验证。
② 集成测试主要针对详细设计中可能存在的各种错误进行验证。
③ 系统测试主要针对概要设计,检查系统作为一个整体是否可以有效地运行。
④ 验收测试主要是针对需求建模、需求分析,通常由业务专家或者用户进行,以确认产品能真正符合用户业务上的需要。
⑤ V模型用于需求明确和需求变更不频繁的情形。
⑥ V模型中的突出的是测试和开发生命周期各阶段的结合。
演化模型-原型模型
- 原型模型:第一步是交流,然后创建一个快速原型,能够满足项目干系人与未来的用户之间通过原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。
例如Axure RP快速原型设计工具,可以使用拖拽元件生成一个web - 原型法认为在很难一下子全面准确地提出用户需求的情况下,原型应当具备的特点如下:
① 实际可行。
② 具有最终系统的基本特征。
③ 构造方便、快速,造价低。
④ 它对用户需求是动态的、逐步纳入的。
增量模型
- 增量模型:增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。增量之间是需要有优先级的,首先要开发核心模块功能,第一个增量是它的核心,而后与用户确认后开发下一个增量,优先级高的增量(服务)最先交付。
- 特点:由于不是从系统整体角度规划各个模块,每一次增量的模块划分可能没有延续性,因此不利于模块划分。难点在于如何将客户需求划分为多个增量。与原型不同的是增量模型的每一个增量版本都可以作为独立的作品,而原型的构造一般是为了演示。
演化模型-螺旋模型
- 螺旋模型:是一个演化过程模型,它将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来。在螺旋模型中,软件开发是一些列的增量发布。
- 螺旋模型将瀑布模型和演化模型结合起来,强调了风险分析,特别适用于大型、复杂度高、风险高的系统。
- 螺旋模型将开发过程分为几个螺旋周期,具有周期性重复的螺旋线状,每个螺旋周期大致和瀑布模型相符合。每个螺旋周期分为如下4个工作步骤:制定计划、风险分析、实施工程和客户评估。
喷泉模型
- 喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法使开发过程具有迭代性和无间隙性。
- 特点
- 喷泉模型的各个阶段没有明显的界线,开发人员可以同步进行。
- 其优点是可以提高软件项目的开发效率,节省开发时间。
- 由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理。此外,这种模型要求严格管理文档,使得审核的难度加大。
基于构件的开发模型
了解,近几年没有考过
- 基于构件的开发模型(CBSD):利用预先保证的构件拉构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。
- 特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本。
形式化方法模型
了解,考点的少
- 形式化方法模型:建立在严格数据基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。
一般用于数学建模
统一过程模型
- 统一过程(UP)模型:是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。迭代的意思是将整个软件开发项目划分为许多个小的“袖珍项目”,每个“袖珍项目”都包含正常软件项目的所有元素:计划、分析和设计、构造、集成和测试,以及内部和外部发布。
- 统一过程模型包括4个阶段:初始阶段、精化阶段、构建阶段、移交阶段。
①初始阶段:生命周期目标。
②精化阶段:生命周期架构。
③构建阶段:初始运作功能。
④移交阶段:产品发布。 - 每次迭代产生包括最终系统的部分完成的版本和任何相关的项目文档的基线,通过逐步迭代基线之间相互构建,直到完成最终系统。在每个迭代中有5个核心工作流:捕获系统应该做什么的需求工作流,精化和结构化需求的分析工作流,在系统构架内实现需求的设计工作流,构造软件的实现工作流,验证实现是否如期望那样工作的测试工作流。
- 统一过程的典型代表是RUP(Rational Unified Process)。RUP是UP的商业扩展,完全兼容UP,但比UP更完整、更详细。
敏捷方法
- 敏捷方法:敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性,敏捷方法使用户能够在开发周期的后期增加或改变需求。
- 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,相对于传统软件开发方法的“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
- 敏捷软件开发宣言:
- 个体和交互胜过过程和工具
- 可以工作的软件胜过面面俱到的文档
- 客户合作胜过合同谈判
- 响应变化胜过遵循计划
- 敏捷过程的典型方法有很多,每一种方法基于一套原则,这些原则实现了敏捷方法所宣称的理念(敏捷宣言):极限编程(XP)、水晶法(Crystal)、并列争求法(Scrum)、自适应软件开发(ASD)、敏捷统一过程(AUP)
极限编程
- 极限编程(XP):XP是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。
- 4大价值观:沟通、简单性、反馈和勇气。
- 5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
- 12个最佳实践:
① 计划游戏(快速制定计划、随着细节的不断变化而完善)、
② 小型发布(系统的设计要能够尽可能早地交付)、
③ 隐喻(找到合适的比喻传达信息)、
④ 简单设计(只处理当前的需求,使设计保特简单)、
⑤ 测试先行(先写测试代码,然后再编写程序)、
⑥ 重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、
⑦ 结队编程、
⑧ 集体代码所有制、
⑨ 持续集成(可以按日甚至按小时为客户提供可运行的版本)、
⑩ 每周工作40个小时、
⑪ 现场客户
⑫ 编码标准
其他方法
- 结对编程:一个程序员开发,另一个程序员在一旁观察审查代码,能够有效的提高代码质量,共同对代码负责:
- 自适应开发:强调开发方法的适应性。侧重为软件的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。
- 水晶方法:每一个不同的项目都需要一套不同的策略、约定和方法论。
- 并列争求法SCRUM:是一种迭代的增量化工程,把每段时间(30天)一次的迭代成为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
软件过程模型概述
类型 | 特征 |
---|---|
瀑布模型 | 结构化方法。容易理解、管理成本低、需求明确、文档齐全、风险控制弱 |
V模型 | 瀑布模型的变体,开发与测试结合。 |
增量模型 | 瀑布模型和原型模型的结合体。第一个增量是核心。如增量不确定管理成本会增加。 |
原型模型 | 原型方法。也叫快速原型模型,属于演化模型。适合需求不明确、经常变化的项目。 |
螺旋模型 | 属于演化模型。瀑布模型和原型模型的结合体。适合大型、复杂、有风险的项目。 |
喷泉模型 | 面向对象方法。复用好、开发过程无间隙、节省时间。 |
RUP/UP | 用例驱动、架构为中心、迭代、增量。 |
练习题
(2014年真题)以下关于统一过程UP的叙述中,不正确的是()。
A.UP是以用例和风险为驱动,以架构为中心,迭代并且增量的开发过程
B.UP定义了四个阶段,即起始、精化、构建和确认阶段
C.每次迭代都包含计划、分析、设计、构造、集成、测试以及内部和外部发布
D.每个迭代有五个核心工作流
答案B
统一过程模型包括4个阶段:初始阶段、精化阶段、构建阶段、移交阶段
(2020年真题)喷泉模型是一种适合于面向()开发方法的软件过程模型。该过程模型的特点不包括()
A,对象
B.数据
C,数据流
D,事件
A,以用户需求为动力
B,支持软件重用
C,具有迭代性
D,开发活动之间存在明显的界限
答案A D
(2021年真题)关于螺旋模型,下列陈述中不正确的是(),()。
A.将风险分析加入到瀑布模型中
B,将开发过程划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符
C,适合于大规模、复杂且具有高风险的项目
D.可以快速的提供一个初始版本让用户测试
A,支持用户需求的动态变化
B,要求开发人员具有风险分析能力
C,基于该模型进行软件开发,开发成本低
D.过多的迭代次数可能会增加开发成本,进而延迟提交时间
答案D C