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