软考121-上午题-【软件工程】-敏捷方法

一、敏捷方法

敏捷开发的总体目标是通过"尽可能早地、持续地对有价值的软件的交付"使客户满意。通过在软件开发过程中加入灵活性,敏捷方法使用户能够在开发周期的后期增加或改变需求。

敏捷过程的典型方法有很多,每一种方法基于一套原则,这些原则实现了敏捷方法所宣称的理念(敏捷宣言)。

它强调快速开发和有效适应需求变化。这种方法不要求严格遵循传统的软件开发流程,而是更加注重人的作用,强调开发团队与用户之间的紧密协作和面对面沟通。

敏捷方法适用于一开始并没有或不能完整地确定出需求和范围的项目,或者需要应对快速变化的环境。

1-1、极限编程(XP)

XP 是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为 4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。

**4 大价值观:**沟通、简单性、反馈和勇气。

**5 个原则:**快速反馈、简单性假设、逐步修改、提倡更改和优质工作。

12 个最佳实践:

  • 计划游戏(快速制定计划、随着细节的不断变化而完善)、
  • 小型发布(系统的设计要能够尽可能早地交付)、
  • 隐喻(找到合适的比喻传达信息)、
  • 简单设计(只处理当前的需求,使设计保持简单)、
  • 测试先行(先写测试代码,然后再编写程序)、
  • 重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、
  • 结对编程、
  • 集体代码所有制、
  • 持续集成(可以按日甚至按小时为客户提供可运行的版本)、
  • 每周工作 40 个小时、
  • 现场客户和编码标准。

1-2、水晶法

水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论。

1-3、并列争求法

并列争求法使用迭代的方法,其中,把每 30 天一次的迭代称为一个"冲刺",并按需求的优先级别来实现产品。

1-4、自适应软件开发

自适应软件开发有6个基本的原则:

  • 有一个使命作为指导;
  • 特征被视为客户价值的关键点;
  • 过程中的等待是很重要的,因此"重做"与"做"同样关键;
  • 变化不被视为改正,而是被视为对软件开发实际情况的调整;
  • 确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求;
  • 风险也包含其中。

1-5、敏捷统一过程

敏捷统一过程采用"在大型上连续"以及在"在小型上迭代"的原理来构建软件系统。采用经典的 UP 阶段性活动(初始、精化、构建和转换),提供了一系列活动,能够使团队为软件项目构想出一个全面的过程流。在每个活动里,一个团队迭代使用敏捷,并将有意义的软件增量尽可能快地交付给最终用户。每个 AUP 迭代执行以下活动:

·建模。建立对商业和问题域的模型表述,这些模型"足够好"即可,以便团队继续前进。

·实现。将模型翻译成源代码。

·测试。像 XP 一样,团队设计和执行一系列的测试来发现错误以保证源代码满足需求。

·部署。对软件增量的交付以及获取最终用户的反馈。

·配置及项目管理。着眼于变更管理、风险管理以及对团队的任一制品的控制。项目管理追踪和控制开发团队的工作进展并协调团队活动。

·环境管理。协调标准、工具以及适用于开发团队的支持技术等过程基础设施。

1-6、真题

真题1:

真题2:

真题3:

真题4:

真题5:

真题6:

真题7:

真题8:

真题9:

相关推荐
biter008820 分钟前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
车轮滚滚__30 分钟前
uniapp对接unipush 1.0 ios/android
笔记
Code哈哈笑1 小时前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
QQ同步助手2 小时前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
流浪的小新2 小时前
【AI】人工智能、LLM学习资源汇总
人工智能·学习
A懿轩A3 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
云边有个稻草人3 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
南宫生11 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__11 小时前
Web APIs学习 (操作DOM BOM)
学习
冷眼看人间恩怨11 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget