仿真建模软件的敏捷用户故事
Agile User Stories for Simulation Modeling Software
我是敏捷新手。我目前正在编写一个基本上使用真实对象进行模拟的软件——为简单起见,这里有一个例子:
我有一个 GUI,我可以在其中将两个人体对象添加到一个平面上,一个球对象和一个人体对象。然后我可以按下 PLAY 按钮来模拟人类对象 A 可以通过指定参数扔球对象的情况我可以使用基于 Force/Velocity/Direction 的物理,然后人类对象 B 可以根据自己的位置接住球和他走路的时间(通过读取输入文件指定其运动)。
这是一个两步阶段,我先指定参数,然后按下播放键来模拟这些事件是如何展开的。
我的困难只存在于后端部分,我知道我需要 a) 事件处理程序,b) 协调系统基础结构。但是我无法确定它们应该属于我的用户故事中的什么位置?
现在他们坐在自己的用户故事上,只是作为 "Event Handling." 和 "XYZ Coordinate System" 的任务编写,我觉得这不是很好。
我想了解的内容:如果我有用户故事:
As a user, I want to be able to be able to add a Human Object to my simulation so that I can have the object interact with the ball
我的任务列表(专门针对后端内容)是否包括:
- 实施xyz坐标系
- 实施事件处理程序并将人类对象添加为事件处理对象?
或者我应该将这些任务放到用户故事中,例如
As a user, I want to be able to see my objects interact with each other when I press a play button so that I can determine what the status of the objects are after it is done playing
处理实施坐标系统基础设施和事件处理的任务?
(请注意,在示例之外的现实中,我有更多的对象和后端处理。)
您问题的直接答案是,放在最后的用户故事可能是您最好的用户故事选择。实施任务就是您的团队将如何实现这一目标。在像您所描述的那样复杂的工作中,如果该用户故事需要一个月的时间来构建并且您必须将其分解,那么它就会变得混乱。
您想交付功能,即使它不是完整的包。这可能是在滥用您的示例,但在您给出的案例中,我可能首先将用户故事的范围限制为模拟那些确切的对象和交互:2 个人和一个球。这消除了很多可变性。现在,从编程的角度来看,这里有一个巨大的陷阱。当你实施它时,确保以一种可以在以后扩展这些领域的方式进行,如果可以的话,不要放弃实施并重新开始。
接下来,如果它太大了,我可能会分开投掷和接球模拟。这是以符合敏捷目的的方式实现代码。如果我让人类 A 扔球,我可以向用户展示并可能学习。也许我们正在模拟足球,我们将 "prolate spheroid"(美式足球形状的术语)以完美的螺旋状抛出。我把它展示给用户,他说 "No no, we're from Spain, we are simulating an overhead 2-handed throw of a round ball." 现在你已经了解了一些关于你已经完成的工作和将要完成的工作的重要知识(接收者无法用手接住)。
用户故事的特定工具可能有帮助,也可能没有帮助。我可以把最后一个写成 "As a sports coach, I would like to simulate a throw-in so I can experiment with different techniques." 这包含了很多对我有用的信息。特别是,用户故事在您试图更好地了解用户需求的地方最有价值。但是,如果您觉得自己足够了解它们,"Simulate throw" 是一个非常合适的积压项目。
我是敏捷新手。我目前正在编写一个基本上使用真实对象进行模拟的软件——为简单起见,这里有一个例子:
我有一个 GUI,我可以在其中将两个人体对象添加到一个平面上,一个球对象和一个人体对象。然后我可以按下 PLAY 按钮来模拟人类对象 A 可以通过指定参数扔球对象的情况我可以使用基于 Force/Velocity/Direction 的物理,然后人类对象 B 可以根据自己的位置接住球和他走路的时间(通过读取输入文件指定其运动)。
这是一个两步阶段,我先指定参数,然后按下播放键来模拟这些事件是如何展开的。
我的困难只存在于后端部分,我知道我需要 a) 事件处理程序,b) 协调系统基础结构。但是我无法确定它们应该属于我的用户故事中的什么位置?
现在他们坐在自己的用户故事上,只是作为 "Event Handling." 和 "XYZ Coordinate System" 的任务编写,我觉得这不是很好。
我想了解的内容:如果我有用户故事:
As a user, I want to be able to be able to add a Human Object to my simulation so that I can have the object interact with the ball
我的任务列表(专门针对后端内容)是否包括:
- 实施xyz坐标系
- 实施事件处理程序并将人类对象添加为事件处理对象?
或者我应该将这些任务放到用户故事中,例如
As a user, I want to be able to see my objects interact with each other when I press a play button so that I can determine what the status of the objects are after it is done playing
处理实施坐标系统基础设施和事件处理的任务?
(请注意,在示例之外的现实中,我有更多的对象和后端处理。)
您问题的直接答案是,放在最后的用户故事可能是您最好的用户故事选择。实施任务就是您的团队将如何实现这一目标。在像您所描述的那样复杂的工作中,如果该用户故事需要一个月的时间来构建并且您必须将其分解,那么它就会变得混乱。
您想交付功能,即使它不是完整的包。这可能是在滥用您的示例,但在您给出的案例中,我可能首先将用户故事的范围限制为模拟那些确切的对象和交互:2 个人和一个球。这消除了很多可变性。现在,从编程的角度来看,这里有一个巨大的陷阱。当你实施它时,确保以一种可以在以后扩展这些领域的方式进行,如果可以的话,不要放弃实施并重新开始。
接下来,如果它太大了,我可能会分开投掷和接球模拟。这是以符合敏捷目的的方式实现代码。如果我让人类 A 扔球,我可以向用户展示并可能学习。也许我们正在模拟足球,我们将 "prolate spheroid"(美式足球形状的术语)以完美的螺旋状抛出。我把它展示给用户,他说 "No no, we're from Spain, we are simulating an overhead 2-handed throw of a round ball." 现在你已经了解了一些关于你已经完成的工作和将要完成的工作的重要知识(接收者无法用手接住)。
用户故事的特定工具可能有帮助,也可能没有帮助。我可以把最后一个写成 "As a sports coach, I would like to simulate a throw-in so I can experiment with different techniques." 这包含了很多对我有用的信息。特别是,用户故事在您试图更好地了解用户需求的地方最有价值。但是,如果您觉得自己足够了解它们,"Simulate throw" 是一个非常合适的积压项目。