实验目的:
l 练习面对面交流的方式进行需求获取,澄清用户需求;
l 根据用户需求建立用户故事清单,使用敏捷开发方法为用户故事建模卡片,规划优先级,估计工作量,构思迭代计划;
l 练习使用VersionOne为项目建立Scrum迭代计划(可选);
l 练习使用MockupBuilder为每个用户故事设计原型;
l 练习用户评审。
实验内容:
l 小组A首先扮演项目开发团队的角色,小组B扮演用户团队角色。B组3人根据A组开发的软件系统,构思自己的需求;A组3人通过提问交流的方式,了解清楚小组B的需求,并完成实验任务;
l A组完成迭代计划和原型设计之后,B组对对方的产出物进行评审,评判是否符合自己提出的需求;
l 角色反转,小组B扮演项目开发团队的角色,小组A作为用户团队,针对B组开发的项目进行上述实验。
实验心得:
1. 在我看来,面对面获取需求肯定可以帮助开发者澄清用户需求。因为相比于使用e-mail或者电话、短信的方式进行沟通,面对面的方式可以让我们更加具体、更加完整的了解双方的观点,可以避免很多不必要的误会。另外,无论是开发者团队,还是用户团队,往往都不止一人,面对面沟通可以最为方便地让我们在多人之间交换意见,在通过聆听别人的观点时,可以及时的提出自己的看法,或者分享出自己临时想到的新点子。
2. 在面对面获取需求时,要学会去启发、诱导用户提出新的需求,因为用户往往只有一个总的目的,比如要用这个项目去实现一个什么功能,但是对于细节方面的设定,我们开发者往往会具备更加丰富的经验。这个时候,就需要我们来提示用户,在这些细节问题上应该如何处理、如何抉择,要由我们来告诉用户,他们真正需要的是什么。有的时候用户听到我们的意见,会恍然大悟,这不仅能增进用户和开发者直接的关系,而且对于我们开发者而言,帮助用户提出合理的需求,也可以让我们自己更加简单的完成项目。
3. 我们先确定一个总的目标,对于我们组而言,就是将网页上的表格转存至本地数据库,然后我们将这个目标分布,如从网页上识别表格、选择表格中需要的内容、获取选中的内容、将获得的内容转存至本地数据库。通过这几步,就能实现我们的基本功能。然后针对用户提出的每一项需求,我们讨论决定应该在哪一步实现这个功能,及我们将同一步骤内实现的所有用户故事看作一个优先级相近的集合,集合内通过用户故事之间的依赖关系再进一步的划分优先级。工作量则主要按照我们以往编程的经验,先预设一个实现用户故事的方法,然后根据这个方法来估算它所需要的时间。
4. VersionOne是一款集便捷与专业于一身的敏捷开发工具。我们既可以通过安装客户端来使用它,也可以直接在网页上使用它的功能。其次,它支持诸如条目拖动等操作,并且通过各类可视化视图来返回我们需要的结果,这些都为使用这个工具的人提供了很大的便捷。另外,VersionOne也是十分专业的,我们可以通过“taskboards”和“teatboards”来规划每一天的开发任务,然后我们可以通过燃尽图来查看项目推进的进度。我们还可以方面的从表格中导入用户故事,并对其进行优先级划分。这些都帮助我们更好的安排项目开发活动,大大提高了我们完成项目的效率和质量。
5. 在我看来,在编写项目之前设计原型,就好比在写作文之前编写大纲,它可以帮助我们,在逐步实现项目功能的时候,不会偏离最初的设计思想。就好比给我们项目的发展定下了一个笼统的框架,我们在这个框架内,不断完善我们的项目,实现用户提出的各个新的需求,但都不会离开我们抓取表格的根本要求,它可以帮助我们,确保项目推进的过程中,我们写出来的程序,一直围绕着基础要求的主干,在一定的范围内进行发展、优化。
6. 通过这次实验,我明白了,开发者和用户之间的关系并不像我们原先预想的那么简单,用户提出多项需求,然后开发者逐一实现。实际上,在提出需求是,开发者也扮演着十分重要的角色,由于开发者比用户更加了解项目开发的过程、更加清楚各个功能实现的难度,也有更加丰富的项目开发经验,因此我们要去主动的启发用户,提出合理的需求,这不仅可以帮助用户更好的理解他们想要的是什么,也可以帮助开发者在推进项目的过程中省去很多不必要的麻烦。