代码之家  ›  专栏  ›  技术社区  ›  lance

在TDD之前要创建什么设计模型?

  •  3
  • lance  · 技术社区  · 15 年前

    总结:

    您在TD-设计与开发中包括和/或提供了哪些模型和图表,为什么?

    细节:

    新的4开发人员项目,在这个商店里,我们正在逐步取得进展,让管理层从TDD采用/期望中的“买进”到“行动”。我(开发人员)想要测试驱动 设计 对于新项目。管理层愿意接受测试驱动 发展 —— 之后 创建了一些模型和图表(这些模型和图表将补充UI模型,以便在重要的开发开始之前向客户传达详细的设计)。

    那么,考虑到这种情况,您认为哪些模型和图表是合理的?这个项目的可交付成果是一个既不琐碎也不过于复杂的webapp。我们有一个需求文档(有时很模糊,但这是编写测试的良好开端)。

    但是到目前为止,我所拥有的TDD经验(一个非常低缺陷的项目,我单独使用TDD,还有一些设计成熟的对等测试创作)让我想继续进行测试驱动 设计 .

    创建模型/图表的过程(看起来我们将提供一些类模型和一些高级用例和序列图)似乎给了我们(开发人员)TDD不具备的设计洞察力,而且它们的技术/复杂性足以让我担心任何非开发人员在它们出现时都会有效地忽略它们(阅读:盲目接受它们)。'重新呈现。

    在TD-Design与Development中,在包括和排除模型和图表之间划一条线在哪里?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Yishai    15 年前

    有句军语说:“计划是虚无的,计划就是一切。”如果这些图表与客户就系统设计的设想,以及它打算包含哪些领域以及如何进行进行进行有效的沟通,那么计划的实践是值得的。

    TDD的建议是,当橡胶遇到道路上的编码时,设计可能会发生变化。问题是,当这些变化发生时,将它们传达回来有多重要。但在复杂的体系结构中,即使在TDD环境中,只要您意识到这是计划,而不是固定的计划,一些预先计划也是有价值的。导致原始设计的思想可以被用来理解TDD发现了什么以及需要如何改变来适应它。

    之后,你可以回顾并指出管理层最终产品与前期计划有多大的不同,看看有什么变化,也许可以指出早期确定的设计并没有他们想象的那么重要。

        2
  •  1
  •   Justin Niessner    15 年前

    我个人认为,与其他开发模式相比,我的设计文档不会随着TDD而改变。我将从高级用例开始,慢慢地向下工作,直到我有非常具体的功能用例文档(以及所有其他附带的文档,如类图、活动图等)。

    一旦你有了这些白盒用例……你应该知道两件事:

    1. 代码应该做什么。
    2. 代码不应该做什么。

    然后,您可以对应用程序进行编码以完成它应该做的事情……并对测试进行编码以确保它不会完成它不应该做的事情。

        3
  •  0
  •   mkato    15 年前

    TDD不应该依赖于固定的模型和图表,否则会限制或破坏其重构过程。

    所以如果你真的需要模型,我会使用一些高级的图表,比如序列图来ILUStrade你的应用程序的导航(这比你的类图改变的可能性小)。

    另一点是,高级构件可以帮助您的客户创建测试例程来验证系统的功能。

        4
  •  0
  •   ndp    15 年前

    由于您需要生成一些您认为没有人真正关心的文档,因此您应该考虑哪些文档可以真正帮助您的开发团队:

    • 在域驱动的设计模式中,创建一些显示基本模型对象的文档。尽你所能把不清楚的概念弄清楚并达成一致。这两个问题都会在开发周期中造成“浪费”,不管它是否是TDD。

    • 讨论项目的最大风险在哪里。是否有一些图表,以及前面和后面的讨论可以帮助减轻这些风险?

    • (我做了这个)为你的测试设计一套基本的“夹具数据”。捕获所有重要关系和案例的最小数据集是什么?这是一个非传统的人工制品,所以您可能还没有。但这需要一段时间的发展。一旦你有了它,它将加速你的测试写作,而且它实际上可能有一个有用的交流文档的副作用。我在上一个项目中制作了夹具数据的迷你海报,以简化编写测试。