Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一个架构师谈什么是架构以及怎么成为一个架构师

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

作者头像
Java高级架构
发布于 2018-04-19 06:15:06
发布于 2018-04-19 06:15:06
6880
举报
文章被收录于专栏:JAVA高级架构JAVA高级架构

架构的定义

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

  • 一个程序和计算系统软件体系结构是指系统的一个或多个结构。结构中包括软件的构建,构建的外部可见属性以及它们之间的相互关系。
  • 体系结构并非可运行软件。确切的说,它是一种表达,使软件工程师能够:
  1. 分析设计在满足规定需求方面的有效性。
  2. 在设计变更相对容易的阶段,考虑体系结构可能的选择方案。
  3. 降低与软件构造相关联的风险。

软件架构的生命周期

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

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

软件架构的重要性

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

  • 软件架构能够满足系统的品质
  • 架构设计使受益人达成一致的目标
  • 架构设计能够支持计划编制过程
  • 架构设计对系统开发的指导性
  • 架构设计能够有效地管理复杂性
  • 架构设计为复用奠定了基础
  • 架构设计能够降低维护费用
  • 架构设计能够支持冲突分析

什么是好的软件架构

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

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

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

什么又是糟糕的架构

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

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

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

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

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

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

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

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

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

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

  • 一个是模块化的设计,整体线条流畅,战损时模块可以任意替换。
  • 一个却是拼拼凑凑,线路外露,甲板上布满了各种电子设备和天线,一旦战损,极难维护

架构之美

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

架构就像是迷踪拳

动作轻灵敏捷,灵活多变

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

架构就像是独孤九剑

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

架构就像是一件艺术珍品

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

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

架构的意境

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

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

JAVA通用领域的相关技术

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

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

  1. 顶部,是我们需要掌握的一些技术领域的知识,它可以使我们应对通用领域如电商、企业OA、银行保险金融等领域的一些解决方案和设计
  2. 中部,为了达到顶部这些技术我们需要了解的一些中间件数据库、开发框架这些知识,它是一根支柱
  3. 底部,底部呢?它是我们的基础,为铺设我们通向中间或者更上层的一个基石,这也是为什么大家有时发觉我的博客和其它博客有不一样的地方,不仅仅有编程还有”中间“的这一层即数据库、性能、安全、框架搭建这些东西混合在里面的原因,因为我不希望大家通过阅读完了我的博客还只是停留在一个码农、码工、螺丝钉的这种水平上。

架构师的职能

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

大家看到了没有,架构师的第一职责就是关注: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?什么是架构师?

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

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

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

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

请一定记住,技术路线关注的是非功能性需求,非功能性需求啊,就是一种一通百通的东西,有了这块底蕴,任何需求和你说清了,对你来说是没有任何“难度”的,或者你再去学,是可以举一反三的啊。 最近一直面试一些侯选人,做架构师的,在此过程中我对此深有感受,找一个程序员开发不难,招一个架构师,难。。。唉,我觉得大家有必要要考虑一下,如果我走技术路线,我缺什么,我怎么补,还要关注些什么?

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

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

  • 第一宗罪:重业务不重技术
  • 第二宗罪:编程开发人员沦为业务开发人员、沦为码农
  • 第三宗罪:IT市场沦为自由市场、小菜场一样的叫买
  • 第四重罪:技术无用论的诞生
  • 第五宗罪:闭门造车,与实际脱节,完全抛弃业务
  • 第六宗罪:消极怠工
  • 第七宗罪:不思进取

架构师的分类

一般会把架构师分为:

  • 业务架构师即BA
  • 系统架构师SA

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

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

架构师会做什么

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

架构师并不是万能的

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

架构师需要掌握的软技巧

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

架构师不是皇冠上的明珠

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

如何成为架构师

人类是如何进化的?

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

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

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

谈架构师的自我修养

学习之道

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

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

Bad artist copy good artist steal

放正你的心态

不断的需要自我激励

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

  • 学会平静的对待生活中的不完美之处,适应自己的情绪,了解如何让它们自然宣泄出去
  • 学习如何把不完美的地方转换成我们的优势,激发我们的创造力
  • 自我激励,不管外部条件是否有激励性,找到一种激发最佳状态的情绪,学习如何在我们的意识中制造一些波动来激励我们前进
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高级架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一个架构师谈什么是架构,以及怎么成为架构师
作者:袁鸣凯 来源:https://blog.csdn.net/lifetragedy/article/details/43925857 今天,来点轻松的话题。来点”番外篇“,讲讲什么是架构师,什么是架构这个永恒的话题吧。此篇源出自我在公司内部写的一个PPT,它是用于在公司内部向广大技术人员做普及用的一个资料,而CSDN这边的编辑不支持图文混排的效果,因此一些章节我就直接截取自我的PPT里的内容了,这样可能对大家在阅读上会显得更加生动和活泼一些吧。 架构的定义 先来看看软件架构的普遍定义吧。 一个程序
java思维导图
2018/04/08
1.3K0
一个架构师谈什么是架构,以及怎么成为架构师
阿里架构师谈谈架构和如何成为一个Java架构师
程序和计算系统软件体系结构是指系统的一个或多个结构。 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系。
美的让人心动
2018/05/14
9464
阿里十年架构师分享如何成为一个Java架构师(文末附学习路线)架构的定义软件架构的重要性什么是好的软件架构什么是坏架构要知道最时尚并不一定是最好的成功的软件又是怎么样的呢JAVA通用领域的相关技术架构
架构的定义 我们来看看软件架构的一般定义: 程序和计算系统软件体系结构是指系统的一个或多个结构。 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系。 该体系结构不是可操作的软件。 具体来说,这是一个表达式,它使软件工程师能够: 分析满足监管要求的设计有效性。在设计更改相对容易的阶段,请考虑架构的可能选项。降低与软件构建相关的风险。 软件架构的重要性 我为什么说软件架构非常重要? 直接编程直接开发,请多看看以下几点?: 软件架构可以满足系统的质量体系结构设计允许受益者达成一致的目标架构设计可以支
美的让人心动
2018/06/14
8070
架构与架构师
“架构”这个词给人的直观感受就充满了权力与神秘感,因此谈论架构总让人有一种正在进行责任重大的决策或者深度技术分析的感觉。毕竟,进阶到软件架构这一层次是我们走技术路线的人的终极目标
码农戏码
2021/03/23
5860
架构师之路一-架构师入门指引
导读:本系列文章教你怎么样成为一名架构师,而本篇文章则带你先认识一下什么是架构师,架构师的工作是什么?
JAVA日知录
2020/03/12
3.3K0
架构师的自我修养
软件架构,指从宏观角度说明一套软件系统的组成和特性。 架构设计与需求分析,概要设计,详细设计最大的区别在于“宏观”二字。要去架构师必须具有大局观,从全局角度思考问题。
科技新语
2022/10/12
4150
架构师是怎样炼成的
软件架构师定义 软件工程师的职业发展方向: 软件架构师: 制定高级设计决策,并确定技术标准,包括编程标准,工具和平台的软件专家 软件架构: 系统的基本组织构成,这种组织主要体现在其组件,组
攻城狮Chova
2022/01/22
6730
架构师是怎样炼成的
漫画:什么是架构师?
于是,小灰去向大黄请教 这是有关未来的故事: 从前,有一个赶路的人路过一片工地,看到三个年轻人在工地上搬砖。 于是,他问其中一个人: 于是,他又问了第二个人: 于是,他又问了第三个人: 十年之后~ 曾经说自己在建造城市的年轻人,成为了市长。 曾经说自己在搬砖的年轻人,成为了砖厂老板。 曾经说自己在搭建教堂的年轻人,最没出息,成为了架构师。 什么是架构师? 架构师英文architect,这个词源于建筑学。软件工程当中的架构师和建筑工程当
企鹅号小编
2018/01/26
1.1K0
普通Java工程师 VS 优秀架构师
只懂技术还远远不够,懂技术/懂业务/懂管理的综合型人才,才是技术团队中的绝对核心。 不仅仅是架构师,所有的技术高端岗位,对人才的综合能力都有较高的标准。
JavaEdge
2023/03/18
3130
普通Java工程师 VS 优秀架构师
.NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
Software architecture = {Elements, Forms, Rationale/Constraints}
郑子铭
2021/01/13
3610
.NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
.NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
Software architecture = {Elements, Forms, Rationale/Constraints}
郑子铭
2020/10/11
7500
.NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
架构师快问快答2
导语 | 上月应腾讯云+社区邀请,参加云+社区沙龙online,与李力老师和孙玄老师坐而论道,直播《如何成为一名优秀的架构师》,讨论探讨架构师成长话题。直播时在线收到很多提问,因时间所限,直播中和两位老师回答了其中几个。五一劳动节期间,对这些问题进行了回顾,快问快答,个人意见,仅供参考。
IT民工闲话
2020/05/22
6390
架构师快问快答2
《IT架构师成长和认证指南》简介及第3章 IT架构思维(一)
作者写了一本关于IT架构师成长和认证的书,希望先通过连载的形式拿出来分享,结合读者的反馈来不断调整完善。本书希望对于那些想成长为架构师,并在架构师职业发展道路上不断进阶的读者们有所借鉴和指导,也欢迎业内专家不吝赐教和斧正。
企业架构师思维
2025/05/30
530
《IT架构师成长和认证指南》简介及第3章 IT架构思维(一)
技术同盟专家谈1:AI时代的架构师要不要写代码?
现在,各种 AI 代码助手都在快速演进,架构师要不要写代码这个问题不但没有获得最终的答案,反而变得更加复杂化。
腾讯云架构师技术同盟
2025/01/26
1750
《IT架构师成长和认证指南》简介及第3章 IT架构思维(七)
作者写了一本关于IT架构师成长和认证的书,希望先通过连载的形式拿出来分享,结合读者的反馈来不断调整完善。本书希望对于那些想成长为架构师,并在架构师职业发展道路上不断进阶的读者们有所借鉴和指导,也欢迎业内专家不吝赐教和斧正。
企业架构师思维
2025/05/30
1.1K0
《IT架构师成长和认证指南》简介及第3章 IT架构思维(七)
架构与架构师3
在《架构与架构师2》[1]中引用了1995年David Garlan和Dewayne Perry给出的定义:
码农戏码
2021/11/12
4310
架构与架构师3
另一个角度的架构师
ADMEMS矩阵,明确介绍了架构师需要思考的问题,而在这个矩阵中,做完一个架构师最需要了解的什么呢?技术?业务?都不是,最需要了解的是你的领导,其次是你的团队成员。
Kiba518
2018/08/23
2880
再谈<全栈架构师> 一文
在SDCC2016的架构师进阶之路主题,我分享了《老曹眼中的全栈架构师》话题,会后在csdn博客(http://blog.csdn.net/wireless_com)发布了同名文字,在我的公众号(wireless_com)发了《全栈的技术栈设想》。然后,有幸得到了中生代技术(freshmanTechnology)和多人的转载,中生代技术还专门开通了全栈架构师深度讨论群,引起了很多的争论和争议。
半吊子全栈工匠
2018/08/22
4320
再谈<全栈架构师> 一文
如何成为一名优秀的软件架构师
软件架构师负责将高层次的业务需求和技术要求转化为可执行的系统架构,并与团队合作将其变为现实。
一凡sir
2023/08/03
5310
架构与架构师2
最近闲了,看了几次李运华关于架构的视频,不禁再次反问架构是什么?架构师的职责是什么?
码农戏码
2021/03/23
4380
推荐阅读
相关推荐
一个架构师谈什么是架构,以及怎么成为架构师
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档