软件架构师如何工作-架构漫谈阅读笔记

卡卡罗特 卡卡罗特     2022-10-23     494

关键词:

  在王概凯先生的9篇关于软件架构师的博客-《架构漫谈》中,我们可以看到文中谈到了架构的定义、含义,架构主要是要认识概念,如何做好架构之架构的切分,然后谈到了软件与架构之间的关系(什么是软件,软件架构是要解决什么问题,从架构的角度看如何写好代码,理清技术、业务和架构之间的关系了),下面依次写出我对9篇博客的理解与感悟,以及对软件架构师工作的理解。

  一:什么是架构

    在学习软件体系结构这门课之前,我们貌似只对软件开发以及简单的mis系统的开发有一丝丝的开发经验和感触,无架构之言。我们目前还无法像软件架构师那样去思考问题。在第一篇博客中,王先生给出了架构的基本定义-Architecture (Latin architectura, from the Greek ?ρχιτ?κτων arkhitekton”architect”, from ?ρχι- “chief” and τ?κτων “builder”) is both the process and the product of planning, designing, and constructing buildings and other physical structures。(从这个定义上看,架构好像是一个过程,也不是很清晰。为了讲清楚这个问题,我们先来看看为什么会产生架构)。

      在每个人都必须自己完成所有生活必须品的生产的时候,是没有架构的(当然在个人来讲,同一时刻只能做有限的事情,在时间上还是可能会产生架构的)。一旦产生的分工,就把所有的事情,切分成由不同角色的人来完成,最后再通过交易,使得每个个体都拥有生活必须品,而不需要每个个体做所有的事情,只需要每个个体做好自己擅长的事情,并具备一定的交易能力即可。

  当然,最后王概凯给出了架构的概念,即:根据要解决的问题,对目标系统的边界进行界定。所以,一个合格的软件架构师,需要以一种类似与结构设计是来看待问题、分析问题,提出问题的解决方案。

  二:认识架构是理解架构的基础

    在“概念”这个含义中,很多人都有认识的误区,下面,我就介绍一下文中作者给我们举出的例子:大部分人对于每天都习以为常的概念,都自以为明白了,但实际上都是下意识的,并不是主动的认识。比如说“什么是桌子?”,做培训的时候,我经常拿这个例子来问大家,回答千奇百怪。这实际上就导致了做架构的时候,不同角色的沟通会出很多问题,那么结果也就可想而知了。

    如前一篇所说,架构实际上解决的是人的问题,而概念是人认识这个世界的基础,自然概念的认识就非常的重要。这篇文章尝试讨论一下,如何去认识概念。当然这篇不是语言学的文章,我这里所讨论的,和语言学可能不太一样,如果大家对语言学感兴趣,也可以去参考一下。

    文中,王先生提出了中国古代传统文化关于“概念”的研究与探索。原文不在这里赘述,大致意思是这样的:在中国的古代,“概念”一词的含义用另外一个词来表示,即“名相”。相-即能看到的东西,当听到完整的名词,脑子里想到的实物(包括他的形状、用处等)叫做-名,加一起就是名相。但是,如果这个物体性状发生改变,我们对它的感觉也会发生改变。比如说,一个杯子,打碎了,便是一堆碎瓦片。如果磨成粉,那就是一堆没用的齑粉。那究竟什么才是相?实际上“相“表达的不是一个具体的东西,如上面所提的一个瓷器杯子,并不是指这个瓷器,而是这个瓷器所起的一个作用:一手可握,敞口(一般不超过底的大小,太大口就叫碗了),并且内部有一个空间可乘东西的这么一个作用。并不是指这个瓷器本身。这也是为什么我们从电视上看到一个人拿杯子的时候,我们知道这个是杯子。但是实际上我们看到的都是光影而已。所以说相实际上代表的是这个作用,并不是具体的某个东西,而名是用来标识这个作用的,用来交流的。

    回过头来,根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。事实上,这一能力,在任何一个领域都是适用的,比如我们如果想要学习一项新的技术,如Hibernate、Spring、PhotoShop、WWW、Internet等等,如果知道这些概念所要解决的问题,学习这些新的技术或者概念就会如虎添翼,快速的入手;学习一个新的领域,也会非常的快速有效;使用这些概念来解释问题,甚至发明新的概念都是很容易的事。

  三:如何做好架构之识别问题

    按照之前架构的定义,做好架构首先需要做的就是识别出需要解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决了80%了。这个能力基本上就决定了架构师的水平。可是,当我们面对问题是,有哪些困难呢?原文中的一则笑话,可以说明形象的表达困难在哪。女主人公:老公,把袋子里的土豆切一半下锅。结果老公是把袋子里的每个土豆都削了一半,然后下锅。被告知要处理一个问题,但是交过来的实际上是一个解决方案,不是问题本身。被告知要处理一个问题,直接通过直觉就有了一个解决方案,马上考虑解决方案如何落地,或者有几种解决方案,选哪个合适。作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。在这个故事里面,男主人要解决的,实际上是这个家庭晚餐需要吃土豆的问题,目标问题的主体实际上是这个家庭的成员。这里,我们得到了一个结论,即软件架构师应该考虑问题的本质,用户真正需要的,而不是按照自己的解决方法,敷衍的解决问题,这里好像是数学中的大题。如果有一道很复杂的函数问题,给人直观的感觉是可以用各种式子推到出来。可这是出题人的原想法吗?细心点我们可以发现,原来这道问题可以用一个定理推导得出。所以,解决问题,我们要学会找出提这个问题的人的真正需求,而不能简单的按照自己的解决思路生搬硬套。

    

    

 

软件架构师如何工作

原文链接(转载请注明出处):软件架构师如何工作前言要想了解软件架构师如何工作,首先要搞清楚这么几个问题:什么是架构,怎样理解架构,如何做好架构,什么是软件,什么是软件架构师,软件架构师的工作是什么,怎... 查看详情

《架构漫谈》阅读笔记

  软件架构师如何工作?  不同于软件工程中只需要编码的“低级”码农,一名合格的软件架构师首先要对架构有深刻的理解。那么什么是架构?从建筑的角度解释,架构是计划、设计和建造建筑物、物理结构的过程和生产... 查看详情

《架构漫谈》阅读笔记

...阅读,我从中逐步认识到了什么是架构,怎样做好架构,软件架构如何落地等内容。  一、什么是架构  在软件行业,对于什么是架构一直有很多的争论。事实上,架构在软件发明时的N多年以前,就已经存在了,这个词最... 查看详情

架构漫谈阅读笔记

...专栏——架构漫谈,让我对什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题有了更深刻的认识。  软件架构实际上包括了:代码架构,以及承载代码运行的硬件部署架构。实际上,硬件 查看详情

架构漫谈阅读笔记

...专栏——架构漫谈,让我对什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题有了更深刻的认识。    正如文章开篇所说的 查看详情

《漫谈架构》读后感——软件架构师如何工作

...问题的实践活动。架构实际上解决的是人的问题。什么是软件架构?软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构。每个运行单元为了让不同角色的人,比如前端,业务,数据存... 查看详情

架构漫谈博客读后感之软件架构师如何工作

...理上的结构的产物,这段定义虽然是以建筑为主体的,但软件行业的架构也与之相符:根据要解决的问题,对目标系统的边界进行界定(即上下范围图);并对目标系统按照某个原则进行切分(切分的原则,要便于不同的角色,... 查看详情

[架构漫谈]软件架构师如何工作

...进行切分、合并并解决这个问题的实践活动。  而对于软件架构来说认识什么是架构,有以下几点:    1.根据要解决的问题,对目标系统的边界进行界定;    2.并对目标系统按某个原则进行切分;    3.根据2... 查看详情

软件架构师如何工作(即架构漫谈读后感)

软件架构师如何工作(即架构漫谈读后感)读完王概凯老师的架构漫谈,感觉自己对软件架构方面的知识了解了一点点。以前都只是听说软件架构师特别的厉害,高薪,但是具体说软件架构师是什么,具体是做什么的,自己并没... 查看详情

软件架构师如何工作

 由百度百科上可以看到软件架构师的定义:所谓架构师,通俗的说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织... 查看详情

《架构漫谈》读后感之“关于软件架构师如何工作”

  通过社会的架构举例,从原始自给自足独立完成衣食住行,到发展中分工合作、相互沟通、将事物完成到一个更好的水平。从而我知道了架构的动力:必须由人执行的工作每个人的能力有限每个人的时间有限人对目标系统有... 查看详情

《架构漫谈》读后感

  软件架构师,乍一听给人很高大上的感觉,技术型工程师,站在金字塔顶端的角色,看完九篇博客之前,在网上搜了搜软件架构师的词条。  什么是软件架构师  软件架构师是软件行业中一种新兴职业,是软件项目的总... 查看详情

软件架构师如何工作

...概凯的架构漫谈和查阅一些其他资料,我大致了解了一下软件架构师的一些相关知识。  什么是架构呢?在架构漫谈中这样说道:把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分... 查看详情

阅读架构漫谈九篇博客有感-1500字

...撰写的系列专栏,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。架构漫谈分为九篇:什么是架构?认识概念是理解架构的基础如何做好架构之识别问题如何做好架构之架构切分什么是软件软件... 查看详情

《架构漫谈》之阅读笔记

  什么是架构?在维基百科上是这样定义的:架构是一种过程,并且是计划、设计、构建和其他物理结构的产品。在《架构漫谈》一中认为,架构就是根据要解决的问题,对目标系统的边界进行界定。并对目标系统按某个原则... 查看详情

软件架构师如何工作

软件架构师如何工作对于初学软件架构的我来说软件架构师的工作这个概念是非常模糊的,在我的理解上软件架构师所从事软件开发方面的工作应该与建筑方面的建筑设计师很类似,他们应该承担着类似的责任,在整个项目真正... 查看详情

软件架构师是如何工作的

最近阅读了王概凯的架构漫谈,下面是我对一名软件架构师的权利与义务的理解所谓软件架构师,是软件行业中一种新兴行业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项... 查看详情

软件架构师如何工作

...者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。在架构漫谈中举了早期社会每个人独立的生活方... 查看详情