您对功能规格有何看法?和软件设计?

jru*_*ter 10 project-planning project-management functional-programming specifications

功能规范是否有助于或阻碍您的期望?执行瀑布式方法的程序员是否对功能规范持开放态度?我是一个网络设计师/开发人员,与一个由5名程序员组成的团队合作,并希望编写一个功能规范来解释我们需要什么,这样当我开始工作时 - 我知道我们正朝着同一个目标努力.

Ben*_*ter 24

在我编写和签署设计规范和功能规范之前,我不会启动任何自由项目.如果你没有它,那么流氓客户就有太多的空间可以将镍和你一分钱给你.功能规范允许您保持目标/聚焦,并为您提供自然检查列表.

如果没有功能规范那么你就会得到所有"if ifs"开始进入并且开发人员在思考 - 你知道,这将是有用的,它只需要我一个小时.肯定需要一个小时来编写原型并使其基本正常工作 - 加上设计所有测试的日期并确保所有测试用例都已涵盖,然后再用几天时间来解决所有错误,然后再编写文档.当没有规格时,有太大的空间可以插入看起来像是一个微不足道的补充.你毫无疑问听说过臭名昭着的"范围蔓延".当你交付它并试图摆脱付钱给你时,客户也有太多空间说"那不是我想要的......".

如果您已经在开发之前编写了设计规范和功能规范,那么您和客户都签署了您不仅要了解基本细节,而且了解所用语言的所有细微差别是同一个 - 只有这样真正的工作才能开始.

有一些轶事,第一个是真的,而另一个是一个常见的误解:

  • 关于代码的软件开发只有15%,其余的是资源/人员管理.
  • 完成前80%的项目需要20%的时间,剩余的80%的时间完成最后的20%.

误解是工作原型是80%的方式 - 不要被愚弄,事实并非如此.因此,客户很容易说"花了这么长时间,我以为你差不多完成了!" 然后狡辩说他们为几个月前应该完成的事情支付了太多钱.一些设计方法确实很适合这种流行的误解.如果没有正确使用,瀑布式设计方法就是其中之一.

我的观点是确保你的理解是一致的,都要签字.设置里程碑并使客户在一开始就非常清楚原型距离项目完成还有很长的路要走,并从一开始就设定了期望,这些里程碑是什么以及客户何时能够看到它们交付.

对于开发团队的项目经理来说,文档和期望就是一切.你不能没有它,它是你反对的"那不是我所说的"或"那不是我的意思"和ergo"我不付钱给你"的唯一形式.

我从比我更有资格的开发人员所犯的许多错误中吸取了教训,并看到了它对他们所做的一切.您项目的两个最重要的文档是设计规范和功能规范.不要没有他们离开家,或者[或者很可能会]回来咬你的屁股.

附录:用户故事:

关于用户故事的另一个注意事项是它们非常适合它们.它们应该包含在您的功能规范中,但不应该您的功能规范.

用户故事仅描述单个任务.它非常轻巧,不含过多细节.随着共同的建议,它应该适合3x5卡...如果你作为项目经理递给我一张3x5卡并告诉我根据我读的内容编写一个软件,毫无疑问它将被交给最后的用户,他们告诉项目经理这不是他们想要的.

在功能规范中需要更高级别的细节.它不应局限于基本工作流程.功能规范是一大堆用户故事,以及对这些用户故事的解释,可以对其进行改进的注释,可以组合以提高效率的常见任务.名单还在继续.

因此,用户故事是一个良好的开端,但他们没有一个功能规范的替代品,他们是要点的功能规格.

  • 用户故事是"与利益相关者进行对话的占位符",它不是任何类型的规范.会话后的用户故事加上单元测试描述是规范 (2认同)

Eli*_*lie 7

我主要使用瀑布模型,仅使用功能规格.当我自己工作时(我可以按照我想要的方式设置自己的模型和程序),我首先编写功能规范然后实现它们.它让我更好地了解工作的规模和范围,帮助我估计所涉及的时间,并帮助确保我不会错过任何东西.

此外,您可以将此文档传递给:

  1. 用户可以明确他们的要求
  2. 开发人员创建功能
  3. 测试人员确保他们正在测试正确的东西
  4. 建筑师,以便他们可以分析要求

对用户故事使用功能要求是一个优先事项和项目范围.如果您的用户群很小,那么您可以使用用户故事(概述用户可能执行的各种事件序列),但对于较大的项目,您应该使用功能要求,因为它们具有更多细节并导致更少误解.将它们视为与参与项目的所有人进行沟通的一种手段.


BIB*_*IBD 5

坦率地说,功能规范应该已经成为你的Big-M(瀑布)方法的一部分.您的功能规范是您要构建的内容; 不一定你将如何构建它(这将是你的详细设计/规范和瀑布的下一步).

如果你还没有写一个,停止你正在做的事情并写一个.如果你不这样做,你只是浪费时间.你可以从Joel的文章开始.