zoukankan      html  css  js  c++  java
  • 架构漫谈读书笔记(一)

    为什么会有架构呢?我的理解就是:当人与人之间产生了一些比较大的需要解决的问题时,一个人的能力难以解决,这时候就需要分工合作,将问题分而治之,各个击破,建立不同部分相互沟通的机制,使得这些部分有机地结合为一个整体,完成整体所需要的所有活动,从而将问题解决。架构由此产生。架构是人类有被动认识世界变为主动,并以更高的效率改造世界的方法。

        想做好架构首先要识别出需要解决的问题。如果找到真正的问题,那么问题就已经解决了80%。识别问题的一个最大前提就是要搞清楚:是谁的问题。搞清楚是谁的问题,问题的边界也就跟着确定了,再去讨论问题才有意义,才能够真正滴完成自己的任务,真正地把自己的问题解决掉。

    发现问题永远比解决问题来得更加重要。当明白了问题的主体,我们才可能真正地认识到问题是什么。因为问题的主体是问题的隐含边界,边界不确定下来,问题就是不确定的。一旦确定了主体,剩下的就是去搞明白主体有哪些问题。常用的方式就是直接面对主体进行访谈,深入到主体的工作生活中去,体验斌感受这些问题,甚至通过数据的反馈来定位问题。

    总结一下,要正确地认识问题,就是问两个问题:

    1. 这是谁的问题?
    2. 有什么问题?

    问题1会花比较多的时间,一旦有了答案,问题2就会变得非常容易。架构师的能力大部分会体现在问题1的识别上。

        当把问题识别清楚后,就要对架构切分,一个团队分工合作共同完成一个问题。分工背后的动力就是每个人自己的利益。每个人都希望自己的利益最大化,然而一个人的能力和精力都是有限的,必然要割舍掉一些自己不擅长的东西,用自己擅长的换取别人擅长的。相比一个人干所有的事情,分工的结果就是大家都能得到更多,也就产生了一个互相依赖的社会,这就是自然而然产生的架构切分。

        架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低。分层要越少越好。尽可能变成一棵平衡树,才能让整个系统的效率最大化。

        弄清楚了一般意义上的架构,作为软件工程专业的学生,我们还要弄清软件架构到底是怎么回事。

        软件的主要目的,是把人类的生活虚拟化,提供更低成本,高效率的新生活,主要依赖的还是人类的生活知识。

        什么算是软件架构呢?1.软件因为流量增大二拆分成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构。2.每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构。

        如果在工作中,只是致力于完成自己的工作,那么最多只能成为一个工匠,无法成为一个架构师。因为这个过程解决的还是自己的问题,并没有时间的压力。要成为架构师,必须要超越对时间的恐惧,这个恐惧在潜意识里面会想方设法推动我们采用各种手段,以便及时的完成工作。架构师要解决的是别人的问题,不是自己完成工作的问题。如果我们把完成别人工作当成自己的最大利益,这个对时间的恐惧自然就会消失,就知道怎么去发现问题了,才能在自己所服务的领域建立起自信,成为一个合格的架构师。

        关于技术、业务和架构的关系:

        任何技术都是为了解决某种问题而存在的,学会了技术,并不代表自己能够解决问题。学会的技术的多少,所带来的差别只是自己解决问题的手段多了罢了。、

        技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益。技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。

        作为架构师应该承担起解决业务问题和让技术人员致力于为业务在计算机中跑起来的角色。只有把这两者很好的结合起来,才能更好地完成业务目标,才能让软件更好地服务于大家。

  • 相关阅读:
    [PY3]——heap模块 和 堆排序
    [PY3]——求TopN/BtmN 和 排序问题的解决
    [转载+补充][PY3]——环境配置(2)——windows下安装pycharm并连接Linux的python环境
    [转载+补充]windows下SVN客户端的安装
    [Visual studio code 常见问题解决] ——中文乱码、
    Smrty模版总结(转)
    cms内容模型标签
    phpcms图文总结(转)
    phpcms总结(转)
    PHP总结
  • 原文地址:https://www.cnblogs.com/wendi/p/14941432.html
Copyright © 2011-2022 走看看