1.软件开发是什么?
前几天看到博客园里的一篇文章,谈到“世界上没有什么用OO描述不了的东西”的说法,突然想到,对象可以用来描述世界上所有的东西,那么,软件开发可以看做是在“0-1”世界中对真实世界进行描述的过程,而软件,就是真实世界在“0-1”世界中的模型。
我们用各种各样的方法来开发,面向对象、面向过程、UML、MDA等等,各种开发方法的发展,其实就是在找一种对现实世界更为准确,使用更方便,更简单的描述方法(简单就是美)。
现在有完美的描述方法吗?大概没有,不然就不会有各种各样的新的开发方法提出来了;未来会不会有呢?也许会有,不过不知道我有没有机会看到了
2.单元测试的意义
在OO开发中,软件是由一个一个高内聚的对象组成的,软件通过对对象的接口进行连接,对业务流程进行描述。
用机械制造来打比方,软件就相当于最终的成品机器,对象则是一个一个的零配件(有些是零件,有些是配件,因为有些对象是由多个其他对象组成的),按照图纸(软件开发中就是开发前建立的模型)制造出来,再按照装配图装配起来,就是最后的成品;零配件间各种接口就相当于类(对象)的各种接口。
在机器零配件的制造过程中,我们要对零配件的各项参数、功能进行检查,以检查其是否符合设计要求;在软件开发过程中,与这个检查的过程相对应的操作就是单元测试。
单元测试用来保证开发过程中类的实现和最初的设计是符合的,并且对类的实现的修改不会影响其他类的功能(机械制造过程中也会有相应的修改过程,某个零件由于某些原因进行修改后,有可能会需要其他零配件也需要重新设计制造)。
但是单元测试并不能保证软件一定就是成功的,它只是一个开发过程中的质量保证方法而已;还用机械制造来打比方,如果最初的图纸有问题,那么即使制造过程中的检测保证了每一个零配件都和图纸是百分之百的符合,最终制造出来的机械肯定也不会是完美的。