• 架构漫谈-阅读笔记


    架构漫谈-阅读笔记

           什么是架构:

           通过阅读架构漫谈这几篇文章,我对架构这个名词有了初步的认识。架构,顾名思义,就是结构,正如文中所介绍的那样原始社会有了分工,并且通过交易使每个个体获得生活的必需品,这样就构成了社会的架构。那么架构的准确定义就是:把一个整体切分成不同的部分,由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。

           那么为什么会产生架构呢?

    1. 必须是有人在执行的工作才会产生架构,如果不需要人来介入,就意味着不需要改造,也就不需要架构了。
    2. 因为每个人的能力是有限的,人不能方方面面做的很好,这就需要每个人发挥自己的长处,来获得更大的利益。
    3. 因为每个人的时间是有限的,做同一件事情,为了尽快完成,必然会把工作分解出来,给擅长于这些方面的人来做,从而缩短时间。
    4. 人对目标系统有更高的要求
    5. 目标系统的复杂性使得单人很难完成这个系统,满足2.3

      当上边这五个条件同时成立的时候,一定会产生架构。架构就是人类在发展过程中以更高的效率去改造这个世界的方法。

      总之,架构就是:

    1. 根据要解决的问题,对目标系统的边界进行界定。
    2. 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切 分出来的部分,并行或串行开展工作,一般并行才能减少时间。
    3. 并对这些切分出来的部分,设立沟通机制。
    4. 根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成 目标系统的所有工作。

      同样这个思考,考虑到我们的专业就是软件架构,为了开发软件(得到软件),将软件的开发分成不同的任务,让各自的擅长的这方面的人进行开发,并且这些人通过沟通机制,共同开发出一个完整的软件。这就是我看完第一篇文章后得出的软件架构的定义。

      认识概念是理解架构的基础

      正如上一篇所说,架构实际上解决的是人的问题,而概念是人认识这个世界的基础,自然概念的认识就非常的重要。

      根据架构的定义,要做好架构所必须具备的能力,就是能够正确认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。

      通过这篇文章,我明白了之前对概念的误区,如何有效的去认识概念,明白概念背后的含义,以及如何利用对概念的理解,快速的进行学习。掌握了这些原则,会有利于帮助我们在架构阶段,快速的识别和定位问题。

      如何做好架构之识别问题

      根据之前架构的定义,要做好架构首先就是要能够识别需要永嘉够解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决80%了。这个能力基本上就决定了架构师的水平。

           当我们去解决一个问题的时候,一定要把问题搞清楚,明白了问题,我们才能看清努力的方向,而识别问题的最大的前提就是要搞清楚:是谁的问题。搞清楚个,问题的边界也就确定了,这时候再去讨论问题才有意义。

           在讨论的过程中,搞清楚目标问题“是谁的问题,是什么问题”,为了帮助自己尽可能搞清楚,首先要做的就是问正确的问题。架构师应该问的第一个正确问题就是:目标问题是什么问题,这个问题背后的目的是什么。作为软件工程师或是架构师,大部分解决的是“别人”的问题,“别人”是谁,是值得好好思考的。正如故事总的男人要解决的,实际上是家庭晚餐需要吃土豆的问题,目标问题的主题实际上是这个家庭的成员。明白了问题的主体,这个主题就自然会带来很多边界约束,比如,土豆是要吃的,要给人吃的。“切土豆下锅”这个问题因识别了问题的主体,自然而然就附带了这么多问题。女主人给的解决方案可能是有问题的。这时候才算是真正明白了问题,真正的问题解决了,才能真正完成自己的任务。

           找出问题的主体,是做架构的首要问题。我们要解决的问题,一定是人的问题。在进一步,我们一定要明白,任何招商架构师的问题,绝对都不是真正的问题,因为如果是真正的问题,提问题过来的人肯定都能够自己解决了,不需要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更加重要。

           所以,在架构之前一定要找到真正的问题,找到问题的主体。找到这些,任务就完成了80%。

           

  • 相关阅读:
    iframe应用 相互之间发送消息 postMessage
    function angular.bootstrap()
    总结
    1-angular.bind
    jQuery treeTable v 1.4.2
    声明了一个模块和一个控制器AngularJS的处理过程
    angularJs $templateCache
    $.fn.zTree 的使用
    Java异常throws与throw的区别
    Pom报错
  • 原文地址:https://www.cnblogs.com/Zhanghaonihao/p/8530332.html
Copyright © 2020-2023  润新知