首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >敏捷过程设计

敏捷过程设计
EN

Software Engineering用户
提问于 2013-10-19 14:03:06
回答 2查看 246关注 0票数 5

最近,我在一家公司接受了开发团队的采访。团队使用敏捷+ TDD。代码练习实现了一个视频租赁商店,它生成语句,为客户计算每种类型的视频(新版本、儿童等)的总租金。现有代码使用的对象如下:

  • 语句生成语句和calc费用,其中大开关语句使用enum来确定如何计算租金。
  • 客户持有一份租金清单
  • 每种类型电影的电影基类和派生类(新的、子的、动作等)

代码最初没有编译,因为假定所有者被总线击中了。我就是这样做的:

  • 概述了对对象模型的改进,以便对每个类具有更好的责任。
  • 使用策略模式替换switch语句并在config中编织它们

但是团队说这是浪费时间,因为没有对它的要求,而且UAT测试套件可以工作,是架构决策的唯一指导方针。根本的原因只是为了把定价的特点弄出来,而不是说该怎么做。因此,讨论的重点是为什么要花时间来重构开关语句。

在我的理解中,敏捷方法并不意味着预先设计为零,这种代码气味应该在一开始就被避免。而且,任何单元/UAT测试套件都不会检测到这样的代码气味,否则声纳就不存在查找错误。

在这里,我想问:

  1. 敏捷方法论中是否有这样一种叫做敏捷设计的东西?就像敏捷文档一样。
  2. 如何预先定义敏捷设计?怎么知道够了就够了?据我理解,组件之间的大概架构和数据契约应该在开始项目之前/时定义,而不是细节。我说的对吗?
  3. 任何人都可以解释团队在这种设置中到底在寻找什么?它是设计方面还是敏捷方面?
  4. 如何在实际项目中的敏捷过程中实现最小可行的产品概念?做MVP一定会让你觉得尴尬吗?
EN

回答 2

Software Engineering用户

发布于 2013-10-19 14:33:45

在现实世界中,关于这个问题有很多种方法。你在问一个非常宽泛的问题,所以我的回答会有点笼统。

  1. 当然,敏捷中有一个设计的概念。通常不存在预先设计的概念,但是系统是按您的方式设计的,当然,遗留系统也有一个设计。
  2. 严格地说,你应该做你能负担得起的最低限度的设计。一个网站完全有可能从某个地方的静态html页面开始。事实上,很多网站都这样做。当然,有时需要做一些前期工作才能实现基本的设计,但我们最多应该谈论的是几天的工作。
  3. 这对你的球队来说是个问题,但我认为把它作为一个预先的问题是不对的。除了联网的电脑外,团队不需要任何东西。一个团队所需要的一切都取决于团队需要实现的目标。
  4. MVP是你需要运送的最低限度的东西,为了有任何价值。它通常是一个“注册测试版页面”。在此之后,将允许您的产品工作的最小数量的功能。我想在这里强调“最低限度”:采取“不那么最低”的一组功能,你可能会提出最初,并开始剥离所有你可以在保持核心工作。关键是与早期采用者建立一个反馈周期。MVP应该是alpha版本,而不是beta版。
票数 4
EN

Software Engineering用户

发布于 2013-10-19 14:47:49

敏捷过程中的设计最重要的一点是,它必须在流程中完成。首先要做的事情之一是设计,否则你就不知道自己在做什么。但是,该设计不需要很长时间就能产生,并且应该是一个可以通过敏捷过程进行修改的伪品,就像代码一样。别以为你会先得到它。如果需要的话,不要害怕添加到它中,如果太复杂的话,可以重构它。

试着将设计保持在适合一页(或一张幻灯片)的东西上,这样人们就可以理解他们正在做的作品在总体上的位置。当然,这并不能涵盖所有情况,但预先设计以涵盖一切并不是一种敏捷实践;这很自然地遵循了这样一个基本原则,即需求并不都是预先知道的(而真正的设计遵循于需求这一显而易见的观点)。

知道你什么时候有太多了吗?坦白说,你可能已经有太多了。高层次的设计--真正有用的设计--不应该花太长时间,而低层次的设计就是从积压中掉下来的任何东西。(提示:如果你在设计中考虑算法,你几乎肯定已经有太多的细节了。)好吧,除非你正在做一些非常古怪的事情,没有那个特定的算法…是不可能的)

对于团队来说,重要的是他们得到一些东西,并在下一次迭代中与产品所有者检查,以了解需求。与所有敏捷开发一样。(是MVP,请记住,可能需要几次迭代才能到达那里,并且不要害怕在最初的几个回合中使它看起来很好;客户常常认为CSS的应用意味着整个服务都完成了。你知道,我也知道,这不是真的。)

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/214937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档