软件的艺术之美源于权衡(Trade-off)

    软件架构师的主要职责是什么?是抉择、是权衡。把软件称为艺术一点都没有夸张,可以说软件是科学、工程、与艺术的结合体。软件的艺术体现在权衡上。在这一期的《程序员》杂志上看到了一篇“鱼与熊掌--完美主义架构师的梦魇”,其中关于权衡要素的论述正切合我之所想,现将主要部分转摘如下,如果想了解更详细内容,请在本期程序员阅读全文。

(1)Time or Space  时间 vs. 空间
   牺牲内存换取时间或牺牲时间以节省内存是我们常用的伎俩。  

(2)Elegancy or Efficiency  优雅 vs. 效率
   比如,多态很优雅,却是以效率为代价,而丑陋的函数指针却正好相反。

(3)Fashion or Familiarity  不熟悉的新技术 vs. 熟练的旧技术
   是采用最新、能提高开发效率却我们不熟悉的新技术,还是继续使用我们很熟练的但是开发效率低下的陈旧技术了?

(4)Revolution or Evolution  革命 vs. 继承
   对于遗留系统,我们是推翻重来,还是在其基础上进行改良重构并增强了?

(5)Under-Design or Over-Design  轻度设计 vs. 过度设计
   设计,需要细化到何种程度、需要多长时间?

    架构设计的限制始终围绕了软件质量的11要素:正确性、可靠性、有效性、完整性、可用性、可维护性、灵活性、可测试性、可移植性、可重用性、可互操作性。

 

posted @ 2005-09-11 10:08  zhuweisky  阅读(1974)  评论(4编辑  收藏  举报