天天看点

软件开发过程中的食物链

McConnell在《代码大全》中的一个十分贴切的比喻:

程序员是软件食物链的最后一环。架构师吃掉需求,设计师吃掉架构,而程序员则消化设计。

我们用真实的食物链来比喻软件食物链。在健康的生态环境中,海鸥吃新鲜的鲑鱼。这对海鸥是营养丰富的大餐,因为鲑鱼吃的是新鲜的青鱼,而青鱼吃的是新鲜的水蝽。这是一条健康的食物链。在软件开发中,如果食物链的每一级都有健康的食物,那么最终就会获得由快乐的程序员编写出的健康的代码。

在受到污染的环境中,水蝽在核废料中游泳,青鱼被聚氯联二苯(PCB)污染,而吃青鱼的鲑鱼又在泄漏的原油中游荡。3海鸥,很不幸,它位于食物链的最后一环,因此它吃下去的不仅仅是不健康的鲑鱼体内的原油,还有青鱼体内的聚氯联二苯和水蝽体内的核废料。在软件开发中,如果需求被污染了,那么它就会污染架构,而架构又会污染构建。这样会导致程序员脾气暴躁、营养失调;开发出的软件具有放射性污染,而且周身都是缺陷。

如果你正为某个高度迭代的项目做计划,那么在开始构建活动之前,你需要针对将要构造的每一片段,先弄清哪些是最关键的需求和架构要素。建造住宅小区的施工人员,在开始建造第一栋房子之前,并不需要知道小区里面每一栋房子的每一个细节。但他会调查施工场所,制定下水道和电线的走向等。如果施工人员准备不充分,那么建造过程很可能会因为“需要在某所已经造好的房子的地下挖一条下水道”而延误。

......大师就是大师,我等只能膜拜了...

继续阅读