朦胧的架构师

       年前被问道“你心中的架构师是什么样子”,被卡住了。心中向往架构师,但画不出他的模样,非常杯具的一件事情。  程序员总是乐于干一件事,发明一些词汇,并把他们弄得非常微秒,而又相互矛盾,最后谁也搞不懂。架构这词也是这样,个人对“架构”的感觉是,一个让人印象深刻的词,表示一些非常重要的东西。

      既然自己无法描述清楚,那么业界是怎么定义架构和架构师的呢?

      Ralph Johnson,四人帮成员之一:架构是一种主观上的东西,是专家级项目开发人员对系统设计的一些可共享的理解。一般地,这种可共享的理解表现为系统中主要的组成部分以及这些组成部分间的交互关系。它还包括一些决定,开发者们希望这些决定能及早做出,因为开发者看来它们是难以改变的。

      从 Ralph的理解中可以看出架构的特征:权威,不是谁都能做出的都是架构;重要,做出决定后很难更改;高层次的抽象,用来定义主要组成部门及关相互关系;主观性,什么时候是难能改变的决定,每个人都有不同的理解。

      Martin Fowler概括更彻底一些:架构可分为两点,一是“最高层次的系统分解”;另一点是“系统中不易改变的决定”。

      Wikipedia:  software architecture is centered on the idea of reduce complexity  through abstraction and separation of concerns.  意思是说,架构致力于通过抽象和关注点分离减少复杂度。 

     架构的目的用于确保系统能够满足其利益相关人的关注点,系统完成后具有某些属性或性质,即品质,在系统实现和演进时有助于处理复杂性。架构通常意味着结构,每种结都由各种类型的组件及其关系组成,由一组结构形成的架构提供了对付复杂性的主要手段。架构最终体现在结构上面,不变的深层次结构。

     架构师必须与利益相关人协作,理解关注点和约束,排列优先级,作出权衡;然后通过抽象、关注点分离,进行高层次的系统分解,设计骨架结构;最后确保设计概念在实现时得到一致体现。

      架构师十项必备技能:

  • 卓越的程序员;
  • 抽象思维;
  • 技术前瞻性;
  • 问题解决大师
  • 多领域知识;
  • 沟通能力
  • 内力;
  • 权衡取舍
  • 管控能力;
  • 艺术气质

/*************心中无码,天下我有******************/

夏天很热的一个日子里,一个外乡人沿着一条路在行走。他走着走着,来到一个人跟前,此人正在路边敲碎石头。
“你在做什么?”他问那个人。
那个人抬头看着他;“我在敲碎石头。你以为我看起来像在干什么?现在不要妨碍我,让我继续干活。”
这个外乡人继续沿着路走,不久他遇到了第二个在大太阳下敲碎石头的人。
这个人正努力工作,汗滴如雨。
“你在做什么?”外乡人问道。
这个人抬头看他,露出微笑。
“我在为谋生而工作,”他说,“但这个工作太辛苦了。也许你能给我一份更好的工作?”
外乡人摇了摇头,继续前行。没多久,他遇到了第三个敲碎石头的人。太阳正是最炙热的时候,这个人非常卖力,汗流如注。
“你在做什么?”外乡人问道。
这个人停了一下,喝了一口水,微笑着抬起他的手,指向天空。
“我在建一座大教堂。”他喘着气说。
外乡人看了他一会儿,说:“我们正打算开一家新公司。你来做我们的总建筑师怎么样?”

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值