需求也有例外
很多项目开发人员只重技术,不重业务,认为只要技术好,项目看看需求就可以做了,完全不主动去做任何业务准备。有的需求几乎一看就懂,似乎很简单,但是正确理解并不简单,因为需求也有很多例外。
下面是一个计算个人贷款利息的实例,多年前曾因遭客户投诉而闹的沸沸扬扬:
用户需求:一年期短期贷款的到期利息按合同规定的年利率计算,提前还款按实际天数计算利息(每年按12个月计算,每月按30天计算)。
根据需求,开发人员就有以下几种方式对利息进行计算:
方法一:(到期还款按年利率计算,提前还款按日利率计算,):
日利率=年利率/12/30=年利率/360
到期还款利息=本金*年利率
提前还款利息=本金*实际天数*日利率
方法二:(全部用日利率进行计算)
日利率=年利率/12/30=年利率/360)
到期还款利息=本金*365*日利率
提前还款利息=本金*实际天数*日利率
方法三:(到期还款按年利率计算,提前还款按日利率倒减计算):
日利率=年利率/12/30=年利率/360
到期还款利息=本金*年利率
提前还款利息=(本金*年利率)-本金*(365-实际天数)*日利率
这三种方法从需求理解上看似乎都没问题,这就是一个简单的计算,结果是银行遭到提前还款客户的投诉,并且投诉到报社,报社到各家银行去采访,发现好几家银行都有此问题,有的提前还款比到期还款利息还多,有的到期还款利息计算也多。
我们看一下问题究竟出在哪:
客户贷款10万元,提前三天还款(实际天数362),当时的年利率5.31%
按方法一:
到期还款利息=100000*5.31/100=5310元
提前还款利息=100000*362*(5.31/100/360)=5339.5元
结果:提前三天还款,反而要比到期还款多付29.5元利息。
按方法二:
到期还款利息=100000*365*(5.31/100/360)=5383.75元
提前还款利息=100000*362*(5.31/100/360)=5339.5元
结果:提前还款要多付29.5元利息,就是到期还款也要多付73.75元。
按方法三:
到期还款利息=100000*5.31/100=5310元
提前还款利息=100000*5.31/100-100000*3*(5.31/100/360)=5265.75元
结果:提前三天还款,比到期还款少付44.25元利息。
同一个需求得出不同的结果,而且是错误的结果,其原因:
因为:日利率=年利率/360(每年按12个月计算,每月按30天计算的误导)
实际天数计算又是按365天,(有5天的误差)
所以:在360后提前还款就会出现明显问题。
结果:方法一和方法二因多收客户利息遭投诉
方法三的隐性错误是,如果客户在贷款1-5天时就来提前还款,利息算出来就是负数或0。
正确的方法应该如下:(任何时间提前还款都没问题)
到期还款利息=本金*年利率
日利率=年利率/365
提前还款利息=本金*日利率*实际天数
按此方法计算:
到期还款利息=100000*5.31/100=5310元
提前还款利息=100000*362*(5.31/100/365)=5266.36元
结果:提前三天还款,比到期还款少付43.64元。
看了以上的分析,就可知道出错似乎是因为按完全按需求做而产生的,这就是需求例外,这种情况在需求中时有发生。所以一个好的开发人员看需求决不能盲从,因为用户只从纯业务角度谈需求,而我们是站在业务和技术实施的两个角度去看需求,要从大到小,从粗到细的去分析。
对于需求判断是否是例外,首先要看需求点是否符合逻辑(在一个计算中,一年有的按360计算,有的按365天计算不符合逻辑),其次要看是否符合常理(提前还款多还息肯定不符合常理),只要我们真正理解了需求,那需求例外也就不会成为意外了。