上周我和我的产品经理聊天,他抱怨我们的产品缺乏进展。这也是一个公平的批评。因此,我们开始讨论如何描述需求的编写。我是BDD的忠实粉丝,我使用Gherkin语法来描述系统应该如何以用户或参与者的方式运行。
他对BDD相当不屑一顾,他说我们应该使用精益方法,比如SBCE (基于集的并发工程)和其他我不知道的东西,因为到目前为止我还没有读到很多关于精益实践的文章。
这两种方法相互排斥吗?如果不是BDD,那么需要有其他方法来描述系统应该做什么。精益有自己的语言满足需求吗?
发布于 2014-12-22 12:43:41
据我理解,精益开发打算优化您团队的开发过程,重点是在质量、成本和时间之间进行平衡。它是一种组织方法,它不包含特定的语法、语言或符号。然而,BDD的重点是“构建正确的软件”,并通过使用特定的建模和特定的测试形式来获得正确的需求--因此BDD不是一种组织方法,而是一种技术方法。因此,如果您想从BDD中获取一些符号、术语或测试方法,这将不会与精益- BDD和精益有些正交。
但是,如果您尝试引入BDD,结果会更慢您的流程,那么当您的经理支持精益开发过程可能会将BDD定义为“浪费”(在精益意义上)并将BDD的内容抛出时,不要感到惊讶。因此,当你建议BDD时,一定要确保它针对的是你团队中真正存在的问题,这不仅仅是因为你“是BDD的忠实粉丝”--对于大多数有经验的经理来说,狂热是一个很大的警告信号。由于到目前为止,您还没有告诉我们进展的速度不符合您的期望的原因,所以我不能告诉您BDD是解决问题的正确工具还是错误工具。但是要小心,不要试图使用技术解决方案来解决组织问题,这很可能会失败。
发布于 2015-01-03 11:32:14
我们的精益知识大部分来自戴明在丰田所做的工作。我看精益的主要方法有两种:
精益产品开发相当于设计新车,更像是软件开发而不是生产。我们正忙于创造新事物,而不是一次又一次地生产同样的旧东西。它是关于最小化正在进行的工作,获得快速的反馈,并使用这些指标来确定要构建什么。
精益生产更像是工厂。这样做的目的是尽量减少变异,以确保高质量。这类软件中唯一模糊的是构建系统,但更像是工厂和汽车的设计。特别是,精益六西格玛是关于大大降低变异性,是完全,完全不适合西南开发。
他们都做的一个共同点是将正在进行的工作减少到最低限度。(这比这要复杂一些,但对你来说这是一个简单的概述。)
当我看到“精益”的时候,我会非常小心,关于你所应用的技术中的哪一种。幸运的是,SBCE是从第一位开始的,而不是第二位的,因此您的老板大部分都在正确的页面上。精益创业方法(我猜这也是他读到的关于SBCE的地方)也是这个组的一部分。
精益和BDD是完全兼容的;事实上,我建议使用BDD的看板系统方法。在速记中,这意味着减少围绕场景发生的对话与正在进行的实际工作之间的差距,同时尽量减少没有进展到软件的对话次数(因为随着时间的推移,您会忘记您谈论的内容)。
SBCE是一种用于运行多个并发实验的方法,当需要完成的工作存在不确定性时,这种方法非常有用。BDD在帮助找出哪些部分的工作是不确定的,哪些是很好的理解或需要专业知识方面非常出色。BDD的逐例规范只是BDD的一部分,尽管它是大多数人所熟悉的部分,这也可能是你的老板拒绝它(不必要的)的原因。
想了解更多信息,可以试试我在使用BDD作为一种传感器制作技术上写的这个博客(找到我刚才提到的那些边框)、估计复杂度上的这个博客,或者看看我在BDD和Cynefin上的任何演讲。你的老板可能会发现我的第一个博客也让人放心。
https://softwareengineering.stackexchange.com/questions/267109
复制相似问题