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

      通过阅读,了解了架构的相关知识,作者通过人类社会的分工问题形象的说明了什么是架构,解释了什么是“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计”。应运而生的架构师则是“一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。”

     根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能够为做好架构打好基础。使用这些概念来解释问题,甚至发明新的概念都是很容易的事。为什么强调这个呢,因为做架构的时候,很多时候都是在一个新的领域解决问题,必须要快速进入并掌握这个领域,然后才能够正确的解决问题。如果缺乏足够的认识和了解,在解决一些问题上就不能看清问题的本质,再多的努力也是杯水车薪,无济于事。因此善于认识问题的概念对解决问题至关重要。

     要做好架构之间的识别问题。要去思考真正的问题是什么,不能正确认识什么是问题,以及通过直觉出现的解决方案或者急于求成都是不可取的。要想识别问题,首先要搞清楚问题的主体是谁,要解决谁的问题,这就需要架构师对问题把握的准确性以及灵敏度了。当分析出问题的主体,便可以通过合理的方式分析主体存在的问题以便于问题的解决。并不是所有问题都有解决的方案,这时便从其他方面入手,将该问题带来的损失降低。 

     自然社会中存在分工,软件架构亦然。良好的分工即合作,达到物尽其用人尽其才、整体利益大于部分利益之和的效果。软件架构切分的四个原则:

    1.必须在连续时间内发生的一个活动,不能切分。

    2.切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。为什么必须是这样呢? 因为如果权利和义务是不对等的话,会伤害每个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了整体的利益,这违背了提升整体利益的初衷。

    3.切分出来的部分,不应该超出一个自然人的负载。当然对于每个人的能力不同,负载能力也不一样,需要不断的根据实际情况调整,这实际上就是运营。

    4.切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。如果因为切分导致整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。当然很多时候当我们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会形成螺旋式的进化。但这不属于架构所应该解决的问题。进化的发生,也会导致新的架构的切分。

    实际上切分的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。理解这些概念进而被背后所代表的人的利益,使其利益得以满足。架构切分的输出实际上就是一个系统的模型,对于一个整体问题,有多少的相关方,每个相关方需要承担哪些权利和义务,不同的相关方是如何结合起来完成系统的整体任务的。有的时候是从上往下切(企业),有的时候是从下往上合并,有的时候两者皆有之(人类社会的发展)。而切分的结果最终都会体现在组织架构上,因为我们切分的实际上就是人的利益。发现利益点开发的软件才有利可图。

      架构师要解决的是别人的问题,不是自己完成工作的问题,架构师需要有领导能力,也需要软件开发的相关知识,才能在这个岗位上游刃有余。

  • 相关阅读:
    wc
    1.11考试
    diff
    C++11新利器
    vimdiff
    [学习笔记]多项式
    rev
    [AH2017/HNOI2017]礼物
    tr
    bzoj2555: SubString
  • 原文地址:https://www.cnblogs.com/ywqtro/p/14478077.html
Copyright © 2011-2022 走看看