第一次接触软件架构这门课程,首先阅读了架构漫谈这一系列博客的前三篇,初步了解了什么是架构、认识概念是理解架构的基础以及如何作好架构之识别问题。架构
要谈软件架构,首先要了解什么是架构,这对我来讲是一个新概念。所谓架构,起先源于建筑学,后来广而用之,在社会各个方面行业中多多少少都用到这个词汇。而在咱们软件行业中,这个概念也存在很多解释,对于我而言,比较好理解的是:首先,对目标系统的边界进行界定;其次,并对目标系统按某个原则的进行切分。切分的原则,要便于不一样的角色,对切分出来的部分,并行或串行开展工做,通常并行才能减小时间;最后, 根据上2,使得这些部分之间可以进行有机的联系,合并组装成为一个总体,完成目标系统的全部工做。博客
简单来讲,架构就是肯定边界、切分系统、有机合并系统三个步骤。若是没法肯定系统的边界,咱们就不知道这个系统有多大,有什么内容从而没法进行准确的切分,而若是没法进行切分天然也就无从去谈合并。或许你会说,切了又合,不是画蛇添足么。天然不是,这是架构必然的结果。基础
由于架构之因此产生,是由于如下5种条件:一、必须由人执行的工做; 二、每一个人的能力有限(每一个人都有本身的强项,我的的产出受限于最短板,而且因为人的结构限制,同时只能专一于作好一件事情); 三、每一个人的时间有限; 四、人对目标系统有更高的要求; 五、目标系统的复杂性使得单我的没法完成这个系统,知足条件2,3。软件
这5个条件也就决定了当一个系统没法仅仅由某一个个体完成时,它就面临着要被多人分工合做来解决的命运。所以要对系统进行切分,由不一样角色来完成这些分工,此为切分;但光完成这些肢解的工做是没法知足系统总体的须要的,所以就有了有机合并这一步骤。并行
综上所述,能够获得对架构的定义:人们根据本身对世界的认识,为解决某个问题,主动地、有目的地去识别问题,并进行分解、合并,解决这个问题的实践活动。时间
如今咱们初步了解了架构的定义,接下来要面临的问题则是:作架构的时候,不少时候都是在一个新的领域解决问题,必需要快速进入并掌握这个领域,而后才可以正确的解决问题。而咱们又要怎样才能快速进入并掌握某个领域呢,这就牵涉到对“概念”的掌握和理解。行业
根据架构的定义,要作好架构所首先必须具有的能力,就是可以正确的认识概念。架构师
因此对一个软件架构师来讲,掌握对事物“概念”的理解能力是一项举足轻重不可或缺的技能。由于,只有正确的认识概念,才可以发现概念背后所表明的问题,进而认识目标领域所须要解决的问题,这样才可以为作好架构打好基础。工作
从上面“发现概念背后所表明的问题,进而才可以认识目标领域所须要解决的问题”一句中咱们能够看到,架构过程当中牢牢围绕“问题”一词。阅读
如何快速的定位和识别问题,这是架构的起始。
按照个人理解,架构过程当中的“肯定目标系统的边界”便是要识别问题定位问题,由于掌握了问题,咱们才知道面对的是什么,从而规划边界。可是人人都有问题,那么咱们就要精确到这是谁的问题,便是要找出问题的主体,才能使得问题更具备肯定性针对性,边界才能规划得更为严格。
对于软件构造师来讲,找上门来的问题,都是别人的问题。而且,这个“问题”其实并不是真正的问题,由于若是问问题的人问的是真正的问题,那它确定能有办法本身解决。正由于它提出的“问题”并不是真的问题,因此它没办法对症下药,所以找上门来。而咱们要作的,就是识别出“问题”背后隐藏的真正须要解决的问题,这就已经解决了80%的问题。
总而言之,要作好架构师工做,首先要认识架构,其次要掌握对新事物概念的理解能力,最后就是要准确的识别问题。