系统架构师是怎样炼成的?

转自:http://www.educity.cn/rk/sa/200901191150471701.htm

  坦率的讲,除了少数对开发程序极其热爱并愿意为之奋斗终身的编程者来说,对于大多数开发人员,写代码只是他们未来获得职业提升的一个必不可少的积累阶段,在做开发的时间里,他们会积极学习各种知识,经验,培养自己的商业头脑,包括扩展自己各方面的资源,这些积累会为他们未来成为管理者或创业打下牢固的基础。

  成为架构设计师是广大开发者职业发展道路之一,架构师究竟是个什么样的职业?需要具备什么基本能力?如何才能成为一个优秀的架构设计师以及架构设计师需要关注哪些内容?针对有关问题,本期我们为您采访了(微软认证专家,系统分析员,希赛顾问团顾问,中国计算机学会会员) 张友邦,他会就相关问题与大家分享他的看法。

  “在我工作的六年多时间里,除了第一年是纯粹编码以外,其余时间都在做和架构设计有关的工作,当然也还一直在写各种各样的代码。”张友邦认为架构设计可能看起来很神秘,新入门或没有架构设计经验的程序员刚开始的时候会有种不知所措的感觉,但其实架构设计是件很容易的事,它只是软件系统开发中的一个环节而已,整个软件系统的开发和维护以及变更还涉及到很多事情,包括技术、团队、沟通、市场、环境等等。

  同时,张友邦表示,虽然架构设计是件容易的事情,但也不是大多数没有架构设计经验的程序员想象中的画画框图那么简单。把几台服务器一摆,每一台服务器运行什么软件分配好,然后用网络连接起来,似乎每个企业级应用都是如此简间单单的几步。但现实生活中的软件系统实实在在可以用复杂大系统来形容,从规划、开发、维护和变更涉及到许许多多的人和事。架构设计就是要在规划阶段都把后面的事情尽量把握进来,要为稳定性努力,还要为可维护性、扩扩展性以及诸多的性能指标而思前想后。除了技术上的考虑,还要考虑人的因素,包括人员的组织、软件过程的组织、团队的协作和沟通等。

  另外,架构设计还需要方法论的指导。张友邦强调,这些方法论的思路包括,至上而下的分析,关注点分离,横向/纵向模块划分等。有时候觉得架构设计决策就像是浏览Google Earth,实际上反映的是一种自上而下的决策过程。对问题的分解是软件思维的基本素质,可以有横向分解、纵向分解以及两者的结合。能不能有效快速准确的分解问题,是软件开发人员需要首先训练的项目。另外,架构设计中图形化的工具非常有用,它能把系统的结构和运作机制以图形化的方式表达出来。也正因为这样才有了架构设计就是画框图的误会。再者,架构设计是一个工程性质的工作,对当事人的实际从业经验要求较高。只有对市场上的各种技术有较全面的了解之后才有可能设计出一个尽可能满足各种设计约束的架构。

  在谈到架构师需要具备的能力上,张友邦认为架构师首先必须具有丰富的开发经验,是个技术主管。因为他必须清楚什么是可以实现的,实现的方式有哪些,相应的难度怎么样,实现出来的系统面对需求变化的适应性等一系列指标。另外,需要对面向过程、面向对象、面向服务等设计理念有深刻的理解,可以快速的察觉出实现中的问题并提出相应的改进(重构)方案(也就是通常说的反模式)。这些都需要长期的开发实践才能真正的体会到,单从书本上很难领会到,就算当时理解了也不一定能融会到实践中去。

  在技术能力上,软件架构师最重要也是最需要掌握的知识是构件通信机制方面的知识,包括进程内通信(对象访问、函数调用、数据交换、线程同步等)以及进程外(包括跨计算机)的通信(如RMI、DCOM、Web Service)。在WEB应用大行其道的今天,开发者往往对服务器间的通信关注的比较多,而对进程内的通信较少关注。进程外跨机器通信是构建分布式应用的基石,它是架构设计中的鸟瞰视图;而进程内的通信是模块实现的骨架,它是基石的基石。如果具体到一个基于.Net企业级架构设计,首先需要的是语言级别的认识,包括.NET的CLR、继承特性、委托和事件处理等。然后是常用解决方案的认识,包括ASP.NET Web Service、.NET Remoting、企业服务组件等。总之,丰富的开发实践经验有助于避免架构师纸上谈兵式的高来高去,给代码编写人员带来实实在在的可行性。

  其次,具有足够的行业业务知识和商业头脑也是很重要的。行业业务知识的足够把握可以给架构师更多的拥抱变化的能力,可以在系统设计的时候留出一些扩展的余地来适应可能来临的需求变化。有经验的设计人员可能都碰到过这样的事,一厢情愿的保留接口在需求变化中的命中率非常低。也就是说,在系统设计之初为扩展性留下来的系统接口没能在需求变化的洪流中发挥真正的作用,因为需求的变化并没有按照预想的方向进行,到最后还是不得不为变化的业务重新设计系统。这就是因为对业务知识的理解和对市场或者商业的判断没有达到一个实用的、可以为架构扩展性服务的水平。

  再次,张友邦提到,架构设计师对人的关注必须提升到架构设计之初来纳入考虑的范围,包括沟通以及对人员素质的判断。软件过程是团队协作共同构建系统的过程,沟通能力是将整个过程中多条开发线粘合在一起的胶水。大家都应该碰到过事后说“原来是这样啊,我不知道啊”或者某个开发人员突然高声呼喊“为什么这里的数据没有了”之类的。沟通的目的就是尽量避免多条开发线的混乱,让系统构建过程可以有条理的高效进行。另外,对人的关注还表现在对团队成员的素质判断上,比如哪些开发人员对哪些技术更熟悉,或者哪些开发人员容易拖进度等。只有合理的使用人力资源,让合适的人做合适的事情才能让整个软件过程更加高效。

  另外,张友邦认为架构师应时刻注意新软件设计和开发方面的发展情况,并不断探索更有效的新方法、开发语言、设计模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统开发工作中。但对新技术的探索应该在一个理性的范围内进行,不能盲目的跟风。解决方案提供商永远都希望你能使用它提供的最新技术,而且它们在推广自己的解决方案的时候往往是以自己的产品为中心,容易给人错觉。比如数据库,往往让人觉得它什么都能做,只要有了它其它什么都不重要了。但事实上并不是如此,对于小型应用可以将许多业务逻辑用script的方式放入数据库中,但很少看到大型应用采用这样的做法。对于新东西需要以一种比较的观点来判断,包括横向的比较和纵向的比较,最后得出一些性能、可移植性以及可升级等指标。另外,新入行的开发人员往往关心新技术动向而忽略了技术的历史,而从DOS时代一路杀过来的开发者就对现在的技术体系有较全面的把握。

  构架师不是通过理论学习可以搞出来的,不学习并且亲自实践相关知识肯定是不行的。就像前面说到的,架构设计是一个工程性质的事情,只有在不断实践的基础上才能逐渐熟悉起来。实践的内容并不是去深挖各种语言的特性,因为系统架构师是设计应用系统架构而不是设计语言(除非你是要实现DSL)。更多的时候需要带着一种比较的眼光去实践,把不同的实现方式下的优缺点做个总结,做到自己心里有数,等具体的上下文环境下才好判断采用什么样的方式方法。把基础打牢的同时掌握一定的方法,架构设计不是想象中的那么难。

  张友邦,男,微软认证专家,系统分析员,希赛顾问团顾问,中国计算机学会会员。1980年生于四川宜宾,2002年获得国防科技大学宇航科学与工程系空间工程专业学士学位,2004年初成立长沙石斑软件有限公司并担任总经理,2006年底出任广州快网信息技术有限公司技术总监,2007年10月任湖南新邮信息技术有限公司软件中心副经理。主要研究领域包括软件架构与设计、WEB RIA、流媒体与计算机图形图像。受国家自然科学基金资助,于2001年发表国家级核心刊物学术论文一篇。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2010/04/10/5469863.aspx

时间: 2024-09-23 08:16:13

系统架构师是怎样炼成的?的相关文章

职业生涯-系统构架师是怎样炼成的?

问题描述 系统构架师是怎样炼成的? 楼主大三本科在读,职业生涯目标明确,想做一名系统构架师,知道要经过很长时间.但是目前迷茫,不知如何修炼,跪求高人指点 解决方案 其实系统架构师一定是从程序员-软件工程师-高级软件工程师-架构师,经过这样的路线成长起来的.没有经过系统的编程修炼,熟悉各种编程技术,就想成为系统架构师是不可能的. 但是成为系统架构师不一定要求是优秀的程序员,程序员要求精通编程的各个细节,而系统架构师更侧重于系统级别的解决方案. 一般来说,经过8年左右的一线编程经验,经历过程序员-软

Uber首席系统架构师Matt Ranney:可伸缩的软件系统工作原理

据报导,在短短四年间,Uber已经惊人地增长了38倍.现在,Uber的首席系统架构师Matt Ranney 在他的报告"可伸缩Uber实时市场平台"中,对Uber软件系统的工作原理进行了一个有趣而又详细的介绍. 如果你对Uber迅猛增长的单价感兴趣,这个并没有在报告中涉及.但是我们可以了解Uber的调度系统,怎样实行地理空间索引,怎样规划他们的系统,怎样实行高利用率和怎样处理失败,包括令人惊讶的方式处理数据中心故障,使用驱动的手机作为恢复外部分布式存储系统. 在Matt的报告中,给人印

中交兴路系统架构师杨晓明:Hadoop+Storm+ HBase…,打造交通行业创新型服务

出租车.公交车.客运班车.重型货车--,营运车辆在城市交通中占据着重要的地位,与人们生活乃至社会发展有着重要关系.构建信息化平台,对营运车辆进行监控与管理,规范车辆行为,建立良好营运秩序,已成为智能交通建设中不可或取的一部分. "交通部全国货运监管服务平台"是北京中交兴路信息科技有限公司(以下简称"中交兴路")所开发的重要产品之一,致力于对全国货运车辆进行监控.管理及信息交互,在充分运营的情况下,每秒将产生数十万的平均访问量乃至每日上百TB的数据.正是凭借常年在交通

2010系统架构师大会!演讲PPT的下载地址 ,希望对大家有用

2010系统架构师大会!演讲PPT的下载地址 1.架构师大会-架构设计专场http://linux.chinaunix.net/SACC2010/topic1.zip2.架构师大会-架构设计与存储管理专场http://linux.chinaunix.net/SACC2010/topic2.zip3.架构师大会-应用系统优化与流量管理http://linux.chinaunix.net/SACC2010/topic3.zip4.架构师大会-可扩展数据库架构http://linux.chinauni

系统架构师-请教:6年程序员的前途——系统分析师

问题描述 请教:6年程序员的前途--系统分析师 我到目前(2014年01月07日)已经做了1年半C.4年半C++的程序员,水平的话个人感觉比较一般,但自己对编程有爱好,最近考虑自己的前途规划,看到有人说程序员有2个发展线路,一条是技术路线,由程序员,经系统分析师.系统设计师直到架构设计师为归宿.而另一条是领导路线,由程序员,经开发小组负责人.工程 负责人,奋斗到项目经理.从我个人的情况来看,由于我性格比较内向,所以比较倾向于走技术路线. 我现在想提高自己,但要学的太多了,恳请各位指点迷津.我现在

SACC2017第九届中国系统架构师大会10月在北京震撼来袭!

在数字化转型时代,云已成为万物智能的数字化大脑.而随着大数据应用.人工智能.移动互联网等技术的飞速发展,"智慧+"的概念正在深入到各行各业,提升企业效率,释放商业潜能,创造全新机遇.作为国内顶级技术盛会之一,2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店. 今年,2017第九届中国系统架构师大会以"云智未来"为主题,云集国内外顶级专家,围绕云计算.人工智能.大数据.移动互联网.产业应用等热点领域展开技术探讨与交流.本届大

系统架构师-基础到企业应用架构-客户端/服务器

本文转载:http://www.cnblogs.com/hegezhou_hot/archive/2011/11/07/2238983.html# 大纲        1.开篇        2.大纲        3.C/S架构的产生        4.C/S架构的常见场景和架构模式演变        5.C/S架构总结及说明 C/S架构         C/S和B/S架构我想大家应该都还是比较了解其本质和区别的.         wiki百科的定义:         C/S(Client/S

当架构师遇到互联网+:SACC2015带你飞

本文讲的是当架构师遇到互联网+:SACC2015带你飞,一年一度的中国系统架构师大会震撼来袭了! SACC2015即将于10月22日-24日在北京新云南皇冠假日酒店盛大召开,届时大会将云集来自五湖四海的2500名IT同胞们. 自2009年到现在,我们伴随着中国系统架构师大会走过了七个春秋,从最早500人规模逐年升级到现在2500人规模.回忆过往这些年,我们目睹了整个IT架构的变迁史,也见证了中国IT圈内一波又一波的架构师成长之路. 当天真遇到现实,会发生哪些趣闻轶事?当架构师遇到互联网+,又会擦

一线架构师实践指南:证券行业应如何构建一体化监控体系?

一体化监控各个厂家.不同类别的监控就像一座座孤岛占满了我们的监控屏.由于各种监控就像铁路警察各管一段,有些复杂的故障问题或性能问题的定位就变的很复杂,影响了问题的快速定位和故障处置.   如何构建一个一体化监控体系(或者整体监控体系),让IT运维人员掌控系统的整体运行情况和运行效能,预知未来系统运行的趋势,确保系统的安全稳定.高效运行,成为一个愈来愈紧迫的问题.   本文内容选自该领域专家曹贝及AIX专家俱乐部社区会员的精彩观点.   专家介绍   曹贝,北京邮电大学计算机硕士,多年的互联网研发