通常来说,软件设计不外乎两种方式:计划的设计和演进的设计。很多人看来,计划的
设计更符合工程学的理念。如果你要建一间茅屋,那么你只需夯好土墙,再胡乱堆放一些茅
草置于屋顶之上就可以了。然而,如果要你建一座苏州的拙政园,就必须事先有计划的设计
了。哪里应该堆放假山,哪里应该开辟池塘,亭子的形状,院落的分布,乃至于园内的一花
一木,无不需要独具匠心。软件设计也是如此,且过之而无不及。接手项目的时候,首先考
虑的不是编码,而是考虑整个系统的架构,根据需求考虑系统中的重大问题。模块的功能,
模块间的关系和系统分布的层次,都需要匠心独运,从一个抽象的层面来考虑。