我想看到这种标题。对于每一个搞软件的朋友来说,肯定是非常有兴趣的。
由于这已经成为每一个软件开发人员的心头大患,客户需求在软件这个独特的行业里。体现着最独特的含义,由于需求是软件项目存在的意义所在。而需求的变化让软件最后撵手不着,我们大家都会有“客户需求何时休?”的体会。
软件是服务于业务需求的,没有业务需求的软件肯定是没有价值的。国内的软件业普遍现象是:软件项目远远大于软件产品。这也是国内软件所面临的一个严重问题。国内软件好象在死亡线上挣扎。项目成为软件企业生存的唯一依赖,而项目恰恰是最难于侍奉的。
软件公司在积累一定的项目经验基础上,应该形成具有自我产权核心的技术与经验,把这经验总结与汇集成产品,才有可能大踏步的前进。
然而这说来简单啊。本以为一个个的项目能够为以后的产品积累资金与经验。然而每一个项目的需求不断变化,无休止的改动与维护,利润趋向于零;人才也“超市场规律”的流失,经验也“人去楼空”。
软件项目非常强调客户需求。而国内软件业好象对客户需求不够重视,无论是新上任的项目负责人还是有经验的项目负责人,好象都重技术。轻需求。中国的软件人员们都在追求高技术。好象技术好就是老大,21世纪谁最红----软件技术高手。
你看看一个个软件技术高手,在网上听到的都是“大哥”“大侠”“高手”,这过分的崇拜技术也是导致藐视客户需求的一个原因。软件不是技术的积累。不是技术好就能设计软件,技术是能够解决软件开发中的一些问题,但它仅仅是解决软件怎样实现,而不能解决软件怎样去做。
项目開始了,设计者们都把了解客户需求作为软件的需求,把客户的要求拿回来后看看就着手DB设计,然后系统架构,接着开发,这也能够理解,由于我相信中国的软件项目好象没有一个不是急的。
问问IT的同行们“项目急吗”。十有八九说“急啊,急死人了”。
没办法啊,需求看着那么简单,报价自然廉价了,结果问题却非常多非常多,再不抓紧就是亏老本的事了。
最后呢。客户验收的周期远远大于开发周期。非常easy,客户需求被低估了,验收时客户常会说:
这里的关系不是这种,应该是那样那样
我们的流程不是这样走的。应该是那样那样
这里不是一一相应的,而是一对多的关系
要是这里删除了,那里怎么会出错呢
这个最好做成可维护的,我随时须要加入(fuck)
这时你的心肯定是拔凉拔凉的,问题是越改越多了,一方面是由于软件设计时确实误解了客户的意思,二是客户也是在使用时才想起来应该那样那样。
有时客户初期说的和后来说的是矛盾的,能够理解,客户天生就没有这么强的逻辑性的。但作为软件开发。你又能把客户怎样?他才是上帝,你难道非要让客户承认错误,承认不承认你都得改,平不了自己的气还要得罪客户,还是认命吧。这改动需求啊,就跟任贤齐说的:“一个还没过去。一个又来侵袭”。
事实上问题出在开头,客户需求仅仅是软件需求分析的一部分,尽管是比較重要的一部分,但也不要仅仅是去记客户的需求,而是要把客户的需求进行分析,分析什么?
客户本身是不怎么懂技术的。客户仅仅知道自己的业务需求,而在软件设计时,是在把业务需求抽象到系统中实现的。把业务转变为逻辑时,一切都应该符合逻辑的,但客户的业务思想有时候在软件系统实现时会有问题的,这就须要分析时分析出来的。
少了分析。问题也会在后面的开发中暴露出来,到时可就更麻烦了。
还有客户的需求本身会有矛盾(这矛盾是指在逻辑角度来讲),客户本身是意识不到的,仅仅有在分析设计时,才会分析出这里的矛盾。而这些问题。假设在期初时。软件负责人不分析。而是纯粹的“听从”客户要求去做,当暴露这些问题时,你怪客户也没用啊。
因此,非常easy,在了解客户需求时,不要不动脑子,不要一味的点头说“I C”,事实上在表面的业务里面可能包括着N多的细节,这些细节是须要你反问客户的,仅仅有当你提的问题越多,终于获取的需求最详细,才干让项目越顺利。并且有非常多问题,都是在你的反问中,客户也才開始思考本来没思考过的问题,客户也会找到一种合理的需求给你,有人会认为这样了解客户需求未免太麻烦了。至于一些在技术上会遇到问题的地方。也要告诉客户,别以为到时候再说,客户是不关心你的技术细节的。但你假设给他解释的话,他也会试着理解的。
项目就算急。也不能急在需求分析上。软件再小,需求再简单,我想不可少的就是需求分析。在需求分析阶段解决这个问题的代价是最小的,越往后就成次方级递增。因此,要让你的项目能顺利下去,不要再追求技术了。冷静的先分析一下客户需求才是最关键的。
客户的需求本身是无休止,由于他们本身也在变,但当你期初的分析合理,后面的变动也将在逻辑上变动。相信代价已经不会那么大了。
这事实上也体现了系统的扩展性。
别指望着客户需求会停止,我想大家都有这方面的体验,当然了,也不是说客户的需求分析出来后都要去做,由于项目的价格,在软件设计时还是要分析哪些应该实现。哪些应该放弃,由于做项目跟做产品全然不一样。要对客户的需求进行合理的分析,该舍的还是要舍。但有一点能够相信,当系统最后表结构出问题,逻辑上不符合业务时。那肯定是需求分析没做好。
要记得下次需求分析时多问问清楚了。
事实上这些道理大家都知道,但在实践中却往往被忽略了,以此文章仅仅是想让大家引起注意,客户的需求尽管不可能休止,但我们能够把代价压缩的尽可能小。