首先,我们得知道什么是架构
跟据要解决的问题,对目标系统的边界进行界定,然后根据需要对目标进行切分,并建立沟通的机制使其在仍为一个整体的基础上,并发运行,增加工作效率。
其次也要知道架构的存在意义
1, 每个人的能力有限
2, 每个人的时间有限
3, 人对目标系统有更高的要求
4, 人们对更高质量,更高效率的追求产生了架构
架构是为什么而存在的也就是架构是解决谁的问题
架构解决的是需要人类合作完成的工作,且对工作效率,工作质量有更高要求的人们的问题
然后我们就要知道什么是软件体系结构
软件体系结构的定义:是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件、和连接构件。
处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。
软件体系结构的意义:
软件体系结构代表了系统的公共的高层次的抽象。这样系统的大部分有关人员能把它作为一个相互理解的基础,形成统一认识,互相交流。
体系结构提供了一种共同的语言(UML语言)来表达各种关注和协商,进而对大型复杂系统能进行理智的管理。
软件体系结构的作用:
明确了对系统实现的约束条件
影响了开发组织的组织结构
制约着系统的质量属性
可能预测软件的质量
使推理和控制更改更简单
有助于循序渐进的原型设计
可以作为培训的基础
搞清楚技术与架构,以及与业务之间的关系
技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益。所以:
- 技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。
- 有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求–也就是业务。有人会问,不用钻木取火了,但是弓弦加速转动木棍还可以用啊? 没错,因为弓弦转动木棍这个技术,不是来生火的,是用来加速木棍转动的,所解决的问题不一样。但是两种不同的技术,合理结合起来,会更好更有效率的解决业务问题。
所以技术与技术之间,有两种关系:
3. 在解决同一个业务问题的前提下,更高效,更低成本的技术,会淘汰低效,高成本的技术。这是人类利益诉求所决定的。
4. 一般刚开始解决根本问题的技术(钻木取火)的效率是比较低的,只是把不可能变成了可能(从这一点上来说,技术才是业务的
enabler)。然后就会有提高效率的需求出现,要求改进这个技术。这个技术的低效率部分就会被其他人(或者技术发明人自己)加以改进,这部分就会形成新的技术。
当关系 2 发生的时候,这个地方必定会形成一个切分,新技术会通过某种方式和原有的技术连接在一起形成一个整体,让这个新的技术可以和原有技术共同工作,使得原有的技术可以用更高的效率解决问题。因为要解决的主要问题(生火)并没有发生改变,分拆所形成的是一个树状的结构。
按照前面的架构定义,这个时候其实已经产生了架构。也就是说,一般是先有技术,才会有架构。这些其他技术(弓弦拉动木棍),是从直接解决问题的初始主要技术中分拆出来形成的,并通过树状结构和主要技术(钻木取火)组合在一起。在解决主要问题(生火)之后,再开始逐渐的分拆为更为细粒度的技术(弓弦转木棍)。
而这个细粒度的技术(弓弦转动木棍)往往不会和业务的主要目标(生火)发生直接的关系。不同的技术,通过树状结构,组合在一起,形成了一个完整的架构解决方案,共同完成业务的目标。这就是技术,业务和架构之间的关系。很多人把这个过程称为架构的进化,我更愿意把这个过程称为技术的进步所导致的新的架构分拆,因为这个过程内在的动力,更多的是来自技术对解决业务问题的解决。
总的来说
架构师应该承担起解决业务问题的这个角色来,专注于 Business Domain 和软件本身的架构,让技术人员致力于为业务在计算机中跑起来而努力。只有把这两者很好的结合起来,才能更好地完成业务的目标,才会让软件更好地服务于大家。最终一定会得到一个很好的软件架构,令软件开发团队和业务部门都能够很好地开展工作并降低成本。