Farseer

导航

需求分析

在生活的任何领域追求完美,都不过是抽象的,病态的或者无聊的幻想而已。

作软件也是一样的,不能片面地追求完美,绝对的完美只是雾里花,镜中月而已。极限编程(EP)的理论中有重要的一条原则:“只实现你真正需要的东西,不要去实现你认为需要的东西。在作需求分析的时候不要试图满足客户N年后的需求,软件技术日新月异,在程序员用asp,JavaScript堆砌网页的时候,谁会想到asp.net的横空出世那?另外项目的时间,成本也不允许你尽善尽美,只能做到适可而止。

只做真正需要的东西,并不见得就是敢于平庸的表现。只要在开发的过程中,注意总结,不断提高,照样可以使自己的产品符合面向对象的基本理念,贴近前人总结出来的设计模式。与其妄图一下子做出完美无缺的产品,不如在慢慢尝试中不断提高,不断完美。只要不断提高,慢慢地就会发现自己的产品原来也是扩展性还可以的,可维护的,可复用的系统。

我们公司跟客户了解需求的是顾问,号称领域内的精英,虽然这些都要大打折扣,但这未尝不是一种很好的模式。我在客户支持的时候,客户说,你们公司很奇怪啊,为什么要在RD和我们之间加一层顾问?直接过来跟我交流不就行了。其实大多数小型的软件公司确实也是这样去做的,程序员直接跟客户谈需求,问清楚做什么然后直接作,有什么问题马上修改,这样做跟客户的交互很高效,客户也会觉得自己的需求很快得到了响应。但是这样的模式也有它的不好的地方,作为一个大的软件公司,不可能像小公司那样灵活,可以一下子扑到一个项目上,做完,收钱,收工。而公司试图成为领域内的行业专家,就不能只靠RD的研发,更重要的是形成对整个业务领域的认识,并试图使自己的认识不断完善,让其他公司接受自己的认识。只有抽象出领域内的比较规范的业务流程,做出的产品才有可能被广泛的接受,而靠几个程序员从一个项目跑向另一个项目的做法,很难达到这种积累的目的。推行一个软件其实就是推行一种业务流程,一种行业规范。用陈旧的流程去走最先进的系统也不可能先进的。

这样对顾问的要求极高,一方面业务知识要相当了解,另一方面要知道程序如何实现比较好。跟客户沟通要行业语言,跟RD交流用计算机语言。当然我们现在的顾问正如象他们给自己的定位一样,传话者。这样是远远不够的。如果顾问不成长,大公司跟皮包公司是一个样子的,因为形成不了一种管理理念。RD做出来的东西不可能被广泛地接受。

由于客户不懂计算机专业知识,最好能在需求阶段就给出模型,在这个模型的基础上客户不断提出需求,不断进行改进。

posted on 2005-03-08 19:22  佛西亚  阅读(540)  评论(0编辑  收藏  举报