zoukankan      html  css  js  c++  java
  • 《架构漫谈》阅读笔记

    1.架构的定义

    (1)根据要解决的问题,对目标系统的边界进行界定。

    (2)并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。

    (3)并对这些切分出来的部分,设立沟通机制。

    (4)根据(3),使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成系统目标的所有工作。

    2.使用架构的原因:

    (1)必须由人执行的工作

    (2)每个人的能力有限

    (3)每个人的时间有限

    (4)人对目标系统由更高的要求

    (5)目标系统的复杂性使得单个人完成这个系统,满足条件(2)(3)

    架构的出现使人们的工作分工更加均匀,工作完成效率更高,并且减少了工作完成的时间,节约了企业的成本,使得工作更够有序的展开。

    3.对于概念的深度理解

    架构本质上使为人服务的,概念有时使对于物品的外表,特征,用途,作用等一些方面行进的描述。这些都是我们可以看到的现象。但是我们对于使用更深层的理解是在我们的使用过程中获得了哪些好处,解决了什么烦恼,然后自己更加轻松愉悦或烦恼愁人等一些感性认识。使我们印象深刻的也是这些感性认识到的。

    4.正确认识我们需要解决的问题

       作者描写了一个妻子让丈夫削土豆的实例,表明了不同的人之间对于一个问题的认识程度是否相同有多么重要。在团队合作中,大多数情况下也是有一个人去发布号令,分配任务,而其他人是服从分配。被分配任务的人只知道做好自己的任务,却不考虑大局。等到任务都已完成,发现每个人的任务却都整合不起来。

      所以我们需要认识问题的本质。认识问题的本质最重要的是认识问题的主体。这个问题是对于谁而言。解决的这个问题的目标是什么。问题大多数是为了解决人的烦恼,然后将自己于问题的主体中的人进行换位思考,这样就能更加深刻的理解问题,看到问题的本质。

      要正确的认识问题,需要问两个问题:

    (1)这是谁的问题?

    (2)有什么问题?

    5.架构的切分

    (1)架构的切分的导火索是人的负载太重。

    (2)架构的切分实际就是对利益相关者的利益进行节分或合并,使得每个利益相关者的权责是对等的,每个利益相关者可以为自己的利益负责。

    (3)架构切分的最终结果都会体现在组织架构上,只有这样才能让架构落地并推进。

    (4)架构切分的结果一定是一个梳妆,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能编程一颗平衡术,才能让整个系统的效率最大化。

    6.架构师

       成为架构师的前提是能够克服时间的恐惧和压力,不再只专心完成自己的工作,二十将目标定为解决他人的问题。作为架构师必须正确认识到是谁的问题。认识问题之后,架构师还应该有自己的权力和义务。架构师应该有管理别人,调动组织架构的权力。架构师的义务就是发现问题,给出问题的解决方案。作为一个架构师,懂得技术是架构师的基本能力,而在懂技术的基础上去找到解决问题的方案。

    7.从架构的角度写好代码

      软件架构包括了代码架构。软件实际上是对现实生活的模拟,虚拟化。所以我们的代码应该分为几部分。结合每个部署单元所承担的责任,可以明确的拆分为两个不同的责任:

    (1)表达业务逻辑的代码。

    (2)对用户提供访问并保存业务逻辑运送结果的代码。

    Service代码是最复杂的。把service拆分为三个部分,让每一个部分都能够独立的变化,这样这三方的变化就不会产生连锁反应,降低成本。这样就划分了几个责任:

    (1).Service 就专注于 user 的需求,并组合 Glue Code 提供的服务完成需求。

    (2).Glue Code 专注于组合 business 的调用,管理 Business 里面对象的生命周期,并且通过 Repository 保存或加载 Business 的状态

    (3).Business 专注于实现业务的核心模型。

    (4).Repository 专注于数据的保存,并和存储设备一一对应。

    逻辑业务的含义:在软件代码中,不需缩进和计算的顺序调用,包括缩进的代码目的是 catch exception 的,都不算逻辑,除此以外都是逻辑

    9.技术与架构以及业务之间的关系

    技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益。所以:

    (1)技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。

    (2)有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求 -- 也就是业务。有人会问,不用钻木取火了,但是弓弦加速转动木棍还可以用啊? 没错,因为弓弦转动木棍这个技术,不是来生火的,是用来加速木棍转动的,所解决的问题不一样。但是两种不同的技术,合理结合起来,会更好更有效率的解决业务问题。

    所以技术与技术之间,有两种关系:

    (3)在解决同一个业务问题的前提下,更高效,更低成本的技术,会淘汰低效,高成本的技术。这是人类利益诉求所决定的。

    (4)一般刚开始解决根本问题的技术(钻木取火)的效率是比较低的,只是把不可能变成了可能(从这一点上来说,技术才是业务的 enabler)。然后就会有提高效率的需求出现,要求改进这个技术。这个技术的低效率部分就会被其他人(或者技术发明人自己)加以改进,这部分就会形成新的技术。

     

     

     

     

     

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Map
    Enumeration输出
    iterator的基本用法
    Annotation整合工厂设计模式
    自定义Annotation
    Annotation
    动态代理设计模式
    静态代理设计模式
    自定义ClassLoader
    获取类的类对象的几种方式
  • 原文地址:https://www.cnblogs.com/wl2017/p/10504872.html
Copyright © 2011-2022 走看看