什么是业务分析中的渐进式的进化设计 -XP123


敏捷、进化设计、精益启动、精益软件开发等–所有这些都试图为您提供提高反馈水平的工具,为您实现渐进式设计提供了一种上下文。
渐进式设计的工作原理是使系统一次增加一种功能,从而使设计到目前为止足以满足系统需求。随着需求的变化,系统会不断发展以满足他们的需求。进化设计面临技术挑战,但有限制的信念和误解往往是最大的障碍。
 
产品/客户方面
您有没有听到或说过这些话?

“当我想要的时候,我想要的就是我想要的。”
“一切都是必须的。”
“一切都是第一要务。”
“你是谁?质疑我的需求?”
“固定范围,固定时间表。”
 
陷阱
业务可能会陷入多个陷阱。这不仅仅是“平均”或“不良”客户:这是对环境所产生和奖励的行为的回应。

  • 对抗性关系,因为客户因担心得不到他们需要的一半,所以总是双倍索要
  • “需求”陷阱:“需求”一词使我们误以为事情是必需的。大多数情况下,它们是需要评估的思想,需要与资源和其他思想进行权衡。
  • 解决方案:需求的框架不是预定的解决方案,而是“如何解决”问题或需要解决的问题。在不了解问题的情况下锁定解决方案会使我们误入歧途。(即使我们成功了,我们也有冒险得到我们所要求的东西,而不是解决问题的方法。)
  • “全有或全无”的谬论:今天的用户并没有您认为需要的一切,他们会对更快交付的一些子集感到满意。(或者,也许-他们讨厌您选择的方向,最好还是早一点知道。)

 
解决陷阱
我们如何解决这些问题?
  • 探索问题以及如何知道我们在解决问题方面取得了进展。
  • 共同探索想法–许多解决方案都是可以接受的。
  • 确保故事符合需求。
  • 认识到解决大多数问题是反复的–我们尝试的解决方案可能需要进一步的工作。
  • 寻找仍然代表进度的较小步骤。
  • 认识到尽管用户故事的标题可能抓住了所需解决方案的本质,但在该范围内通常会有其他选择,我们可以寻找更小的增量。
  • 利用可交付(最好是已交付)的不断发展的系统来获取反馈。

我肯定在这方面做错了。在早期的电子商务站点中,我们花费了大量时间来创建目录,构建订购系统等。在进行部署时,我们在三件事上学得了教训:
  • 我们错过了大型组织的架构过程要求。
  • 我们需要某些页面上的其他信息才能满足法律要求。
  • (最具有破坏性的)企业实际上还不需要完整的网站–他们不是在寻找“销售,销售,销售”,而不是“我们可以吸引网站访问量吗?” 

其实只需付出很小的努力就可能回答这些问题。这种经历确实说明了理解真正关键之处同时着重于首先交付的重要性。
 
管理
  • 放弃固定计划的假设:敏捷是围绕反馈和学习而建立的。敏捷方法的一大机遇是,您可以根据所学知识调整计划,而不是在对项目需求最不了解的情况下制定计划。
  • 认识到重构是进化方法的必要部分。与其推测设计需要的所有内容,我们不如将某些设计思想和工作投入到迄今为止的代码中。这有点像撰写建议,先写出较差的草稿,然后进行编辑–改变具体的决定比寻求初步的完善要容易。
  • 为实验留出空间:如果您头脑状态不好,虽一直都在努力工作,那么您就不可能有足够的带宽来探索新的工作方式。如果您当前的方法不可持续,则最好找出一种更好的方法。

 
测试人员
测试人员也经常担心:
“如果没有首先明确规定的要求,我们将无法进行测试。”“迭代意味着我们必须多次测试整个系统。”“测试一个不完整的解决方案是没有意义的。”
您是否听到过“向左移”一词(提早介入)?它适用于稍后发生的活动,但是可以提前完成其他可以主动解决基本目标的事情。
经常会告诉测试人员,测试将采用规范和软件,并评估软件是否符合规范。
但这不是唯一的测试。如果测试人员的心态可以向左移动,这也很有价值:围绕设计和代码进行早期讨论和决策,以更好地统一理解,并根据他们的想法(如用户或对手)提供早期反馈。
尽早提供有关代码的反馈也很有价值。编码涉及许多决策,这些决策取决于较早的决策,而对基础的反馈可以节省以后的工作。
 
开发团队
不仅仅是业务使演化交付更加困难。如果您是一名程序员,您是否听说过或说过……?

“我们在那里也可以做所有事情。”
“我已经知道他们需要什么。”
“简历驱动的开发。”
“让我们首先建立一个框架;那就容易了。”
“用户也想要……”
“让我们用[本月最酷的语言/工具]来编写。”
“只要告诉我们您需要什么。”
有几个陷阱:

  • 非沟通–不与项目社区合作以找出真正需要的东西和最重要的东西。
  • 接单–等待被告知要做什么而不是解决问题。
  • 投机性一般性” –超出我们目前正在做的工作(通常是疯狂或错误地)进行一般化,以期将来获得回报。
  • 个人利益–将个人欲望置于真正的业务需求之上。

 
反馈与进化设计
一些团队不清楚他们的去向或实际到达目的地的方式,但是他们预先制定了详细的计划,并严格执行它们:“计划工作并制定计划。”
取而替代计划的方式是获得反馈,尽早找到获得反馈的方法,以便团队可以根据需要进行调整,或者在满足需求的情况下尽早停止!
敏捷,进化设计,精益启动,精益软件开发等–所有这些都试图为您提供提高反馈水平的工具,因此您可以朝着自己真正需要前进的方向前进,而不是在项目开始时一无所知时,就朝着自己认为需要前进的方向前进。
 
结论
无论您是客户/用户团队还是开发团队的一员,都容易陷入想要一切或着眼于解决问题的思维定势。相反,请探索在哪些地方采用渐进式和渐进式方法可以帮助您更快地获得反馈,更快地学习并最终更快地提供解决方案。