因为我又要扯到软件设计上来了。
我奇怪的是,当她练到更多的武功,需要更多的feature的时候,这个老萝莉却停止了架构的变化。比方说蝌蚪吧,长成那个样子是为了适应当前的需求——在水中生活。当需求发生变化,需要新的feature时,蝌蚪逐渐的发生了架构上的变化——变成了青蛙——两栖动物。设想蝌蚪仍用原来的架构来应对增加的新需求,像个鼻涕虫一样趴在荷叶上可能没问题,想跳起来就有难度了。
软件当时的架构往往是为了支撑当时的需求的,当不断有新的需求增加进来时架构要随之调整。可是我们的软件模块有时就像老萝莉或者大蝌蚪一样,用一成不变的架构,笨拙的应付着新的功能。有点意思的是,我很久以前曾经工作过的一个软件模块,是在更早以前用一个当时著名的芬兰美女的名字命名的,她那年20岁。十六年过去了,当年的美女依然美丽动人,而且有了洽当耦合的结果——已是孩子她妈了,相夫教女,非常美满。而那个模块如今却已是臃肿不堪了。早就违反了Single Responsibility Principle,并且不断的违反着Open/Closed Principle,十六年间和无数其它模块发生了理也理不清的耦合关系。不知道是不是该把美女的名字还给人家,改名叫做天山童姥的好。
Craig Larman对我的大蝌蚪的比喻提出了批评(我当然没办法把天山童姥的事和他说,说了他也不懂)。他说蝌蚪是要注定变成青蛙的,但软件需求的变化却是不可预知的。他更喜欢园丁的比喻——园中的植物不断的生长,就像系统不断的成长一样。园丁们要不断的修剪,不能让花园变成杂乱的荒园。他说,这个比喻将会出现在他的下一本书中。
附上美女的照片,名字就不提了。为了强调本文的重点,把那个模块描写的比较不堪。其实和事实相比有很大的夸大成份。并且一直一来围绕这个模块工作的同仁们都很努力,让我多多少少有点心里不安。
没有评论:
发表评论