【问题标题】:Agile User Stories for Simulation Modeling Software模拟建模软件的敏捷用户故事
【发布时间】:2026-02-04 20:50:01
【问题描述】:

我是敏捷新手。我目前正在编写一个软件,它基本上使用现实生活中的对象进行模拟——为了简单起见,这里有一个例子:

我有一个 GUI,我可以在其中将两个人体对象添加到一个平面上,一个球对象和一个人体对象。然后我可以按下 PLAY 按钮来模拟人类对象 A 可以通过指定参数扔球对象的情况 我可以使用基于力/速度/方向的物理,然后人类对象 B 可以根据自己的位置接球和他走路的时间(通过读取输入文件来指定它的运动)。

这是一个两步阶段,我在其中指定参数,然后按播放来模拟这些事件如何展开。

我的困难只存在于后端部分,我知道我需要一个 a) 事件处理程序,b) 坐标系统基础设施。但是我无法确定它们应该属于我的用户故事的哪个位置?

现在,他们坐在自己的用户故事上,只是写成“事件处理”这样的任务。和“XYZ坐标系”,我觉得不是很合适。

我想了解的内容:如果我有用户故事:

作为用户,我希望能够将人类对象添加到我的模拟中,以便我可以让对象与球交互

我的任务列表(专门用于后端的东西)是否包括:

  1. 实现 xyz 坐标系
  2. 实现具有事件处理程序并将人类对象添加为事件处理对象?

或者我应该将这些任务放入用户故事中

作为用户,我希望能够在按下播放按钮时看到我的对象相互交互,以便确定播放完成后对象的状态

处理实现坐标系基础设施和事件处理的任务?

(请注意,实际上除了示例之外,我还有更多的对象和后端处理。)

【问题讨论】:

    标签: agile user-stories


    【解决方案1】:

    对您的问题的直接回答是,您放在最后的用户故事可能是您对用户故事的最佳选择。实施任务就是您的团队将如何实现这一目标。在您所描述的复杂工作中变得混乱的地方是,如果该用户故事需要一个月的时间来构建并且您必须将其分解。

    您希望提供功能,即使它不是整个软件包。这可能是在滥用您的示例,但是在您给出的情况下,我可能会首先将用户故事的范围限制为模拟那些确切的对象和交互:2 个人和一个球。这消除了很多可变性。现在,从编程的角度来看,这里有一个巨大的陷阱。当您实施它时,请确保以一种可以在以后扩展这些区域的方式进行,而不要放弃实施并尽可能重新开始。

    接下来,如果太大,我可能会拆分投掷和接球模拟。这是以符合敏捷目的的方式实现代码。如果我让人类 A 扔球,我可以向用户展示并可能学习。也许我们正在模拟足球,我们将“长球体”(美式足球形状的术语)抛出一个完美的螺旋。我把它展示给用户,他说“不不,我们来自西班牙,我们正在模拟一个圆形球的头顶双手投掷。”现在您已经了解了一些关于您已完成的工作和要完成的工作的重要知识(接收者无法用手接住)。

    用户故事的特定工具可能有用,也可能没有帮助。我可以把最后一个写成“作为一名体育教练,我想模拟掷界外球,这样我就可以尝试不同的技术。”这对我来说包含了很多方便的信息。特别是,在您试图更好地了解用户需求的地方,用户故事最有价值。但是,如果您觉得自己对它们足够了解,“模拟投掷”是一个完全足够的积压项目。

    【讨论】: