探索需求对话
潘加宇 熊妍妍 / 翻译整理
本文刊登在2004年6月《程序员》杂志上,版权所有,未经许可,禁止任何形式的转载,违者必究!
2004年3月19日,温伯格先生应邀在UMLChina通过远程音频与开发人员做了一次有关“探索需求”的交流,很多开发人员都受益颇多。为此,我们翻译整理了这次交流实录,从中我们可以体会到大师的思想。
CMM只是一种标准,UML只是一种记录需求的工具
CMM能帮我们吗?
我想这样回答:CMM能帮你,也能害你,就看你对它的期望是什么。在美国,很多人从CMM中获益良多,同样,也从UML中获益良多。在很多时候,很多人未能得益于CMM或UML,是因为他们不适当地使用CMM或UML,或者期望从中得到太多。所以,要适当地应用这些工具。
我们先说CMM。CMM是你在开发软件时应该考虑的东西的列表。如果你不考虑这些东西,你可能正在犯一个大错误。虽然说光做这些事情是不够的。在很多美国公司,你付给他们钱,他们会填好CMM的表格,然后你就达到某个级别了。他们这样做是因为只有当你的认证达到了某个级别后,某些美国公司和政府机构才会与你签约开发软件。他们这样做是错误的,CMM级别不能保证任何事情,如果你采用别的途径能达到目的,CMM对你就没用了。CMM只是一个标准,使一些人认为你们是更好的软件工程师,比实际上的水平更好。要让CMM帮到你,你必须了解每项实践的含义,开发你自己的方法来设身处地实现。CMM不会明确告诉你每项必须做的实践是怎样做的,相反,它更多地告诉你要完成什么,不管通过什么方法来完成,都是好的。
我们发现涉众(stakeholder)不理解我们的UML图。
这个问题在美国这里也很普遍。UML是为技术人员设计的工具,帮助技术人员来准确地捕获需求。它很大程度上是技术性的,对大多数客户或涉众来说,太技术性了。很多涉众不能理解它,实际上也不需要理解它。必须翻译给他们。如果你希望你的涉众懂得UML,你就误解了UML这个工具和如何使用UML。
如何使用用例来捕获需求?
UML是一种方法。当然,它不是捕获需求的方法,而是记录需求的方法。你应该明白这两者的差别。捕获需求这个过程只能够发生在人和人之间,可能是很多人,一大群涉众。他们使用自然语言,例如,你们用汉语,我们用英语。如果你不能精通你自己的语言,UML不会在捕获需求方面给你提供任何帮助。我们看到过很多事例:工程师们认为涉众应该懂得UML,但实际不是,因此他们就责备涉众不懂UML。这当然是错误的。涉众是客户,你应该为客户提供服务,而不是让他们来服务你。你的工作就是为客户服务。
好的。我的观点是,对于开发,特别是开发软件,绝对是一种工艺。那些开发者是工匠、艺术家。我总是在人群中寻找工匠,比如找他们来做项目。但我不能通过问一些问题或观察一些事情来判断他们是不是一名工匠。例如,告诉你一些我自己的事情吧。我曾经打过家具。我是从父亲那里学到这门和木头打交道的手艺的。如果打算去买一些材料来做家具,可以四处看,我可以看到一些标志性的东西,告诉我这是否是一家好的家具店。我建议软件人员尝试更多的工匠术语,如工具、家具之类的。在软件业中道理是同样的。你注意到他们的工具了吗?他们是否为每项工作选择了正确的工具?他们是否会适当地使用他们的工具?一名好的工匠不会责备他的工具,因为选择正确的工具,并保持它的锋利和干净,是工匠的职责。如果他做不到这一点,他就没有什么好抱怨的。