《架构漫谈阅读笔记》

  今天,我阅读了王老师推荐的架构漫谈一至九,读毕有了以下的心得:

  1.学好软件体系结构即软件架构这门课,我们首先应懂得何为架构。架构漫谈一中举了几个例子,有人类社会的演变历史,我们从灵长类进化为人类到演化出社会,其中架构的功劳不可小觑。又例如建筑物,邸老师在上课时也讲解过,我们建造一栋楼,楼体的构造是一种架构,我们在这栋楼里设计房间的布局,这也是一种架构。因此,推及到软件中。我们对一个项目分割为各部分,并设计它们,比如它们的功能,它们之间的联系,不同的部分不同的角色有不同的分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这些就是软件架构。

  2.认知概念是了解架构的基础。架构解决人的问题,概念是人认知世界的基础。概念在古代称为名相,即“名”与“相”,”相”是指代的我们人眼所能看到的东西,名即为它的名字,合起来称为名相。每个概念实际上所解决的,还是人遇到的某个特定的问题。而第三篇中也讲解了,既然架构主要解决人的问题,那么我们首要任务,就是明辨问题的拥有者,即是谁的问题。要锤子的经典例子,用户像产品经理要一把锤子,我们是否细想过,是谁真正的需求锤子?是施工队,用户,还是设计师?面对的问题拥有者不同,我们对问题就应该有相应的不同的解决方案。问题的主体对问题的边界确定十分重要。作为架构师,最重要的就是找出是谁的问题以及问题是什么。确定了答案,我们就有正确的方向了。

  3.确定正确方向后,我们的大部分问题都有了解答,但还有一些遗留的小部分,我们需要做相应的调整,这就引申出了架构的切分。所有的切分都依赖于利益,系统的利益相关人(stakeholder)就是这时候我们要解决的问题的主题。架构的切分实际就是对stakeholder的利益进行切分或合并,使得每个stakeholder的权责是对等的,每个stakeholder可以为自己的利益负责。而其形成的结果就要使整个系统的效率最大化。

  4.计算机产生的初衷即为模拟人脑,这也是我们为什么称之为电脑的原因。由最初的简单的函数计算到后来不断进化的Java/C++高级语言,软件应运而生,种类繁杂,项目众多,规模扩大。一个程序员再也做不好一个完备的软件。因此产生了分工,这也是一种架构。但我们讨论的是,当要设计的系统庞大,无法由一个人单独来完成,系统的设计就交给了软件架构师。这个背后的动力也是一样的,与人类社会的演变一样,就是提升参与的人的利益,降低成本。架构师是要解决别人的问题,并不是自己的问题。架构师是要去平衡别人的利益,甚至会调整别人的利益的。一旦为别人的利益全心全意的服务,自然就拥有强大的影响力。一个优秀领导者也一定是一个合格的架构师。

  5.以钻木取火为例,取火是目标,钻木来取火是技术,技术的改进更新,新技术与旧技术共同工作,更高效率的解决问题,形成一个合理的结构,这就是架构。技术人员与业务人员常起冲突,因为业务人员关心业务目标,技术人员关心技术实现,只有将两者良好的结合,才能更好地完成业务的目标,才会让软件更好地服务于大家。最终得到一个优秀的软件架构,令技术部门和业务部门都能够很好地高效低成本开展工作。

  以上就是我阅读架构漫谈九篇文章的心得。

原文地址:https://www.cnblogs.com/lottie021/p/5444010.html