一、软件开发模型
1、瀑布模型(SDLC)
各个活动依照线性顺序连接,只适用于 需求明确 的项目。
优点:容易理解,管理成本低;强调开发的阶段性早期计划及需求调查和产品测试。
不足:客户需求必须十分明确;对项目风险管控能力弱,从而导致项目常常延期完成,开发费用超出预算。
真题链接
瀑布模型 适用于: 系统需求是完善的、简明的、一致的,而且可以先于设计和实现完成之前产生的项目。
2、其他经典模型概览
3、 增量模型
增量模型融合了瀑布模型的基本成分和原型实现的迭代特征
优点:增量模型作为瀑布模型的一个变体具有瀑布模型的所有优点;第一个可交付版本所需要的成本和时间少;风险不大;减少用户需求的变更;运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。
不足:可能会造成增量不稳定;增量可能需要重新开发,重新发布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。
(注:下图来自《软件设计师教程》(第5版)(褚华、霍秋艳主编,清华大学出版社))
真题链接
增量模型:是一种能够快速构造可运行产品的好方法。
4、原型模型、螺旋模型
原型模型
原型方法比较适合于 用户需求不清、需求经常变化 的情况,能快速、低成本地构建原型。
(注:下图来自《软件设计师教程》(第5版)(褚华、霍秋艳主编,清华大学出版社))
真题链接
为了有效地捕获系统需求,应采用 原型模型。
螺旋模型
有多个模型的组合,具有多个模型的特征。最显著的特征是:有风险分析,适用于 庞大、复杂并且具有高风险的系统。
优点:支持用户需求的动态变化;有助于提高软件的适应能力;降低了软件开发的风险。
不足:需要开发人员具有相当丰富的风险评估经验和专门知识;过多的迭代次数会增加开发成本,延迟提交时间。
真题链接
某公司计划开发一种产品,技术含量很高,与客户相关的风险也很多,则最适于采用 螺旋 开发过程模型。
5、V模型、喷泉模型与RAD
V模型
V模型在瀑布模型基础上将基本问题逐步细化,描述了质量保证活动和沟通、建模相关活动以及早期构建相关的活动之间的关系。(优点和不足与瀑布模型类似)
喷泉模型
喷泉模型是一种 以用户需求为动力,以对象作为驱动 的模型,适用于 面向对象 的开发方法。开发过程具有 迭代性 和 无间隙性,允许各开发活动交叉、迭代地进行。
优点:可以提高软件项目的开发效率,节省开发时间。
不足:需要大量的开发人员,不利于项目的管理;要求严格管理文档,使得审核的难度加大。
(注:下图来自《软件设计师教程》(第5版)(褚华、霍秋艳主编,清华大学出版社))
真题链接
喷泉 开发过程模型以用户需求为动力,以对象为驱动,适合于面向对象的开发方法。 开发过程具有 迭代性 和 无间隙性。
6、构件组装模型(CBSD)
7、统一过程(UP/RUP)
4个技术阶段里程碑(技术阶段由主要里程碑所终止)
初始阶段:生命周期目标
精化阶段:生命周期架构
构建阶段:初始运作功能
移交阶段:产品发布
真题链接
(注:下图来自前言中up主视频)
RUP在每个阶段都有主要目标,并在结束时产生一些制品。在 构建阶段 结束时产生“在适当的平台上集成的软件产品”。
(注:下图来自前言中up主视频)
统一过程(UP) 的 精化阶段 的里程碑是生命周期架构。关注 需求分析和架构演进。
8、敏捷开发方法
极限编程(XP)
4大价值观:(见上图)
5个原则:(见上图)
12个最佳实践:(见上图)
真题链接
极限编程(XP) 的价值观包括 沟通、简单性、反馈和勇气。系统的设计要能够尽可能早交付,属于 小型发布 最佳实践。
水晶方法(Crystal)
水晶法认为 每一个不同的项目都需要一套不同的策略、约定和方法论。
真题链接
敏捷开发方法中,水晶方法(Crystal) 认为每一种不同的项目都需要一套不同的策略、约定和方法论。
并列争求法(Scrum)
并列争求法使用 迭代 的方法,其中,把每30天一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品。
真题链接
在敏捷过程的开发方法中,并列争求法 使用了迭代的方法,其中,把每段时间(30天)一次的迭代称为一个“冲刺”,并按需求的优先级来实现产品,多个自组织和自治的小组并行地递增实现产品。
(注:下图来自前言中up主视频)
自适应软件开发(ASD)(了解即可)
敏捷统一过程(AUP)(了解即可)
二、信息系统开发方法
面向对象的开发方法:Booch方法、Coad方法 和 OMT方法。
面向数据结构的开发方法:Jackson方法。
真题链接
采用面向对象方法开发软件的过程中,抽取和整理用户需求并建立问题域精确模型的过程叫 面向对象分析。
若用户需求不清晰且经常发生变化,但系统规模不太大且不太复杂,则最适宜采用 原型化 开发方法,对于数据处理领域的问题,若系统规模不太大且不太复杂,需求变化也不大,则最适宜采用 结构化 开发方法。
(注:下图来自前言中up主视频)
软件的 分层式体系结构 把软件系统划分为4层,这4层结构自底向上分别是 系统软件、中间件、业务构件、应用软件。