软件过程模型习惯上称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。典型的软件过程有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式化方法模型等。
瀑布模型将软件生命周期中的各个活动规定为依据线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。
增量模型是一种分阶段的软件开发过程,它将在软件开发的不同阶段中,按照一定的时间间隔,逐步增加新的功能和特性。增量模型的特点是逐步增加软件的功能、减少开发风险以及灵活的变更管理。
可交付的第一个版本所需要的成本和时间很少,开发由增量表示的小系统所承担的风险不大,由于很快发布了第一个版本,因此可减少用户需求的变更。同时,它也具有瀑布模型所有的优点。
若没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;若需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发或重新发布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。
典型的演化模型有原型模型和螺旋模型。
原型模型开始于沟通,目的是定义软件的总体目标、标识需求,然后快速制定原型开发计划,确定原型的目标和范围,快速构建原型并交付用户使用,收集客户反馈意见,并在下一轮中对原型进行改进。在前一个原型需要改进(或扩展其范围)的时候,进入下一轮原型的迭代开发。
原型模型又根据使用目的的不同,分为探索型原型、实验型原型和演化型原型。
螺旋模型是一种风险驱动的软件开发过程,它将软件开发分为多个螺旋周期,每个螺旋周期都包含需求分析、设计、实现和测试等阶段,同时不断评估风险和调整开发计划。螺旋模型的特点是不断迭代和完善的软件开发过程、高风险的分析和风险管理以及灵活的变更管理。
敏捷开发模型是一种以人为中心、迭代、灵活的软件开发过程,它强调快速响应变化、持续交付价值和高质量的软件产品。敏捷开发模型的特点是高度迭代、自我组织、开放式反馈以及持续改进。
XP是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。
沟通、简单性、反馈和勇气。
快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
测试驱动开发(TDD);短迭代周期;简单设计;结对编程;集体所有制;持续集成;每周工作40小时;现场客户;代码规范;可持续的开发速度;计划游戏;系统隐喻。
水晶法认为每一个不同的项目都需要一套不同的策略、 约定和方法论,认为人对软件质量有重要的影响,因此随着项目质量和开发人员素质的提高,项目和过程的质量也随之提高。通过更好地交流和经常性的交付,软件生产力得到提高。
并列争求法使用迭代的方法,其中,把每30天一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品。多个自组织和自治的小组并行地递增实现产品。协调是通过简短的日常情况会议来进行,就像橄榄球中的“并列争球”。
敏捷统一过程(Agile Unified Process,AUP) 采用”在大型上连续”以及在“在小型上迭代”的原理来构建软件系统。采用经典的UP阶段性活动(初始、精化、构建和转换),提供了一系列活动,能够使团队为软件项目构想出一个全面的过程流。在每个活动里,一个团队迭代使用敏捷,并将有意义的软件增量尽可能快地交付给最终用户。每个AUP迭代执行以下活动:
基于构件的开发模型是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品(COTS)软件构件。一种基于构件的开发模型包括领域工程和应用系统工程。
统一过程(UP)模型是一种“用例和风险驱动,以架构为中心,迭代并增量”的开发过程,由 UML 方法和工具支持。统一过程定义了四个技术阶段及其主要工作产品:
统一过程的典型代表是 RUP,RUP 是 UP 的商业扩展,完全兼容 UP,比 UP 更完整、更详细。
敏捷方法的总体目标是通过尽可能早地、持续地对有价值的软件进行交付使客户满意。敏捷过程的典型方法有很多,每一种方法基于一套原则,这些原则实现了敏捷方法所宣称的理念,即敏捷宣言。
软考学习笔记,欢迎纠错与探讨,不喜勿喷!