📜  自适应软件开发-实践

📅  最后修改于: 2021-01-23 07:07:08             🧑  作者: Mango


适应性软件开发实践是由对持续适应性的信念所驱动的,其生命周期旨在接受持续的变化作为规范。

自适应软件开发生命周期致力于-

  • 持续学习
  • 改变方向
  • 重新评估
  • 展望不确定的未来
  • 开发人员,管理人员和客户之间的紧密协作

自适应SDLC

自适应软件开发将RAD与软件工程最佳实践结合在一起,例如-

  • 计划启动。
  • 自适应周期计划。
  • 并行组件工程。
  • 质量审查。
  • 最终质量检查和发布。

自适应软件开发实践可以说明如下-

实践学习循环

如上所示,自适应软件开发实践分布在以下三个阶段:

  • 推测-启动和计划

    • 计划启动

    • 为整个项目建立时间表

    • 确定迭代次数,并为每个迭代次数分配一个时间框

    • 为每次迭代制定主题或目标

    • 为每个迭代分配特征

  • 协作-并发功能开发

    • 分布式团队合作

    • 小型项目的合作

    • 大型项目合作

  • 学习-质量审查

    • 从客户角度看结果质量

    • 从技术角度看结果质量

    • 交付团队的职能和实践团队成员正在利用

    • 项目状态

推测-启动和计划

在自适应软件开发中,推测阶段有两个活动-

  • 引发
  • 规划

推测有五个实践,可以在启动和计划阶段重复执行。他们是-

  • 计划启动
  • 为整个项目建立时间表
  • 确定迭代次数,并为每个迭代次数分配一个时间框
  • 为每次迭代制定主题或目标
  • 为每个迭代分配特征

计划启动

项目启动涉及-

  • 设定项目的任务和目标
  • 了解约束
  • 建立项目组织
  • 识别和概述需求
  • 进行初步规模和范围估算
  • 识别关键项目风险

项目启动数据应在JAD的初步会议中收集,以速度为主要方面。对于中小型项目,启动可以集中进行2至5天的工作,而对于大型项目,则可以进行2至3周的工作。

在JAD会话期间,将收集足够详细的需求以识别功能并建立对象,数据或其他体系结构模型的概述。

为整个项目建立时间框

应该根据项目启动工作产生的范围,功能集要求,估计和资源可用性来确定整个项目的时间范围。

如您所知,推测并不会放弃估算,但这只是意味着接受估算可能会出错。

迭代和时间框

根据总体项目范围和不确定性程度,确定迭代次数和各个迭代长度。

对于中小型应用程序-

  • 迭代通常从四到八周不等。
  • 有些项目在两周的迭代中效果最佳。
  • 有些项目可能需要八周以上的时间。

根据您的需要选择时间。一旦确定了迭代次数和每个迭代的长度,就可以为每个迭代分配时间表。

制定主题或目标

团队成员应为每次迭代制定一个主题或目标。这类似于Scrum中的Sprint目标。每次迭代都应提供一组功能,这些功能可以演示产品功能,使产品对客户可见,以便进行审核和反馈。

在迭代过程中,构建应该最好每天提供工作功能,以实现集成过程并使产品对开发团队可见。测试应该是功能开发中不可或缺的一部分。它不应延迟到项目结束。

分配功能

开发人员和客户应共同为每个迭代分配功能。此功能分配的最重要标准是,每次迭代都必须向客户交付一组具有相当功能的可见功能。

在将要素分配给迭代期间-

  • 开发团队应提出功能估计,风险和依赖性,并将其提供给客户。

  • 客户应使用开发团队提供的信息确定功能优先级。

因此,迭代计划是基于功能的,并与开发人员和客户一起完成。经验表明,与项目经理基于任务的计划相比,这种类型的计划可以更好地理解项目。此外,基于功能的计划反映了每个项目的独特性。

协作─并发功能开发

在协作阶段,重点放在开发上。协作阶段有两项活动-

  • 开发团队合作并交付有效的软件。

  • 项目经理促进协作和并发开发活动。

协作是共享创造的行为,包含开发团队,客户和经理。信任和尊重是共同创造的基础。

团队应该合作-

  • 技术问题
  • 业务需求
  • 快速决策

以下是与自适应软件开发中的“协作”阶段相关的实践-

  • 分布式团队合作
  • 小型项目的合作
  • 大型项目合作

分布式团队合作

在涉及分布式团队的项目中,应考虑以下内容-

  • 各种联盟伙伴
  • 基础知识
  • 人们互动的方式
  • 他们管理相互依赖性的方式

小型项目合作

在较小的项目中,当团队成员在距离很近的地方工作时,应鼓励与非正式的走廊聊天和白板涂鸦进行协作,因为这样做是有效的。

大型项目合作

较大的项目需要其他实践,协作工具和项目经理的互动,并且应根据上下文进行安排。

学习-质量审查

自适应软件开发提倡“实验与学习”的概念。

从错误和实验中学习,团队成员必须尽早共享部分完成的代码和工件,以便-

  • 发现错误
  • 向他们学习
  • 通过在小问题变成大问题之前发现问题来减少返工

在每个开发迭代的末尾,有四大类要学习的东西-

  • 从客户角度看结果质量
  • 从技术角度看结果质量
  • 交付团队和实践团队的职能
  • 项目状态

从客户角度看结果质量

在自适应软件开发项目中,获得客户反馈是第一要务。建议的做法是客户焦点小组。这些会议旨在探索应用程序的工作模型并记录客户变更请求。

客户焦点小组会议是便利会议,类似于jad会议,但不是生成需求或定义项目计划,而是旨在查看应用程序本身。客户提供有关迭代产生的工作软件的反馈。

从技术角度看结果质量

在自适应软件开发项目中,对技术工件的定期审查应该给予重视。代码审查应连续进行。可以每周或在迭代结束时对其他技术工件(例如技术体系结构)进行审查。

在自适应软件开发项目中,团队应定期监视自己的性能。回顾会鼓励团队一起学习自己和他们的工作。

迭代结束回溯有助于定期进行团队绩效自我检查,例如-

  • 确定什么不起作用。
  • 团队需要做的事情更多。
  • 团队需要减少的工作量。

项目状态

项目状态审查有助于计划进一步的工作。在自适应软件开发项目中,确定项目状态是基于功能的方法,每次迭代的结束均以完成的功能为特征,从而导致可运行的软件。

项目状态审查应包括-

  • 项目在哪里?
  • 项目与计划在哪里?
  • 该项目应该在哪里?

由于自适应软件开发项目中的计划是推测性的,因此,除了上面的问题2以外,问题3也很重要。也就是说,项目团队和客户需要不断地问自己:“到目前为止,我们学到了什么,这是否改变了我们对下一步工作的看法?”