软件开发生命周期模型选择方法指南
概述
本文介绍如何利用项目的特性指标来选择生命周期模型。 文档定义了11个项目的特性指标,在下面的描述中对每一个特性指标都有相关的描述来说明该指标的含义以及它对选择模型的影响和作用。
在2.1节中描述了项目特性指标与生命周期模型的选择矩阵,在选择模型的时候收集项目特性指标信息以及该指标是否在当前项目中适用,然后根据项目特性指标权重赋值,最后根据计算的最高的得分来决定采用哪一种模型作为项目的软件开发的生命周期。
- 项目特性指标
- 项目特性指标定义
- 特征指标1 - 工作量:
项目的工作量指标是指完成这个项目估计需要的工作量。 一般来说工作量比较大的项目需要选择更加严格和正规的软件生命周期模型。
- 特征指标2 - 代码规模:
这个指标是标志软件的规模, 对不同的项目要使用不同的代码行规模估计的方法和技术,这样估计的结果才能真正反应一个项目的代码行规模。 可以使用项目的复杂度和项目的工作量结合起来代替代码行规模的指标。
- 特征指标3 - 开发团队规模:
通常对于大规模的开发团队,就要选用更加严格和正式的软件生命周期模型,因为随着团队规模的增加会导致由于人员之间的依赖和沟通而引发的风险。(人员数量是指项目各个阶段的投入人数的高峰值)
- 特征指标4 - 项目周期:
这个指标指项目从开始计划到项目最终结束所花费的时间。 项目周期的长短影响对软件生命周期模型的选择,比如只有1-2个月的项目就不适合选择比较严格和正规的生命周期。
- 特征指标5 – 项目复杂度:
项目的复杂度指标表明了一个项目的复杂程度。 复杂度是与规模的大小、软件的功能多少、接口的数量相关的。 对高复杂度的项目来说,推荐使用正规的、严格的生命周期来为项目管理提供更加严格和有效的控制机制。
- 特征指标6 - 关键程度:
项目的关键程度是指被开发的系统的业务的关键程度。 比如:金融联机交易软件等。 对于涉及关键业务的重要的软件,应该使用严格的、正式的生命周期模型,不建议采用四阶段的V模型。
- 特征指标7 - 需求明确程度:
该指标是衡量项目组和用户对需求的理解程度。 如果需求比较明确并被项目组和用户正确理解,有助于减少项目开发中间的需求的变更和中间阶段的返工和修改,从而降低项目的风险。 如果项目组和用户对需求的理解程度不高,需求在很大程度上是不明确的, 选择一个进化型或原型的生命周期模型可以帮助需求在每次的迭代和演化过程中得到逐步的明确和被确认,从而最终降低项目的风险。
- 特征指标8 - 需求稳定度:
需求稳定度是项目预期的需求的变化程度。 如果需求不是特别稳定,就需要选择复合型或者原型的生命周期模型,如增量开发模型或者进化开发模型。 这样可以确保需求在在一定范围内比较稳定。
- 特征指标9 – 对技术/架构的熟悉程度:
是指在该项目组中对采用的某种专门技术的熟悉和了解程度。
- 特征指标10 - 是否考虑软件的可重用性:
项目开发组考虑当前开发的软件是否可重用,如果开发的软件要求是可重用的,那就要选择一个比较正式的和严格的生命周期模型来指导开发。
- 特征指标11 - 是否使用现成的软件:
该指标是指是否在该项目开发中使用现成的软件, 可能是商业出售的软件、免费的软件或者是其他的软件。
- 项目特性指标与生命周期特征对应表
生命周期 à |
生命周期性能比较 |
|||
项目特征指标 |
瀑布模型 |
迭代模型 |
增量模型 |
原型开发模型 |
工作量 |
都适合 |
大于等于20个人月 |
都适合 |
小于20个人月 |
代码规模 |
都适合 |
JAVA代码行大于3万行 |
都适合 |
都适合 |
开发团队规模 |
都适合 |
都适合 |
都适合 |
都适合 |
项目周期 |
都适合 |
2个月以上 |
2个月以上 |
2个月以上 |
项目复杂度 |
都适合 |
中,高 |
都适合 |
高 |
关键程度 |
中,高 |
低 |
中,高 |
中,高 |
需求明确程度 |
明确程度高 |
低 |
明确程度高 |
低 |
需求稳定度 |
稳定度高 |
低 |
稳定度高 |
低 |
技术/架构的熟悉程度 |
高 |
低,中 |
高 |
低 |
是否在考虑软件的可重用性 |
高 |
中 |
高 |
中 |
是否使用现成的软件 |
高 |
高 |
高 |
高 |
生命周期优点分析 |
对管理者来说普模型能提供比较清楚的可视性; 进度比较稳定。 |
项目周期中等 对用户和管理者来说都能提供对项目较好的可视性 中间阶段的修改更加容易 风险管理容易 中等管理成本支出; 中等稳定的进度; |
适应于需求分批提供的项目; |
对用户和管理者来说都是高可视; 适合需求不明确的项目; 适合技术不成熟、需要技术验证的项目; |
需要特别关注的问题 |
对用户来说项目的可视性很差; 项目周期会比较长; 管理费用支出会比较高; 中间阶段修改错误比较困难; 风险管理比较困难。 |
要求管理者具有丰富的经验; 不适合可靠性、可扩展性要求很高的项目; |
要求管理者具有丰富的经验; 整体风险管理比较困难; |
要求管理者具有丰富的经验; |
附:增量模型的详细说明
对于应用集成项目,因为涉及到多个产品,在开发过程中,会将需求分解到各个产品中。各产品项目依照分配的需求进行开发,开发完成后,提交统一进行测试。开发过程中,如果采取增量式开发,增量开发的次数一般由以下因素来决定:
- 应用集成大项目的要求,
- 项目组现有资源;
- 需求分几次进行获取;
- 当前产品研发所处阶段;
- 每次增量的周期,一般来说,每次增量开发的周期不宜少于两个月。
总结
感谢每一个认真阅读我文章的人!!!
如果下面这些资料用得到的话可以直接拿走:
1、自学开发或者测试必备的完整项目源码与环境
2、测试工作中所有模板(测试计划、测试用例、测试报告等)
3、软件测试经典面试题
4、Python/Java自动化测试实战.pdf
5、Jmeter/postman接口测试全套视频获取
6、Python学习路线图
重点:配套学习资料和视频教学
那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。需要的点击下方名片加入群聊免费领取,群里还有大佬免费帮忙解答问题 。
软件开发生命周期模型选择方法指南相关推荐
- 【中级软考】软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型、RUP(Rational Unified Process 统一软件开发过程)、敏捷开发(开发方法,不是周期模型)
文章目录 瀑布模型/改进的瀑布模型(Waterfall Model) 螺旋模型(Spiral Model) 增量和迭代模型(Incremental Model) 原型法(RAPId Prototype ...
- 软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结...
在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格 ...
- 软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结
在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格 ...
- 信息系统项目管理:软件开发生命周期模型的选择比较
一.边做边改模型(Build-and-Fix Model) 遗憾的是,许多产品都是使用"边做边改"模型来开发的.在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次 ...
- 软件开发生命周期模型
1.瀑布模型 瀑布模型各个步骤是分立的,没有交叉,瀑布模型无法回溯 2.V模型 V模型存在一定的局限性,它仅仅作为需求分析概要设计...最后一个阶段,主要是针对测试寻找错误,需求分析的问题一直留到后期 ...
- 软件开发生命周期中的设计阶段_什么是软件生命周期模型?软件测试和软件开发的关系分析!...
软件生命周期这个词,对于大部分人应该比较陌生,但却不容忽视!正因为它的重要性,才有许多不同的软件开发生命周期模型,但是它们都有一个共同的特点,那就是在生命周期中的某一时刻,软件都会被测试.今天我就和大 ...
- 数据仓库的软件开发生命周期
数据仓库的软件开发生命周期 需求工程 设计 实施和单元测试 集成和系统测试 操作和维护 传统上,数据仓库项目遵循软件开发生命周期模型的一个变体,称为瀑布模型.虽然文献中有多个版本,各阶段的数量和名称不 ...
- sdlc 瀑布式 生命周期_SDLC指南–软件开发生命周期的阶段和方法
sdlc 瀑布式 生命周期 When I decided to teach myself how to code almost four years ago I had never heard of, ...
- 软件开发生命周期(SDLC)完全指南
译者:陈峻 软件开发生命周期(Software Development Life Cycle,SDLC)包含了软件从开始到发布的不同阶段.它定义了一种用于提高待开发软件质量和效率的过程.因此,SDLC ...
最新文章
- 使用霍夫变换检测车道线
- 负载均衡算法-权重轮询均衡
- 行矩阵列矩阵D3DGLU3D
- MySQL查询语种关键字_SQL——SQL语言全部关键字详解
- 职场信念:人生的12种财富(转帖)
- GCD简介三:Dispatch Sources
- TensorFlow神经网络(四)手写数字识别
- 太慢不能忍,CPU 拿硬盘和网卡开刀了!
- 如何自定义Mac 启动台每页的排列数量?
- scala学习笔记二----交互式shell编程使用
- 系统集成项目管理工程师证书有什么用?
- DTM、DEM与DSM的区别及其他
- 4种基站相关概念——宏基站、微基站、皮基站、飞基站
- PDF修改文字的步骤
- 架构设计的深入思考与总结——概述
- win gvim erlang 环境配置
- DB2活动日志满的原因、分析、处理与避免
- Python切图九宫格
- 微信小程序github源码大全下载
- HTTP ERROR 403 No valid crumb was included in the request ~jenkins 太高的版本错误。降低版本