background image

系统架构

:小议软件架构设计要点

 

如何更好地进行软件架构设计,这是软件工程领域中一个永恒的重点话题。

过去几十年来,国际软件工程界在软件架构设计方面已经获得了长足发展,大

量图书、文章和文献记载了这方面的成熟经验与成果。软件架构设计往往是一件

非常复杂的工作,涉及到很多细节和方方面面,可探讨的话题也非常之多。囿于

篇幅限制,以下只能根据笔者个人理解,遴选出软件架构设计的个别要点,结

合当前流行的敏捷软件工程思想,与大家分享一下自己在软件架构设计方面的

心得和体会。

  架构决定成败

  软件架构是软件产品、软件系统设计当中的主体结构和主要矛盾。任何软件

都有架构,哪怕一段短小的

HelloWorld 程序。软件架构设计的成败决定了软件产

品和系统研发的成败。软件架构自身所具有的属性和特点,决定了软件架构设计

的复杂性和难度。

  这几年流行一个说法(管理谚语):

“细节决定成败”,这句话其实只说对

了一半。细节确实很重要,很多项目、产品就输在细节的执行上。一方面,战术细

节固然很重要,但另一方面,战略全局也同样重要,对应的我们可以说:

“战略

决定成败

”。战略性失败,就好比下一盘围棋,局部下得再漂亮、再凌厉,如果罔

顾大盘,己方连空都不够了,还有官子(细节)获胜的机会吗?必然是中盘告

负。

  类似地,正确的软件架构设计,应该既包括战略全局上的设计,也包括战

术细节(关键路径)上的设计。有一种错误的观点认为,软件架构设计只要分分

层和包,画一个大体的轮廓草图,就完事了。这种

“纸上谈兵”型的架构师行为是

非常有害的。事实上,既然软件架构是软件建筑的主体结构、隐蔽工程、承重墙和

要害部位,那么软件架构也必然要落实到实际的算法和代码,不但要有实现代