在我们公司,我们不使用任何产品设计文件。我们一共有三名员工,所以所有的产品设计讨论都是面对面的,或者是在斯拉克。(我们还使用了只允许查看最新消息的基本Slack包。)
我们的产品还处于初级阶段,我们经常会重新审视几个月前决定的设计元素。
我们经常面对的一个问题是忘记了为什么会做出产品设计决策。这导致几个小时浪费在同一块土地上。
我们如何有效地记录设计决策背后的理据?
我们的工作流程是基于关键跟踪器的。我想到的一个解决方案是将所有相关设计决策的理据记录为用户故事本身的注释,但这似乎不可靠。
要100%明确:我不是在说代码的设计。我指的是由代码实现的产品的设计。换句话说,我不是在说“我们应该使用组合而不是多重继承来构造这个类吗?”;我指的是“我们应该要求用户在登录前确认他们的电子邮件地址吗?”
文档的目的是让企业查看作出决定的原因的记录,以帮助就相同的主题作出进一步的决定。
发布于 2016-02-21 16:43:13
你记录设计决策背后的理由,把它们写下来。理想情况下,在受决策约束的项目附近(这不是“用户故事”--用户故事是必须实现的内容,而不是如何实现的描述)。
这尤其是为了记录为什么一个特定的代码或结构看起来是这样的(我并不是专门谈论代码注释)。如果您设计的主题是功能,请对该功能进行介绍性评论。如果是类,请在类的开头对基本原理进行评论。如果您有一组类,它们都应该遵循相同的结构,那么向包含这些类的包中添加一个单独的设计文档(比如“自述”文件)。如果您的设计主题是UML图,请向图的描述部分添加注释。
IMHO设计文件可能有其价值,但如果它们描述的东西太“远离”它们所描述的项目,它们往往很快就会变得不一致。因此,我的建议是将任何设计文档尽可能接近设计项目。
仅当您希望以交叉方式记录影响代码许多不同位置的设计决策时,才使用单独的文档。使用它们时,尝试将它们作为代码库的一部分,并将它们放置在设计主题的相应层次上(因此,如果您为一个模块(由多个源代码文件组成)作出设计决策,请将设计描述“放在”该模块内,而不是放在一个类文件中,而不是放在对其他模块有效的“顶级描述”上,而且肯定不会放在SCCS之外的单独的Wiki中。如果您想要记录一些“高层次”的产品范围的设计决策,那么顶级文档可能是最好的地方,但是要确保该文档保持在抽象级别上。
发布于 2016-02-21 22:30:40
考虑一种敏捷的方法。我的意思是,如果你有时间资源和优秀的写作技巧,写下你的每个设计决策和他们的理由,只需记录一切。实际上,我假设你不是这样的人。敏捷方法可以帮助您解决理据文档方面的一个关键挑战:您通常直到稍后才知道哪些理由是重要的。
让我们从整体的角度来看待这个问题。你们的决定是有道理的。他们现在被困在鱿鱼里了,团队的大脑。尽管获得了大量的信用文件,在sqishyware中存储理据并没有那么糟糕。事实上,作为一个物种,我们很擅长记住重要的事情。这就是为什么每个大公司都有“部落知识”,即使这些公司试图记录所有的部落知识。
现在你有麻烦了。你会发现,斯丘什陶器并没有足够好地抓住这些理由。这对你来说是件好事,因为你意识到了问题的存在,并发现它需要解决!这并不总是容易的一步!因此,我们非常肯定,解决方案是将其中一些基本原理卸载到文档中。然而,这还不够。我们永远也忘不了谜题的后半部分,当你需要做出决定时,它是将原理重新加载到squishyware中。我见过很多团队都会疯狂地记录每件事,但这些内容实际上并不是为了帮助做出正确的决定而组织起来的,所以他们最终会忘记理由,尽管它们被记录下来了。
所以你有两个步骤。您需要从squishyware中获取基本原理,并将其转化为文档。然后,您需要确保文档组织得足够好,以便在需要时将rational带回到squishyware中!现在,我认为我们有足够的问题陈述来认识到挑战的方向。当您正在进行文档记录时,您通常不知道谁将稍后查看它,也不知道他们在寻找什么。同样,当您回顾文档时,通常不知道您在寻找什么(充其量您可能知道什么时候)。
因此,一家大公司可能会试图在两个大街区内处理这件事。首先,他们可以根据人们在研究文档时需要什么来开发需求。然后,他们使用这些需求来构建一个开发上述文档的过程。而且,如果我敢这么说的话,那么每个人都会抱怨,因为几乎没有人知道第一天的文档应该是什么样子。文档总是不完整,开发人员总是抱怨这个过程太累赘了。
是时候敏捷了。
我的建议是启动一种敏捷的方法来改进您的文档过程:从squishyware到document,再到squishyware,一共9码。预先认识到你会失去一些信息,因为你的过程并不完美,但这没什么,因为你还在努力弄清楚这个过程!如果您试图创建一个适合所有解决方案的统一大小,您会错过更多。
我想看几个特别的小贴士:*探索非正式文档。正式的文档是伟大的,但它的时间消耗。文档的目的之一是从开发人员squishyware中发布信息并将其写在纸上。非正式文件将这样做的费用保持在最低限度。
svn blame来找出它什么时候变了,为什么,然后去看看票。一旦我们到了那里,我们通常会把我们所需要的所有理由都写在票子上。这对我们有用,找出什么对你有用。发布于 2016-02-22 05:12:30
我建议设置一个MediaWiki或类似的wiki软件的私有实例。在那里组织和重新组织内容非常容易,您可以将新讨论直接复制并粘贴到相关wiki文章(S)的“讨论”选项卡中。我们在上一份工作中使用了MediaWiki作为我们所有的体系结构和API文档,这是一个救生器。
https://softwareengineering.stackexchange.com/questions/310705
复制相似问题