什么是架构师和如何成为一个架构师

  架构的定义

  先来看看软件架构的普遍定义吧。

  一个程序和计算系统软件体系结构是指系统的一个或多个结构。结构中包括软件的构建,构建的外部可见属性以及它们之间的相互关系。

  体系结构并非可运行软件。确切的说,它是一种表达,使软件工程师能够:

  1.分析设计在满足规定需求方面的有效性。

  2.在设计变更相对容易的阶段,考虑体系结构可能的选择方案。

  3.降低与软件构造相关联的风险。

  软件架构的生命周期

  软件开发有其生命周期,它应该是:

  而软件架构也有着其生命周期,它又是怎么样的呢?

  软件架构的重要性

  为什么说一个软件架构是很重要的呢?直接编程直接开发,多EASY?请看下面几点:

  软件架构能够满足系统的品质

  架构设计使受益人达成一致的目标

  架构设计能够支持计划编制过程

  架构设计对系统开发的指导性

  架构设计能够有效地管理复杂性

  架构设计为复用奠定了基础

  架构设计能够降低维护费用

  架构设计能够支持冲突分析

  什么是好的软件架构

  这个问题,可能大家一直都在问,包括一些IT企业也在问,对于这个问题的回答,可能不仅仅是一个简单的语句或者是定义就可以回答的出的,我们来看下面的几个形象的例子:

  这个是什么东东呢?乐高玩具,乐高玩具大家肯定都玩过吧?

  它即可以以一个完整的模型卖给你,你也可以把它全部打碎了重新从一个模型自由的再去组装成另一个模型,因为每一个乐高的模块在横向、坚向里都有标准的接口,这就是我们常说的高内聚、低耦合。

  什么又是糟糕的架构

  大家看看上面这幅图是什么?

  一个是清代的八股文,一个是孔乙己。

  还记得回字的四种写法吗?

  那么你专门就研究回字的四种写法 ,但你有没有想过我把回字折开来又可以变成几个字?是否好折?

  要知道最时髦的并不一定是最好的

  为什么M1A2和阿帕奇直升机里不用A8处理器,或者是最新的奔腾处理器啊?实用、经过检验的才是最好的!

  成功的软件又是怎么样的呢

  我们谈的是软件架构,架构的最终体现是一个软件,那么什么是成功的架构什么是成功的软件呢?

  大家看左边的这个图,是美国的“阿利伯克级”宙斯盾驱逐舰,右边的是印度模仿美国的宙斯盾自己设计和建造的”德里级”的“咖喱盾”驱逐舰。

  两艘战舰一对比,怎么样?

  一个是模块化的设计,整体线条流畅,战损时模块可以任意替换。

  一个却是拼拼凑凑,线路外露,甲板上布满了各种电子设备和天线,一旦战损,极难维护

  架构之美

  架构,架构,到底什么是架构?我以前上大学时有一个70多岁的老教授,他上课每讲20分钟左右,需要2个同学”架“着去上一次WC,我们的架构师当然不是指这种”架构湿“。那么我们一直说的架构,到底它是一个什么样的东西呢? 怎么样又可以做出一个完美的架构呢?

  架构就像是迷踪拳

  动作轻灵敏捷,灵活多变

  它其实违背一切传统拳法,因此可以克敌制胜。

  架构就像是独孤九剑

  破剑式、破枪式、无招胜有招,它发源于传统武术,又扩展了传统的武术

  架构就像是一件艺术珍品

  有时一个看似简单的架构往往却是一件艺术珍品。

  大家知道这幅画吗?他是挪威画家蒙克的一幅作品叫”呐喊“,蒙克这个人是一个疯子,这幅画很简单,就是随手涂鸦一般,但是大家可知道这幅画值多少钱吗?2012年该画在纽约苏富比拍卖上以1.19亿美元被拍卖。

  架构的意境

  一个好的架构不应该受限于框架,受限于语言,受限于技术,受限于各种条条框框,它是一种意境。

  架构时需要考虑的几个基本因素

  JAVA通用领域的相关技术

  当然,我们这边主要说的是JAVA,那么作为一名学习JAVA、J2EE的架构师来说,要具备一些什么样的技能才能达到架构师的水平呢?

  上面这张图,我们这样来看,它分为3个部分:

  顶部,是我们需要掌握的一些技术领域的知识,它可以使我们应对通用领域如电商、企业OA、银行保险金融等领域的一些解决方案和设计

  中部,为了达到顶部这些技术我们需要了解的一些中间件、数据库、开发框架这些知识,它是一根支柱

  底部,底部呢?它是我们的基础,为铺设我们通向中间或者更上层的一个基石,这也是为什么大家有时发觉我的博客和其它博客有不一样的地方,不仅仅有编程还有”中间“的这一层即数据库、性能、安全、框架搭建这些东西混合在里面的原因,因为我不希望大家通过阅读完了我的博客还只是停留在一个码农、码工、螺丝钉的这种水平上。

  架构师的职能

  说了这么多架构,我们来说说架构师吧。

  大家看到了没有,架构师的第一职责就是关注:non-functional requirements,即非功能性需求。

  很多人对功能性需求和非功能性需求的界线划分还是不清楚,我这边举2个例子说明一下吧:

  功能性需求

  页面查询,这个查询是关联哪些哪些数据库表,因为我的业务是有这样这样的需求,在界面A里点了一个按钮,然后弹出窗口B,在窗口B里要显示什么样的数据,最后界面A里点完后,当我打开界面B时哪块数据已经随之发生了更改。

  非功能性需求

  我们的系统查询速度小于2S,是否考虑使用异步查询、使用队队列机制,系统要求可以容纳1000个并发,这个系统要可以做成插件式的,要可以横向扩展,要符合XXX协议,这个Webservice要做成SOAP HEAD内带有BASIC认证,还是做成符合NTLM的认证的,还是使用令牌环认证的?这个下拉框要做成即可输入又可以下拉的,这块认证要访问LDAP?

  很多以业务为主的项目型公司认为架构师就是trouble shooting(即排错、查错的意思,就是有错误、出问题了再找架构师),把架构师当成了fireman(救火员),可是你不自己想想为什么出了问题架构师过来2秒、2分钟或者1天半可以解决你们1个月几十人天天到零晨也解决不了的问题呢?嗯?

  解决了说这是人家应该的,解决不了,说人家架构师不合格呢?是不是我们应该从这个软件最早的框架上、架构上去发现一下问题呢?

  架构师啊,这不是一个trouble shooting的问题啊。

  在节前我也进行了一些面试,出于纯技术角度来说,即走架构师,TECH LEADER这样的路线的侯选人。

  我还是发觉了不少的问题这也是中国的一个通病:即我们的程序员,很多时候不是在做程序,而更多时候是在做业务逻辑,成了一个某一领域的业务人员了。

  当然,我们的程序员在其职业生涯的前3年、4年都是做某一块领域的代码的,这个是没有问题的,但是请一定一定记住,我们是编码,是IT,是程序员,不是“业务人员”!!!

  什么是IT?什么是程序员?什么是Tech Leader?什么是架构师?

  这个问题大家有必要好好的去问一下自己,去好好的想一下,架构师的要求是什么?

http://www.kmjdad.com/
http://www.jnsjzyy.com/
http://www.czhkwl.com/
http://www.express-o2o.com/
http://www.gzjindao.com/
http://www.chumingchuanmeiyishu.com/
http://www.thcxb.com/
http://www.xingguangkeji.com/
http://www.gdrhsy.com/
http://www.clhuiji.com/
http://www.nxjianye.com/
http://www.tjmingsheng.com/
http://www.gangguan022.com/
http://www.zyjbp.com/
http://www.qianhangmy.com/
http://www.tzminbell.com/

  我这边随便说一些东西:相信对一些要走技术道路的同学们是有帮助的:

  TCP/IP协议,加密解密,计算机原理(增补反码),JPG码,MPEG2-3协议,逻辑电子电路,计算机编译器原理(堆、栈、队列),这些东西你平时工作时一直用到吗?这些是你一直关注的底层吗?

  如果你是要走技术路线,一定一定请记得“数据库+ASP/JSP”不是技术,它只比表单制作,报表制作人员稍微强了那么一点点。

  请一定记住,技术路线关注的是非功能性需求,非功能性需求啊,就是一种一通百通的东西,有了这块底蕴,任何需求和你说清了,对你来说是没有任何“难度”的,或者你再去学,是可以举一反三的啊。

  最近一直面试一些侯选人,做架构师的,在此过程中我对此深有感受,找一个程序员开发不难,招一个架构师,难。。。唉,我觉得大家有必要要考虑一下,如果我走技术路线,我缺什么,我怎么补,还要关注些什么?

  科技是第一生产力,管理方法论中的所谓的六SIGMA即六西格玛的第一条就是“技术人材是当下企业的第一生产力”,大家看看能够发财的是哪些公司?阿里,淘宝,支付宝,GOOGLE, 腾迅,互联网,高科技等等等一些企业,他们靠的不是业务逻辑,而是真正的技术,这足以说明问题了,所以大家如果要走技术道路,请多关注一下更细节,更底层的东西吧。

  1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。

  2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。

  3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加群。

  4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加群。

  5.群号:高级架构君羊 678779467 备注好信息!不喜勿加!

  6.阿里Java高级架构师免费直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

  这也是为什么我在之前的博文中所擅述的那些东西的原因,可见企业IT项目开发之七宗罪。

  第一宗罪:重业务不重技术

  第二宗罪:编程开发人员沦为业务开发人员、沦为码农

  第三宗罪:IT市场沦为自由市场、小菜场一样的叫买

  第四重罪:技术无用论的诞生

  第五宗罪:闭门造车,与实际脱节,完全抛弃业务

  第六宗罪:消极怠工

  第七宗罪:不思进取

  架构师的分类

  一般会把架构师分为:

  业务架构师即BA

  系统架构师SA

  其实从严格意义上业说架构师是可以分成三类的:

  一般就是把系统架构师和应用架构师合成一类。这个从本质上来讲倒没有什么太大的区别,不伤大雅。

  架构师会做什么

  一个架构师在一个团队中或者说在一个企业中它具体要做哪些日常工作呢?

  架构师并不是万能的

  架构师很牛B,可是架构师也是人,他不是超人。

  架构师需要掌握的软技巧

  技术,是架构师的Hard Skill,那么架构师的Soft Skill有哪些呢?

  架构师不是皇冠上的明珠

  大家一定一定要记住,架构师决不是像大家想像中的那样,是所谓的皇冠上的明珠,架构师承担的责任是相当的大的。

  如何成为架构师

  人类是如何进化的?

  学习、使用工具、社会协作性、不断的总结经验。

  架构师也会退化到比一般的程序员都不如

  如果停止了学习的步伐,那么。。。。。。

  什么是架构师和如何成为一个架构师

  谈架构师的自我修养

  学习之道

  需要掌握的基本功中的基本功

  大家注意,上面这个列表在学习时是有先后顺序的,从上至下分别为第一步,第二步,第三步。。。。。。不要觉得枯燥,你可以去试试,真的,被折腾着和被快乐着。

  Bad artist copy good artist steal

  放正你的心态

  不断的需要自我激励

  成功的唯一方法便是,承认现实,超越现实,鼓起勇气并善用它。

  学会平静的对待生活中的不完美之处,适应自己的情绪,了解如何让它们自然宣泄出去

  学习如何把不完美的地方转换成我们的优势,激发我们的创造力

  自我激励,不管外部条件是否有激励性,找到一种激发最佳状态的情绪,学习如何在我们的意识中制造一些波动来激励我们前进

  如果你想学习 Java 工程化、高性能及分布式、高性能、深入浅出。性能调优、Spring,MyBatis,Netty 源码分析和大数据等知识点可以来找我。

  而现在我就有一个平台可以提供给你们学习,让你在实践中积累经验掌握原理。主要方向是 JAVA 架构师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进 BAT 但是有担心面试不过的,可以加我的 Java 架构进阶群:582100479

  1、具有 1-5 工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。

  2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

  3、如果没有工作经验,但基础非常扎实,对 java 工作机制,常用设计思想,常用 java 开发框架掌握熟练的,可以加。

  4、觉得自己很牛 B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

  5.阿里 Java 高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

  6.小号加群一律不给过,谢谢。

时间: 2024-11-08 03:21:56

什么是架构师和如何成为一个架构师的相关文章

Java架构师之路:从Java码农到年薪八十万的架构师,最牛Java架构师进阶路线

从Java码农到年薪八十万的架构师,资深架构师大牛给予Java技术提升学习路线建议,如何成为一名资深Java架构师? 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择.架构师在一家公司有多重要.优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析 程序员如何才能晋升为优秀的高薪架构师? 希望通过本文让程序员们了解架构师的市场行情,了解架构师的发展前景,并帮助你更清晰地做出职业规划. 架构师在一家公司有多重要 架构师在公司中担当着「IT架构灵魂人物

一个架构师谈什么是架构以及怎么成为一个架构师

新年新事,来点轻松的话题.我们调剂一下后再继续讲CAS SSO单点登录吧因为后面的内容全部和代码有关,大家会觉得枯燥.所以今天我们先来点"番外篇",讲讲什么是架构师,什么是架构这个永恒的话题吧.此篇源出自我在公司内部写的一个PPT,它是用于在公司内部向广大技术人员做普及用的一个资料,而CSDN这边的编辑不支持图文混排的效果,因此一些章节我就直接截取自我的PPT里的内容了,这样可能对大家在阅读上会显得更加生动和活泼一些吧. 架构的定义 先来看看软件架构的普遍定义吧. 一个程序和计算系统软

系统架构师秘籍(三)架构视角和关注点

上次的博文中,我们介绍了一下软件架构的基本概念,接下来我们介绍一下如何来架构一个软件系统. 当我们开始进行系统架构设计的时候,通常会考虑以下几点: 所设计的软件体系结构的主要功能要素是什么. 如何将这些要素与其他系统关联. 哪些信息需要存储.管理和展示. 要实现这些功能要素需要什么硬件和软件. 所设计的软件体系结构提供什么样的特性和能力. 开发.测试.支持.培训环境都需要做什么. 考虑上述问题的时候,我们从哪些层面来考虑呢?那就是架构视角和关注点两个层面. 架构视角 架构视角是从一个或多个角度对

系统架构师-基础到企业应用架构-业务逻辑层

一.上章回顾 上章我们主要讲述了系统设计规范与原则中的具体原则与规范及如何实现满足规范的设计,我们也讲述了通过分离功能点的方式来实现,而在软件开发过程中的具 体实现方式简单的分为面向过程与面向对象的开发方式,而目前更多的是面向对象的开发设计方式.并且我们也讲述了该如何通过设计手段去分析功能点及设计分离 点,应该如何在设计的过程中分析的角度及如何去满足设计规范与原则.首先我们通过下图来回顾下上章要点: 二.摘要 本文将已架构的方式去分析分层结构中的业务层的设计,如何写出来内聚度,高耦合的业务逻辑层

系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]1

一.上章回顾 在上篇中我们讲解了几类UML2.0语言新推出的建模图形,总体来说通过这些图形能更详细的将某类信息表达出来.在这里我们简单回顾上篇讲解的内容. 上图中已经简单介绍了上章讲述的内容,具体内容请看:系统架构师-基础到企业应用架构-系统建模[下篇]. 二.摘要 本章将主要的简单介绍在系统架构中的设计模式及相应规范准则.并结合相应的代码来说明如何遵循系统架构中的一些基本的设计规范及准则.而我们将在本文介 绍几类常用的设计规范,我们先来看看结构化设计的二个基本原则: 当然既然提出了基本的准则,

系统架构师-基础到企业应用架构-服务层

一.上章回顾 上篇我们主要讲解了系统架构中的四种架构模式,并且分析了四种架构模式的实现及应用场景,那么先来回顾下架构中的业务逻辑层的使用及总结.  如果大家对图中讲述的内容不明白或者说是不深入那么可以参考上篇讲 解的内容:系统架构师-基础到企业应用架构-业务逻辑层. 二.摘要 本文将已架构的方式去分析分层结构中的服务层的设计,如何设计出来满足我们说的业务需求及设计规范的服务层将是我们的目标,可能我想大家在项目架构的 过程中可能有些同仁,没有用到该层,或者说是采用的是常用的分层结构的设计,而没有把

系统架构师-基础到企业应用架构-企业应用架构

一.上篇回顾 我们先来回顾下上篇讲解的内容,我们前面的几节分别讲述了,业务逻辑层.数据访问层.服务层.表现层,我们了解了这些分层的职责和分层之间的大概的关联 关系,本篇可能主要是简单的介绍下企业应用的几类模式,结合这几个分层直接的交互来完成系统功能的构建.我们还是先对我们学习的四个分层的职责和功能做个大 概的回顾,我们先来看看下图来回顾下我们讲述的内容. 我想通过上图,大家能回忆起我们讲述的相关内容,然后整理好自己的思路,我们本文将会针对这几个分层进行相应的模式的讲解,并且会结合实例来说明企业应

系统架构师-基础到企业应用架构-系统建模[中篇](下)

一.上章回顾 首先.我们先来回顾下,上篇讲解的内容,加深下印象.上篇我们主要讲解了3个建模图形分别是:顺序图(序列图).组件图.状态图. 具体功能描述如下图:这里不详细解释,如果不清楚请看:系统架构师-基础到企业应用架构-系统建模[中篇](上) 由于全部放在一篇中篇幅太长了,所以分开讲解. 二.摘要 本文主要讲解:UML建模图中的活动图.部署图等 上图中就是本章要讲解的内容,本质将仔细的剖析,部署图与组件图的关系与区别,活动图与状态图的关系与区别. 三.本章内容 1.上章回顾. 2.摘要. 3.

系统架构师-基础到企业应用架构-系统建模[中篇](上)

一.上章回顾 上篇文章主要简单的介绍了建模中使用的标准建模语言UML的相关内容,包括用例图与类图的使用方法及如何建模.相信大家对UML建模语言已经有了初步的认 识,还请大家谨记UML不同的建模图形的用处.比如,用例图主要用来描述系统的功能需求.类图主要用来描述实体间的关系.谨记这些就可以帮助我们在系统架构的 过程中深入的分析. 首先向大家道歉,上篇中有部分描述错误的地方,可能对大家造成一定的错误引导.  这是上篇给出的图,我描述的是组合关系. 特别更正为:  这是正确的结果.箭头指向聚合类.描述