由于我们是一家小公司,我既是项目经理又是开发人员.我为客户创建的规范包含许多用于描述和定义项目的元素,包括用户故事以及我认为需要包含的任何其他元素以向客户端定义项目(例如线框,用户流,站点地图等).
如果功能规范"描述了产品如何完全从用户的角度工作.它并不关心事物是如何实现的.它讨论了特征." 那么有没有人看到使用用户故事定义网站的功能规范有任何问题?有没有人真的以这种方式做功能规格?
我真的想尝试一下我的游戏,并想知道这种方法是否适用于那些可能对功能规范应该包含哪些内容有更严格意见的大客户,因此可能需要采用正式的方法.目前我们的客户肯定对我们的文档制作方法做出了很好的反应.
我有兴趣听听项目管理专业人士对此的看法.
我们尝试在目前的工作中进行敏捷开发,并且我们在大多数情况下都取得了成功.主要问题似乎是项目的开发人员总是在sprint开始时等待需求,并急于最终解决问题.提供要求的业务分析师始终不间断地工作以完成要求.
编辑:附加信息: 我们正在定制COTS应用程序供我们内部使用.我们的"用户故事"仅包括我们将在特定sprint中定制的应用程序的哪个部分,以及我们将在内部集成的系统.与不同系统的集成通常非常有效,因为我们可以立即开始工作.'自定义x屏幕'是主要的问题领域,因为开发人员无法做到这一点.在我们真正做任何事情之前,我们必须等到我们从BA获得要求.
编辑:更多洞察力/困惑或许: 我想知道问题的一部分是否已经存在定制的屏幕,因为这是一个大量定制的COTS产品.人们认为用户故事应该是"制作一个做X的屏幕".那已经完成了.也许没有一个很好的方法来为这些要求做用户故事......也许这需要一个全新的问题.
如果有人试图做敏捷,我想找到一种方法来使用JIRA/Greenhopper.我们是一个全球开发团队,所以分布式性质在这里至关重要.
我们最初使用的是Scrumworks,但团队抱怨他们在JIRA和scrumworks中一直有重复的信息,并认为它是多余的.
我们得到了Greenhopper并认为这可以解决我们的问题,但我遇到的问题是:
有没有人在JIRA中成功完成此任务,或者我们是否应该回到scrumworks等其他工具,并使用JIRA来处理由我们的支持团队提出的错误.
我有一套用户故事,我有一套业务规则(主要是法律约束我的要求是合规的).在Agile SDLC中,我不确定这些"规则"在哪里附加到我的用户故事中.
例如,用户故事如:
作为医生,我想添加患者信息以创建新的患者档案.
和以下规则:
必须在每位患者的记录中输入以下信息:(a)患者:(i)姓名和名字; (ii)地址; (iii)出生日期; (iv)性别;
这两个显然是在一起,但我如何链接它们?作为我的用户故事中的测试验收定义?另一个用户故事?
所以我知道,当涉及到用户故事场景时,具体是一件好事.但是,我经常谈到自己的问题:我的情景有多具体?
例如,对于用户故事:
为了允许项目成员在项目上进行协作,作为项目经理,我希望能够注册新项目
我们可以有以下场景:
鉴于项目从未在系统中注册过,当项目经理注册该项目时,注册的项目应出现在指定成员的项目列表中
或者我们可以更具体地说:
由于斯科特是一名项目经理和计算器一体化项目从未在系统中登记,当斯科特注册计算器集成项目指定简作为项目成员,则计算器一体化项目应该会出现在简的项目的列表
在编写BDD规范时,我发现了第二个"更具体"的方法.有像scottTheProjectManager而不是projectManagerStub的东西是:
我的结论是对的吗?当故事发生变化时,这种特殊性会对我有害吗?
非常感谢!
上面的问题不仅仅是关于拥有人名而不是角色名,而是关于用实例的名称替换场景中的所有占位符.实际上,我并不是说我们实际上有一个名叫斯科特的人担任项目经理,它只是给抽象占位符命名以实现上述好处.
我将尝试通过包含以下代码来展示如何实现这些好处,该代码使用StoryQ框架表示完整的BDD样式规范
[TestFixture]
public class ProjectRegistrationSpecs
{
[Test]
public void ProjectRegistration()
{
new Story("Project Registration")
.InOrderTo("allow project members to collaborate over a project")
.AsA("project manager")
.IWant("to be able to register new projects")
.WithScenario("New Project Registration")
.Given(ScottIsAProjectManager)
.And(StackoverflowIntegrationProjectHasNeverBeenRegistered)
.When(ScottRegistersStackoverflowIntegrationProjectSpecifyingJaneAsAnAnalyst)
.Then(StackoverflowIntegrationProjectShouldAppearInJanesListOfProjects)
.Execute();
}
//Since Scott …Run Code Online (Sandbox Code Playgroud) 我已经在我的项目上使用敏捷几个月了.然而,我们看到我们的迭代burndowns存在稳定的问题.我们每次迭代都没有达到零.
剩下的任务是QA任务.像编写测试,测试等等.
现在,对于敏捷的"跨职能团队"理念存在一些组织上的阻力.Dev为单个项目开发,但测试人员共享多个项目.这与Dev和QA协同工作的敏捷理念完全相反.
我的测试人员的时间与许多其他项目分开的事实是导致我们减速的原因.开发人员正在测试尽可能多的松弛,但有些任务仍未完成.
从我看来,我可以做两件事:
我宁愿避免做#2,因为我重视我们正在进行的测试协作.
你对我的困境有什么建议?
我们使用Scrum.当我们发现用户故事不够精细以捕获完成冲刺所需的工作时,我们在冲刺期间遇到问题.
特别是,我们发现我们提供的UI线框包含的复杂性比原始故事所暗示的要复杂得多(例如,由于可用性原因,复制功能).这导致燃尽图表看起来像是在冲刺的最后一天完成所有事情.
我们花费周一在每个为期2周的冲刺开始时讨论由项目团队创建的故事,在此期间我们通常会对故事进行一些细化并将其分解为任务,估算每个故事创建燃尽的时间图表.在这一天,我们觉得我们没有时间有意义地提高故事的质量.
如何最好地打破我们冲刺的不完整/不充分故事的循环?
这是项目团队在一开始就没有充分确定故事,或者我们(即开发团队)应该承担一些责任吗?
在Scrum团队中,在继续之前完成单个故事有多重要?
我们的Scrum大师在继续前进之前完成单个故事是非常教条的.我可以看到,在这种情况下,开发似乎更加"受控制",而且scrum master可以非常精确地了解团队成员在任何特定时间的工作......但我对这真正购买的内容感兴趣我们?
很明显,Scrum大师希望尽量减少现实中的燃尽差异,以避免冲刺结束时出现冲击 - 但是如果冲刺时间长达两周,那么燃尽就会持续更新,阻挡者会在站立时传达 - 任何这样的分歧都会受到冲刺长度的限制,并通过常规通道(即站立或单独与Scrum主人说话)在冲刺中间可见.任何剩余的问题都可以在两周一次的回顾中处理.
这个问题的原因在于,我似乎发现我工作效率最高的是在我认为合适的任何特定时间保持说2(或3,如果一个特别容易)的故事.这似乎有助于帮助完成任务的潜意识背景思想.如果有几个故事相关,它还允许我更好地理解更大的图景.
我们的故事通常需要一到两天的工作量.
那么,一次只是在编写几个故事,如果是这样的话,那么一次一个故事会给你带来什么?
我即将在我们公司启动一个试点项目,以引入敏捷实践,包括使用用户故事.在阅读了Mike Cohn的两本书,特别是Agile Estimating and Planning和User Stories Applied之后,我现在对如何继续进行了更清晰的了解.我有信心在练习中改进我们的技术.
然而有一件事并没有让我信服.在这篇博客文章中, Mike Cohn定义了一种特定类型的用户故事,他称之为约束,可用于定义所谓的非功能性需求.就个人而言,我不喜欢单词约束,甚至使用经典模板"作为...,我想......,所以......".
相反,我会尝试让客户写,总是在卡片上,也许是上面的模板,Nick Rozanski和Eoin Woods所称的那些,在他们出色的书籍软件系统架构中,架构原则:
"建筑原则是指导建筑定义的信念,方法或意图的陈述."
(他们还将这些原则划分为商业原则和技术原则,我认为我们不应该关注这种差异.)
我想用这些原则卡做的是将它们放在我们的积压卡板旁边,以便在用户故事定义和规划活动期间始终存在它们.我还鼓励客户和开发人员拿起它们,并在每次认为卡片可用作团队提醒时将它们放在迭代板旁边.
你有没有试过任何类似的方法?你出于任何原因劝阻它吗?你对这件事有什么建议吗?
我正在尝试以更有条理的方式工作并开始采用用户故事.
我想我误解了如何将用户故事用于技术方面.
假设我正在编写一个应用程序代码,该应用程序可以为我提供Google中某个关键字的网站排名.
用户故事就像这样:
作为互联网营销人员,
我想知道我的网站在哪里为关键字排名
所以我会知道我的SEO工作是否有效
现在这很简单,以用户为中心......但是,如果我需要将代理引入循环,会发生什么.
一方面,Proxies是技术实现细节,另一方面,代理是Internet Marketer域的一部分.
我该如何制作这样的故事?
作为互联网营销人员,
我想在Google搜索时使用代理商
这样我们就可以检查很多关键字而不会阻止我们
上面的场景对我来说听起来不对...也许我可以将它重写为:
作为一名互联网营销人员,
我希望能够一次检查很多关键词,
这样可以节省我的时间
这听起来更合适,但是我可以给出什么样的验收标准呢?尝试在一分钟内刮掉谷歌100次?是不是浪费时间?
这是另一种情况.当我想要实现的功能是代理可以在30秒内使用一次时,我应该如何制作用户故事?我不知道如何从以用户为中心的角度来解决这个问题......
我想做的另一件事是提出另一件事Role.Internet Marketer我可以说我们有一个叫做的角色,而不是以中心为中心Google Scraper.我可以说这Internet Marketer与...有关Google Scraper.
现在我可以写一个用户故事,如:
作为Google Scraper,
我想在每次搜索时更改代理,
因此Google不会禁止我
您对如何处理上述技术实施细节有什么看法?它还可以帮助将系统分解为模块......
user-stories ×10
agile ×6
requirements ×3
scrum ×3
bdd ×2
c# ×1
greenhopper ×1
jira ×1
qa ×1
storyq ×1
tdd ×1