软件架构师何志丹

软件架构师何志丹

1.1     过程模型

1.1.1 瀑布模型

瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个阶段,每个阶段完成后才完成后一个阶段。优点:一,阶段清晰,对新团队和新人十分友好。二,前几个阶段都有输出,方便事后总结。三,熟悉此模型有利于了解其它模型。四,根据各阶段完成情况可以不断修正估计的工期。缺点:一,工作量大,文档多、会议多。二,周期长,这意味不适应需求经常变化的项目。也意味着不能早点发现问题,问题发现得越早,问题的解决成本越小。

1.1.2 原型模型

探索型原型,用于获取需求和验证需求。实验型原型用于验证设计。演化型原型是过程模型。探索型原型确认完需求就会被抛弃,所以尽可能的简单。一,只需要完成少量最核心的功能和风险最大的功能。二,每个功能的实现都尽可能的简单,能演示就行。三,往往需要专门的工具来支持来开发快速原型。适用范围:需求不明或需求经常变化。缺点:开发原型会增加额外成本。

1.1.3 螺旋模型

螺旋模型为应对风险而生。它将整个生命周期划分为若干个子周期,在整个生命周期结束前不知道共有多个子周期。每个子周期只关心当前子周期,不关心下个子周期的内容。每个子周期分为4个阶段:需求定义、风险分析、工程实现和评审。缺点:工期和成本未知,这意味着无法和客户合作。适用范围:试验型产品或项目,只有上天才知道是否可行。

1.1.4 喷泉模型

喷泉模型解决了瀑布模型各阶段不能并行进行的问题。其缺点是:一,管理难度大增。二,对前面几个阶段的人员要求高,因为需求弄错了,后面的就全部白做了。优点:为了减少白做和返工,一定先完成稳定的、不会变化的部分,这些部分适合封装。而封装可以提高可复用性。喷泉模型适合成员相互熟悉、制度规范的成熟团队。

1.1.5 增量模型

增量模型简单的说将产品或项目分成几个子产品或项目。每个子产品(子项目)都给用户使用,都能给用户创造价值。优点:一,用户能够较早使用。二,由于是分批交付,所以用户能够大致知道项目进度。三,降低失败的损失。任何时候失败都只损失一个子产品。缺点:一,由于要兼容已完成的子产品,所以新子产品出生就带着历史包袱。二,可能会陷入局部最优解,对子产品最合适,但对整个产品不是最合适。用户已经使用的子产品,修改的成本太高,因为不能影响用户使用。

1.1.6 演化型原型模型

演化型原型模型简单的说将产品或项目分成几个子产品或项目。每个子产品(子项目)都给用户试用。优点:一,高度匹配用户需求。二,由于只是试用,已完成的子产品可以大改。三,每个子产品的经验可以直接用于下个子产品,有利于提高效率和质量。缺点:占用用户时间太多。由于试用产品的都是基层员工,他们不会因为对需求而减少本职工作。为了不影响本职工作,只能早早了事。假定你在餐馆吃饭,厨师一会问你多大的火候,加多少油,加多少盐?你是不是一脸茫然“多少颗盐?还是多少克盐?我都不知道”。建议:合同规定对方的员工至少花多少小时用于试用。

1.1.7 过程模型的选择

如果是成长中的团队,无脑选择瀑布模型。成熟团队分以下四种情况。无法确定方案是否可行,用螺旋模型;方案可行,具体需求无法全部确定,用原型模型。需求基本确定,需要分期用增量模型,不需要分期用喷泉模型。

------------恢复内容结束------------

02-21 18:07