zoukankan      html  css  js  c++  java
  • 架构漫谈读后感

      架构师王概凯发表的这九篇博客由浅入深的讲述了架构及与架构相关的问题。首先什么是架构?对于这个概念我以前也是模糊的,虽然老师总是用建筑师来类比架构师,但我依然模模糊糊。架构是为什么出现的?为了用有限的能力得到更多的资源,所以人们出现了分工,人们各自做自己所擅长的事情来交换别的东西,这便是社会的架构。把一个整体切分成不同的部分,由不同的角色来完成分工,然后再通过相互沟通,把这些部分结合成一个整体,这就是架构。按照我的理解就是为了让限的能力更高效的完成事情,而把事情分割开来,交付给不同的人做,最后拼装起来的过程就是架构。而后作者进一步说明了架构:1.根据要解决的问题,对目标系统的边界进行界定。 2. 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切 分出来的部分,并行或串行开展工作,一般并行才能减少时间。 3. 并对这些切分出来的部分,设立沟通机制。 4. 根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成 目标系统的所有工作。

      作者接下来对概念这个问题进行了进一步阐述,也就是作者说的名相。作者通过对名相的解释,相就是作用,因此了为什么需要这个作用。我们要这个作用其实是为了解决问题。每个概念实际上所解决的,还是人遇到的某个特定的问题,我们把解决问题的 解决方案,给定了一个名字,这个名字就是对应的某个特定的概念。对于概念这个词本身, 为了统一指代这些名字,我们称起这类作用的名字称为“概念”。然后作者对抽象进行了阐述,抽象这个词代表的含义,实际上是把不同的概念的相似的部分合并在一起,形成一个新 的概念。这个里面问题很多:首先“相似的部分”在不同的人看来,并不一定那么相似;其次, 抽象之后形成的是一个新的概念,和原来那个概念并不一样,所解决的问题也不一样。所以 我们不能用抽象来定义一个事物,抽象实际上是一个分类的过程,完全是另一码事。

      第三篇作者讲述如何做好架构识别。按照之前架构的定义,做好架构首先需要做的就是识别出需要解决的问题。那么面对问题有哪些困难呢?当我们处理问题时,如果被告知了解决方案,往往不假思索就开始行动,这可能会因为误解方案而导致一些严重的后果。所以我们面对问题时要先把问题搞清楚,然后再去处理问题。那么如何识别问题呢?识别问题的一个最大的前提就是要搞清楚:是谁的问题。这个搞清楚了,问题的边界也就 跟着确定了,再去讨论问题才有意义。架构师应该问的第一个正确的 问题就是:目标问题是谁的问题。作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题,“别人”是谁, 是值得好好思考的。明白了问题的主体,这个主体就自然会带来很多边界约束,这个时候才算是真正的明白了问题。当明白了问题的主体,我们才可能真正的认识问题是什么。总结起来就是要正确的认识问题,需要问两个问题: 1. 这是谁的问题? 2. 有什么问题?

    第四篇作者阐述了如何做好架构的切分。所有的切分调整,都是对相关人的利益的调整。当人们认识到要主动的去切分一个系统的时候,毫无疑问,我们不能忘掉利益这个原 动力。所有的切分决策都不能够违背这一点,这是大方向。作者给出了几个切分的原则:1. 必须在连续时间内发生的一个活动,不能切分。2. 切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。3. 切分出来的部分,不应该超出一个自然人的负载。4. 切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。实际上切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个 小问题就形成了不同的概念。架构切分的输出实际上就是一个系统的模型,而切分的结果最终都会体现在组织架构上,因为我们切分的实际上 就是人的利益。最后总结起来:1. 架构的切分的导火索是人的负载太重。 2. 架构的切分实际就是对 stakeholder 的利益进行切分或合并,使得每个 stakeholder 的权责是对等的,每个 stakeholder 可以为自己的利益负责。 3. 架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推 进。 4. 架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越 多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的 效率最大化。

      第五篇作者谈到什么是软件。软件就是用来控制硬件的行为的。随着科技发展软件的开发成本越来越低,给人们的帮助越来越大,软件也就越来越火。随着软件的发展,人们在让软件变得越来越像人。软件的工程量也越来越大,软件工程师开始进行架构。

      那么软件架构到底要解决什么问题呢?1、业务问题、2、计算机问题。怎样才能把用户的问题解决,怎样才能让软件好用,要用怎样的硬件行。说到底什么是软件架构:1. 软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架 构,属于软件架构。 2. 每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工 作,所分成的代码架构,也属于软件架构。

      什么是架构师呢,首先架构师是解决别人的问题,架构师要发现“是谁的问题”,架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能够更好的发挥架构 师的作用,更好的把利益的调整落到实处。架构师的义务就是发现问题并 且解决问题。

    那么从架构的角度如何写好代码,作者的意思就是分割,将一个大的模块分割为多个相互独立又互相关联的模块。每个模块都执行自己的职能,如果增加新的功能那么就要增加新的模块。

      最后技术、业务和架构的关系。业务促进技术的发展,技术又促进业务的诉求,架构师在技术和业务至上,要对技术和业务进行调整的关键。

  • 相关阅读:
    [BZOJ4631]踩气球
    [BZOJ1998][Hnoi2010]Fsk物品调度
    [BZOJ3624][Apio2008]免费道路
    [BZOJ1064][Noi2008]假面舞会
    [BZOJ4154][Ipsc2015]Generating Synergy
    [BZOJ1941][Sdoi2010]Hide and Seek
    [BZOJ2850]巧克力王国
    [BZOJ2683][BZOJ4066]简单题
    万年历(calendar)
    SACD ISO镜像中提取DSDIFF(DFF)、DSF文件
  • 原文地址:https://www.cnblogs.com/zuhaoran/p/6488664.html
Copyright © 2011-2022 走看看