当前位置:首页 >> 互联网 >> 2007年9月8日

架构师心目中的关键词

推荐者:草根帮主 (积分 123626) | 原作者:张恂
前些日子,在闲聊中,一位媒体朋友问我:软件架构师(Software Architect)究竟与普通程序员有什么区别,软件架构师平时都在想些什么?这一问,倒提醒了我。想来自己从事软件架构设计这个行当也有十多年了,现在确实有必要以文字的形式,把自己这些年来对于软件架构设计这项充满魅力、极其有趣的工作的所思所想、经验所得,好好整理一下。

软件架构设计是一门建立在科学、工程基础之上的艺术。根据我本人的体会,以下术语和词汇大概就是那些让一位软件架构师在其职业生涯中时刻萦绕于心、挥之不去的核心关键词:

权衡与平衡(Balancing the Tradeoffs)

软件架构师必须学会的第一件事情是:懂得如何进行权衡,在各个相互矛盾的设计要素、限制和约束条件之间巧妙地取得平衡。

与人类所从事的其他工程活动一样,软件开发、软件工程本质上也是一种平衡的艺术。如何才能把握软件开发艺术的平衡之道?在现实的软件开发中,一名架构师必须首先掌握科学的、工程的思维方式和方法,也就是客观的、系统的、符合逻辑的思维。错乱的逻辑必然导致错误的结论,基于错乱逻辑设计出来的软件也必然会破坏软件架构内在的和谐之美,因而是丑陋的。

抽象、建模与设计(Design with Abstraction and Modeling)

一位软件架构师必须主动地选择工作在合适的抽象层次上。在必要的情况下,他/她必须能够脱离具象的编程语言(如 Java、C++、VB.Net、JavaScript、Ruby 等等)进行思考,能够透过现象看本质,准确抓住事物的本质。

如果一位“架构师”只会工作在代码实现(Implementation)层,遇到任何问题就忍不住要写上几行代码、砌上几块砖头,摆摆看,否则就无法顺利思考,却不知道、不会利用图形、符号、公式等抽象的、敏捷的手段来描述自己的思考和设计,那么这位“架构师”的能力是有严重缺陷的。

预见性和前瞻性(Prediction and Anticipation)

一位软件架构师必须比团队中的普通程序员、初级程序员看的更远。

如果一位开发“能手”和“高手”,经验丰富却目光短浅,只知道解决眼前的现实问题,不知道在有限的可用时间内往前多看几步,考虑一下面向未来问题和潜在风险的应对之道,他是不足以享有“架构师”头衔的。

简化之美(The Beauty of Simplification)

简化是这个世界上任何科学、工程技术 —— 逻辑艺术 —— 的本质要求。

E=mc^2 告诉我们,我们人类身处的这个宇宙存在着永恒的简单真理。作为被科学家和工程师利用电子技术构造出来的虚拟世界 —— 软件,这个空间、小宇宙自然也不例外。在软件工程界,我们笃信:只有简单而有效,才是真正的软件之美。

为什么我们要白白耗费资源,开发出冗余的、重复的、七绕八拐的低效程序?软件架构师必须带领他/她的程序员团队,始终坚持对软件架构艺术之美 —— 简化的追求。

模式与重用(Patterns and Reuse)

软件架构师必然首先是一名聪明的程序员,他/她知道何时、何处省力,如何省力:运用巧力来轻松完成原本繁重的开发工作。

节省工作量的最好一个办法就是重用。如果软件开发的 10 倍率银弹存在的话(张恂一直认为谈论布氏银弹的存在与否并无多大的实际意义),软件重用无疑是一颗最有效的银弹。重用自己的或别人的代码、程序、构件、模块、子系统乃至整个系统,可以让过去需要 10 天完成的工作在 1 天之内完成,让过去需要 1 年完成的工作在 1 个月之内完成,这样的例子遍地都是,有什么办不到的呢?

1 2 下一页

[ 关键词:架构 程序员 原文/来源链接 ]
1楼楼长:cskok (抢沙发奖牌)在2008-9-30 4:57:40评价道:
zang
验证码: 20ju
备注:请不要在评论中发广告,如需增加外链请注册成个人会员试用个人签名与自助广告。