对软件构造的认识

架构,一个明确又模糊的概念。或许我们在百度百科上可以查到“架构”的概念,但是有谁能清楚地说出架构到底是什么?下面是我读完架构漫谈的一些对于架构的理解。

必须由人执行的工作,并且每个人的能力,时间都是有限的,加上人对目标系统的要求更高,导致了框架的产生。那什么是架构呢?以社会为例,把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。

要想做好架构,必须要做好两件事,1.学会识别问题,2.架构切分。

首先识别问题之前需要先问自己两个问题:①这是谁的问题?②有什么问题?

当有人回答的不确定时,说明我们发现是谁的问题了,发现问题的负责人之后,具体的问题根据他的实际活动中查找就可以了;在架构的切分方面,由于人们的负荷太重(时间上和空间上的负荷)导致了架构的切分,在架构切分时需要注意,保证权利和义务是对等的。每个负责人对自己的部分负责。而且架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。

         软件的出现就是在模拟社会,随着软件数量的增加,客户对于软件的要求越来越高,导致对软件有意识的切分,演变成了不同的架构。软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来的,我们需要解决来两个问题:软件的适用主体是谁,以及如何使用等业务问题;如何把现实生活用软件来模拟和模拟出来的软件,需要哪些硬件设施才能够满足要求等的计算机问题。

      当提到软件架构的时候,一定要分清楚是部署的架构,还是代码的架构。软件架构的落地,需要软件的组织架构和流程来保障,离开了这个,软件架构是一句空。软件架构中包括什么呢?软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构;每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构。软件架构的意义就是在软件不断地扩大的过程中,超出人的负荷,把软件进行切分,之后扩大的。

当然我们也需要把架构和业务以及技术的关系。就以古代人取火为例,业务目标是为了取火,钻木取火这个技术的出现解决了这个问题。钻木取火的效率不高,影响了业务(取火)的效率,就有了进一步改进的动机,改进转动木棍的方式,产生了弓弦转动木棍的技术。所以当我们通过技术完成业务目标时,我们会提高技术的效率来提高我们的利益,因而可能导致一个人不足够完成,从而引起任务的切分,使新的技术通过和原有的技术连接成一个整体,原有的方法或技术可以用更高的效率解决问题。

 

 

 

posted @ 2016-04-28 17:14  乱——清——无  阅读(404)  评论(2编辑  收藏  举报