我见过不同的程序经理用不同的格式编写规范。 几乎每个人都有他/她自己的写作规范的风格。

一方面,给程序员的那些冗长的文件可能会导致他/她遗漏一些东西。 我个人害怕文件规格这个词...我认为这是因为我的阅读风格......我总是快速阅读我认为会让我错过关键点的事情。

另一方面,我已经看到了我们的一个客户用Excel编写的这些创新规范。 他以前编写规范的方式是在Excel中创建一个模拟应用程序并使用一些VBA来模拟它。 他会做一些事情,比如按钮点击表单应该去哪里或应该执行什么操作(在评论中)。

在数据表格中,他将在单元格和每个数据输入单元格中显示一个表单,他将评论哪些有效值,它应执行的验证等。

我认为使用这种技术,不太可能错过需要完成的事情。 此外,为开发人员进行单元测试要容易得多。 测试人员在实际编写之前“执行”时对系统有了更好的理解。

Visio是另一种进行屏幕设计的工具,但考虑到VBA支持及其功能,我仍然认为Excel具有更好的优势。

你认为这应该成为一种更流行的编写规范的方式吗? 我知道这涉及项目经理(或任何编写规范的人)的一些额外工作,但收益很大......我自己可以看到使用它可以获得很多生产力。 如果有更好的规格格式,实际上可以帮助程序员。

===============>>#1 票数:5

Joel on Software特别擅长这些,并且有一些关于这个主题的好文章......

具体案例

===============>>#2 票数:3

两种方法对我来说效果很好。

一个是您在问题中描述的“工作原型”。 根据我的经验,该公司与一位用户界面专家签约,以创建功能齐全的HTML模拟。 页面上的数据是静态的,但它允许开发人员和管理人员查看和使用网站的“功能”版本。 剩下要做的就是用动态内容替换页面上的静态数据 - 这个原型是我们产品初始版本的规范。 设计者甚至在弹出对话框中包含了一些细微的解释,这些行为在将鼠标悬停在模拟链接上时会出现。 它对我们的团队很有用。

在随后的项目中,我们没有UI专家的奢侈品,但我们使用了类似的方法。 我们使用wiki来模拟网站的版本。 我们在系统的功能方面之间建立了链接,并详细记录了每个功能。 反过来,每个功能都可以链接到详细的设计和架构决策。 我们还习惯使用wiki来保存每个版本的列表功能列表(这已成为我们的发行说明)。 这些文档链接回详细功能页面。 维基成为一个活生生的文档 - 非常详细地描述了我们系统的发布和演变。 这是一个非常宝贵的资源。

我更喜欢wiki和工作原型,因为它更易于扩展 - 随着系统的发展而不断增长并变得更有价值。

===============>>#3 票数:2

我想您可能会看一下测试驱动需求,这是一种制定可执行规范的技术。

为此目的,有一些很棒的工具,如FITFitnesseGreenPepperConcordion

===============>>#4 票数:0

其中一本Microsoft Press书籍提供了各种文档的优秀示例,包括SRS(我认为这就是您所说的)。 它可能是Weigert的要求书之一(我认为这是他的名字,我现在正在对它进行消隐)。 我已经看到美国政府组织将其作为一个模板,从我与政府的三次工作经验中,他们喜欢尽可能地自己创造,所以如果他们重新使用它,那一定是好的。

另外 - 在我看来,规范应该包含NO CODE。 它应该关注系统必须做什么,应该做什么,不能使用文本和图表。

  ask by Krantz translate from so

未解决问题?本站智能推荐:

8回复

技术和功能规格模板[关闭]

所以基本上我正在寻找用于在项目或工作请求上编写技术和功能规范的良好模板。 你用什么? 在编写规范时你有多深? 您可以提供的任何其他一般提示将不胜感激。 我的公司非常需要这些。 我为承包商工作,现在我们根本不使用这些文件。 编辑:我已经阅读了Joel对无痛规范的看法,我真的
1回复

在Erlang中编写规范的指南

在开源项目中,我看到以下两种编写规范的方法: 评论中的规范 源代码中的规范 有什么不同? 一个比另一个更受欢迎吗?
2回复

如何使用规范测试框架从Matcher [A]中编写Matcher [Iterable [A]]

如果我有一个Matcher [A]如何创建一个Matcher [Iterable [A]],只有当Iterable的每个元素满足原始Matcher时才会满足。
2回复

规范和规范2:如何在规范2中实现doBefore {}?

我在将scala测试类中的内容从“规范”转移到specs2时遇到了麻烦。 我的最后一件事是doBefore{}和doBefore{}一些"test" in {} 我的"testing" should { doBefore{} 和 "testing" should { doBefore{}
1回复

测试演员时,scala规范不会退出

我正在尝试使用Scala规范测试一些演员。 我在IDEA或Maven(作为junit)中运行测试,但没有退出。 查看代码,我的测试完成了,但是一些内部线程(调度程序)仍然徘徊。 我如何才能完成测试?
1回复

如何使用ActorLogging获取规范文件日志

我有这样的测试文件 在我编写测试用例的地方,它的工作正常。 但是我无法在日志文件中获取日志消息,因此我需要登录该规范,现在我们可以通过使用 我的问题是我不想在不使用akka.actor.ActorLogging情况下使用它,我想在日志文件中获取规格日志,因此您可以提出其他建
1回复

Rspec路由规范失败,param id被反转?

我的rspec路由规范给出了不清楚的错误。 在预期的params v / s中,id param处于反向位置的真实参数。 为什么以及如何解决? 抛出错误:
1回复

Scala的“规范”BDD框架如何工作?

我刚刚开始使用Scala,我想知道哪种语言功能允许你这样做: 这是来自Kestrel的单元测试 。 这里发生了什么? "PersistentQueue" should是否"PersistentQueue" should意味着Scala字符串类已经使用“should”方法扩展,或者
1回复

Scala规范中SUS和子示例的预期用途是什么?

规范提供了两种不同的层次结构来规范您的规范。 一种是通过定义“规范下的系统”,另一种是通过创建子示例(一个示例是一个规范/测试语句)。 有人可以回答或指向网站吗?这些不同机制的一般用途是什么? 我也对规范/示例的重用感到好奇。 我的用例 特别是,我有一个项目,其中包含不同的
1回复

创建自定义rspec变量,如控制器规范的响应

我想创建一个类似于response对象的自定义变量,该变量仅在controller specs可用。 我注意到rspec支持在钩子之前/之后的过滤器 ,这意味着我可以使用它们创建实例变量以供以后使用。 但是response对象的感觉和工作方式更像是一个延迟评估的let变量。 同样,控制器规