软件过程模型-Chapter2-PartI
2016-09-16 本文已影响0人
崇本息末
一 软件过程
-
软件过程定义以下内容
- 人员与分工
- 所执行的活动
- 活动的细节与步骤
-
软件过程通过一下方式组织和管理软件生命周期
- 定义软件生产过程中的活动
- 定义这些活动的顺序及其关系
-
软件过程的目的
- 标准化(可模仿)、可预见性(降低风险)、提高开发频率、得到高质量产品
- 提升制定时间和预算计划的能力
黑盒过程黑盒过程和白盒过程
- 存在的问题
- 要求开发之前需求被充分理解
- 与客户的交互只在开始(需求)和最后(发布)--类似于产品制造过程
- 而实际情况与这完全不同
- 优点
- 可通过改进可见性来减少风险
- 在开发过程中,通过不断地获得顾客的回馈允许变更--类似于服务过程
二 典型的软件过程模型
- 瀑布模型
-
增量过程模型
- 增量模型
- 快速应用程序开发
-
演化过程模型
- 螺旋模型
- 原型模型
-
其他过程模型
- 形式化过程
- 基于复用的软件过程
- 敏捷过程模型
瀑布模型瀑布模型
- 优点 -- 追求效率
- 缺点 -- 过于理想化
增量过程模型
- 增量模型
** 软件被作为一系列的增量来设计、实现、集成和测试,每一个增量是由多种相互作用的模块所形成的提供功能的代码片段构成 **
本质: 「以迭代的方式运用瀑布模型」
-
RAD模型
- 快速应用开发RAD(Rapid Application Development)
- 侧重于短开发周期(一般为60-90天)的增量过程模型
- 多个团队并行进行开发
- 缺点
- 需要大量的人力资源
- 如果没有在短时间内急速完成整个系统做好准备,RAD项目将会失败
- 如果系统不能被合理的模块化,RAD将会带来很多问题
- 技术风险很高的情况下,不宜采用RAD
- 快速应用开发RAD(Rapid Application Development)
演化过程模型
- 快速原型法
「原型的类型」
-
Throwaway prototyping(抛弃式原型)
- 最初的原型在完成并得到认可后,将不会作为交付给用户的最终系统的一部分,而是被抛弃,其目的只是为了收集与验证需求
- 该原型可能是不可执行的
- Evolutionary prototyping(演化式原型)
- 最初构造的原型将具备较高的质量,包含了系统的核心功能,然后通过收集需求对其不断进行改善和精华
- 该类原型是可执行的,将成为最终系统的一部分
「快速原型法的优缺点」
-
优点:提高和改善客户/用户的参与程度,最大程度响应用户的变化。
-
缺点:为了尽快完成原型,开发者没有考虑整体软件的质量和长期的可维护性,系统结构通常较差;可能混淆原型系统与最终系统;额外的开发费用。
-
螺旋式过程模型
- 螺旋模型沿着螺线旋转,在四个象限内表达四个方面的活动
- 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制
- 风险分析:分析所选方案,考虑如何识别和消除风险
- 实施工程:实施软件开发
- 客户评估:评价开发工作,提出修正建议
「螺旋式过程模型的优缺点」
- 出发点:开发过程中及时识别和分析风险,并采取适当措施以消除或减少风险来的危害。
- 优点:结合了原型的迭代性质与瀑布模型的系统性和可控性,是一种风险驱动型的过程模型。
- 缺点:适用于大规模软件项目,特别是内部项目,周期长、成本高。
三 总结
「软件过程」存在黑盒过程、白盒过程。其中黑盒过程与客户交流不够,客户只在开始和结束才能接触到产品开发;白盒过程则可以在产品过程开发中获得客户的反馈,从而不断的改进开发。
「软件过程模型」主要有「瀑布模型」、「增量过程模型」、「演化过程模型」。「瀑布模型」很难回溯,一般适用成熟的技术开发。「增量过程模型」中有「增量模型」和「RAD模型」,从本质上来讲,「增量模型」是一种迭代方式运用瀑布模型,「RAD模型」是一种并行的增量模型。「快速原型」是构建一个原型,然后客户据此原型提出进一步的需求。「螺旋式过程模型」结合了原型的迭代性质和瀑布模型的系统性和可控性,但周期长、成本高。
综合各个模型,只有确定项目开发的性质,才能合理选择适合的软件过程模型,使得软件开发正常的进行。