我从来没有写过功能规格,我喜欢跳跃进入代码而设计的东西,因为我走了。到目前为止,它工作得很好,但最近的一个个人项目,我写了一些规格,其中描述的所有特点的产品,和应当如何工作',而不进入细节,它将如何执行,而且我发现它很有价值的。

您的想法是什么,你写规格或者你只是开始编码和计划,并且其做法是更好吗?

有帮助吗?

解决方案

如果您从家里开车到最近的杂货店,您可能不需要地图。但...

如果你开车前往另一个州以前从未去过的地方,你可能会这样做。

如果您随意驾驶以获得驾驶乐趣,则可能不需要地图。但...

如果你想以最有效的方式到达某个地方(最小化距离,最小化时间,沿途进行三次特定停留等),你可能会这样做。

如果您自己开车并且可以随心所欲地停留,只要您看到有趣的事情或重新考虑您的目的地或路线,您就可能不需要地图。但...

如果您是作为车队的一部分开车,并且所有人都需要一起停下来做饭和过夜,并且需要一起到达,那么您可能会这样做。

如果你认为我不是在谈论编程,你可能不需要功能规范,故事卡,叙述,CRC等等。但是......

如果您认为我是,您可能想要至少考虑以上其中一项。

- )

其他提示

人"跳跃进入代码"和"设计[s],因为他们",我要说写任何东西包括一种功能性的规格是比当前的方法。大量的时间和精力可以保存,如果你需要时间思考和设计这之前你甚至开始。

  • 要求帮助确定什么你需要做。
  • 设计有助于界定什么你正在计划制作。
  • 用户文件的定义是什么你有没有做。

你会发现大多数地方都会有一些变化这三个文件。功能性的规格,可以归入设计文件。

我会让你读书 迅速发展 如果你不相信。你真的可以获得工作完成得更快,如果你需要更多的时间来规划和设计。

直接跳转到“代码”对于大型软件项目几乎肯定会导致失败(因为immediatley开始构建砖块来构建桥梁)。

37 Signals 的人会说在纸上写一个简短的文件比写一个更好复杂的规格。我想说,对于快速模拟新网站(设计和想法可能比刚性模式更好),这可能是真的,但在其他现实生活中并不总是可以接受。

考虑一下客户签署的规范文档可能具有的(合法,甚至)重要性。

根据您的项目情景,士气可能是:灵活,并根据您的需要计划功能或技术规格

对于一次性黑客和小型公用事业,请不要打扰。

但是如果你正在编写一个严肃的,大型的应用程序,并且要求客户并且必须运行很长时间,那么它是必须的。阅读Joel关于这个主题的精彩文章 - 这是一个良好的开端。

我这两种方式都做到了,但我从测试驱动开发中学到了一些东西......

如果您使用路线图进行编码,那么如果您刚刚开始走在路上而不知道它将如何在中间进行分叉,那么您将比旅行结束更快。

你不必写下每个功能将要做的每一个细节,而是定义你的基础知识,这样你就知道应该做些什么来使一切顺利。

所有这一切,我昨天需要编写一系列异常处理程序,我只是潜入其中而根本没有尝试构建它。也许我应该重读我自己的建议;)

许多人不愿意承认或意识到软件开发是一门工程学科。关于他们如何处理事情,可以学到很多东西。在应用程序中确定您要做的事情并不一定对小型项目至关重要,因为通常更容易快速返回并修复您的错误。与写下系统首先要做的事情相比,您没有看到浪费了多少时间。

实际上,在大型项目中,几乎有必要制定系统如何运作及其作用的路线图。如果你愿意,可以把它称为功能规格,但通常你必须有一些东西可以告诉你为什么步骤b在步骤a之后。我们都认为我们可以动态地思考它(我对此也非常感到内疚),但实际上它会给我们带来麻烦。回想一下,问自己有多少次你遇到过什么事并对自己说:“我希望我早些想到这个人吗?”或者别人看到你做了什么,并向你展示你可以采取3个步骤来完成你在10岁时完成的任务。

把它放在纸上真的会让你想到你要做什么。一旦它出现在纸上,它就不再是一个含糊不清的想法,然后你可以看一下它并评估你的想法是否真的有意义。更改一页文档比更改5000行代码更容易。

如果您在XP(或类似)环境中工作,您将使用故事来指导开发以及大量的单元和走廊可用性测试(我已经喝了 Kool-Aid ,我猜)。

但是,有一个领域绝对需要规范:与外部团队协调时。我和一家大型保险公司有一个项目,我们需要就某些程序行为,数据库设计的某些方面和一些文件布局达成一致。如果没有这个规范,我就广泛对我们所承诺的内容进行了创造性的解释。这些都是好人 - 我信任他们,喜欢和他们一起工作。但是,如果没有那个规范,那将是一场死亡游行。根据规范,我总是可以指出他们偏离了约定的布局或他们要求额外的自定义工作($$!)。如果使用半对立的关系,规范可以让你更加恶化:诉讼。

哦,是的,我同意Kieveli:“跳到代码”几乎从来都不是一个好主意。

我会说它完全取决于“取决于”关于问题的类型。我倾向于问自己是为了它还是为了你以上的层而写的。我也曾经辩论过这个问题,而我个人的经验表明,你应该保持项目的预期(而不是偏离正轨)。

我喜欢分解任何非微不足道的问题松散在纸上的第一次,而不是跳跃码,出于一些的原因;

  • 这东西我在纸上写的没有编制或进行任何有意义的计算机
  • 我可以在任意抽象层次上的纸
  • 我可以加入图片和图表真的很容易
  • 我可以认为通过和调试一概念很快

如果问题是我是处理可能涉及大量的时间、或其他一些人,我将把它写下来作为一个大纲的功能规格。如果我支付由其他人来开发软件,并没有任何潜在的模糊性,我将添加足够的额外细节,以消除这种模糊性。我还要利用这个文件为起点,发展自动化测试的情况下,一旦软件已经编写的。

把另一种方式,我写了足够的功能说明书正确地了解该软件我在写我自己,并解决任何性的含糊之处对于任何其他人参与。

我很少觉得需要功能规格。 OTOH我总是让用户负责拨打电话,这样我就可以随时查询功能需求。

对我而言,功能规范更像是一种政治工具而非技术工具。我想如果你有一个规范,如果你以后发现实施问题,你总是可以责怪规范。但是责怪谁对我毫无兴趣,即使你找到替罪羊,问题仍然会存在,最好重新审视实施并尝试做正确的事。

编写一个好的规范几乎是不可能的,因为你真的不知道问题或工具或环境的未来变化是否正确。

因此,我认为将敏捷方法应用于开发并将足够的资源和时间用于重新访问和重构更为重要。

重要的是不要写它们:关于功能规格没有任何功能

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top