读架构漫谈有感
——关于软件架构师如何工作
什么是架构?人做一件事情首先要知道自己要做什么,为什么这样做。同样的,我认为软件架构师在工作之前应该搞清楚什么是架构!架构就是一个有机联系起来的框架,它把一个整体切分成不同的部分,由不同的角色来完成,每个部分有相互沟通的机制,以此来完成这个整体所需要的所有活动。架构是一种经验,它可以使人更加容易的完成目标系统,无论这个目标系统复杂不复杂,还是几个人来工作。因为架构是人长期进行活动时,积累下的经验。我特别赞同作者的一句话,架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。它是一种方法!
明白了架构的定义,就可以讨论如何工作这个问题了。
首先是基础,要想打好基础,就必须先能正确认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样我们才能够为做好架构打好基础。正确认识概念需要就是要学会抽象,抽象其实就是一个分类的过程,快速的抽象出正确的概念,这有利于快速的识别和定位问题。识别问题是架构的起始,万事开头难,同样的,如果在架构之前把真正的问题找到,那么这个问题其实就已经解决了80%。所以,我们在开发软件时,时间分配真正合理的是把大部分的时间花在“问题是什么”,不要凭借自己的直觉下判断。那么,怎么识别问题呢,我总结了一下,我们要搞清楚的其实是who和what的问题,who就是问题的主体,只有确定了问题的主体我们才能确定问题的边界,关于这点,文章有一句话令我印象深刻,发现问题永远都比解决问题来的更加重要。架构师要认清自己的定位,我们要解决的,基本都是别人的问题。任何找上架构师的问题,绝对都不是真正的问题。所以,我们要会自己去发现。What指的是问题是什么,确定了主体,从而确定了边界,进而就可以去主体那里把问题搞清楚了。我们的价值和能力也是在这里彰显!
架构就是分层,也就是切分。切分根本的意义就在于利益的调整,是调整系统的利益相关者的利益。所以在切分时,我们要明白只有权利和义务对等时我们才能维护自己的利益,只有做的更多更好,自然得到的更多更好。那么这个切分的过程就是建模,把概念抽象出来,把类似的结合起来,分成各个部分,各个职责。切分的结果是,得到是一个系统的模型,最终体现在组织架构上。只有把利益相关者的利益落实,架构才能落地,这个团体才能做到,人心齐,泰山移!
另外,我们也要总结自己常见的问题,我们遇见的都是什么样的问题。一是业务问题,体现在提高效率,降低成本,一般的软件开发的出发点就在这里。它的主体就是业务的拥有者,从事者。研究的问题也就是业务服务的对象的利益问题。最终的目的是降低成本,提高效率。我们要做到理解业务所服务的对象,不能自己想当然的从自己的角度出发,还要注意自己开发的软甲的成长性。一是计算机问题,体现在软件和硬件结合的问题,它的主体是软件工程师,要解决业务拥有者把业务虚拟化的问题,并且要解决软件开发和运营的生命周期的问题。我们要做到去主动的学习相关业务的知识,可以清晰的认识到利益相关者的核心利益诉求,搞清楚概念,权利和责任,从而可以正确的建模。理解参与者是如何和业务打交道的,完成各自权利和利益的具体步骤是怎样的,还要考虑到软件的成长性。
回到最初,无论一个目标系统复杂不复杂,还是几个人来工作。架构的作用是使人更加容易的完成目标系统。再者,只有架构的落地,我们的目的才能实现,所以我们的工作必须要保障实现软件的组织架构和流程。这样,软甲架构师的工作才算完成。