参考资料:
https://www.infoq.cn/article/an-informal-discussion-on-architecture-part01
https://www.infoq.cn/article/an-informal-discussion-on-architecture-part02
https://www.infoq.cn/article/an-informal-discussion-on-architecture-part03
https://www.infoq.cn/article/an-informal-discussion-on-architecture-part04
https://www.infoq.cn/article/an-informal-discussion-on-architecture-part05
https://www.infoq.cn/article/an-informal-discussion-on-architecture-part06
架构实际上解决的是人的问题,都是以人的认识为主体去讨论的,解决的都是人的问题,任何没有具体申明的部分都隐含这个背景。“相”实际上代表是这个作用,名是来标识这个作用,用来交流的。
做好结构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样才能为做好架构打好基础。
作为我们大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。只有真正明白是谁的问题,才能够真正完成自己的任务,真正把自己的问题解决掉,而不是反过来。架构师要有自觉,发现问题比解决问题来得更加重要。
当明白了问题的主体,我们才可能真正的认识问题是什么。因为问题的主体是问题的隐含边界,边界不确定下来,问题就是不确定的。一旦确定了主体,剩下的就是去搞明白主体有哪些问题。这个就比较直接了,常用的方式就是直接面对主体进行访谈,深入到主体的工作生活当中,体验并感受这些问题,甚至通过数据的反馈来定位问题。
为什么要切分?
切分就要有几个原则:
总结一下
软件的本质,其实就是通过把人类的日常工作生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。软件工程师的职责在这个浪潮中,不堪重负,自然而然就分拆为不同的角色,形成了一个独特的架构体系。这一切的背后,仍然是为了提升人类自己的利益,解决人类自己的问题。
分析问题:
1 虚拟化业务需要完成这些事情
2 代码如何运营,需要完成这些事情
3 如果分成不同的角色来完成这些事情,就需要一个组织架构来组织代码的编写和运营,需要做哪些事情
什么是软件架构呢?
所以当我们说软件架构的时候,我们一定要讲清楚,究竟说的是部署的架构,还是代码的架构。软件架构的落地,需要软件的组织架构和流程来保障,离开了这个,软件架构是一句空话。
另外很多人讲,架构是进化出来的。架构实际上是在量不断的增大,超过了单台服务器的容量,逐渐的分拆,同时导致超过单个人员的能力,工作人员不断的增多,工作内容不断的分拆形成的。这本身就是架构的意义所在。不管怎么分拆,所达到的目标没有任何变化,就是完成业务在计算机中的虚拟化。
原文:https://www.cnblogs.com/watm/p/10507704.html