软件工程的经验告诉我们,一个软件开发过程是可以很长但也可以很短的时间。为什么这样说呢?其实道理很简单,长的时间说明这个项目很难搞,时间长。短呢?说明项目容易很快就搞完。假如这样看待一个项目过程,那么你就错了。一个项目过程往往不可以看得这样简单,因为这个过程是复杂。下面看一个例子
一个公司的老板外包了一个项目给一个年轻的代码员做,代码员没有什么经验,为了生计就没有别的选择,开始的时候他跟客户谈好了需求,客户的需求代码员很快就上手了。但随着时间的推移,客户提出的需求就越来越多而且变更就越来越大。开始以为可以完整了事,这时候工作结束了,客户一看。不好意思,不符合我的意思。我要求不是这样。这个时候,有两种选择。一继续做下去,二选择退订不做。也许年轻的人会选择后面,但想到养家问题,没有办法继续做下去。客户再提出需求变更,你重新架构好,再设计,一个月过去了。代码给以前的进步不少。客户再次看了,几天没有打电话过来,本以为可以收取钱了,但事实上事情并没有解决,客户再次提出需求变更,说软件速度慢 有时候会出错。这时候,年轻的程序员没有理由拒绝客户的意见,他再次修正错误,完善了代码。可是,事情还是没有解决。客户还是不满意,说这软件效率低,没有达到生产线的目的,钱还是没有收到。同样你可以选择两条路:一,走人不干;二,继续改。 是不是很疼苦呢。没有办法,为了生计痛苦的事情继续来,你重新回归到设计上,把架构都再设计好,代码再优化了一次,又一个月过去了,客户基本上满意了。但你希望的事情就是钱尽快收回来。客户试了,过了每一段时间他再打了一次电话来,又过了一段时间电话又来了。但这次,客户电话时间间隔以前的频率减少了,结果你经过三个月时间多终于收回了项目的钱来。客户再没有打过电话来了。
这样一个过程看来,需求变更在不断进行着,而且是贯穿整一个项目里。也许把项目看着简单的事情那么就尝试这样的一个结果。
所以,需求分析重要性是贯穿一个项目,架构设计其重要性在这个个案中可以体现得出来,开始以为完成了,但跟客户的要求完全不一样,是不没有按照客户的要求做,不是,而是项目过程要面对客户的变更需求。这样搭建架构和设计就在前期工作就显得重要。其次就要了解客户的生产运作。只有这样了解才可以了解客户心理面想着的事情。
需求分析:考虑 风险 ,成本,人才 ,时间