从架构漫谈了解到结构
1为什么要产生架构?
1.1必须由人执行的工作
1.2每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做好一件事情,比如虽然有两只眼睛,但是只能同时专注于一件事物,有两只手,无法同时做不同的事情。ps. 虽然有少部分人可以左手画圆右手画框,但是不是普遍现象)
1.3每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,见1.2,从而缩短时间)
1.4人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了)
1.5目标系统的复杂性使得单个人完成这个系统,满足条件1.2,1.3(如果个人就可以完成系统的提高,也不需要别的人参与,也就不需要架构的涉及,只是工匠,并且一般这个工作对时间的要求也不迫切。当足够熟练之后,也会有一定的架构思考,但考虑更多的是如何提高质量,提高个人的时间效率)
2架构的认识
2.1根据要解决的问题,对目标系统的边界进行界定。
2.2并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
2.3并对这些切分出来的部分,设立沟通机制。
2.4根据2.3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
3认识概念
概念大家这个词 大家应该理解 ,从博客中我了解到认识正确的概念不仅仅是简单的抽象,因为简单的抽象会让问题改变。而并没有解决问题。
4识别问题
识别问题 最主要的是 这是谁的问题 ,有什么问题 只有做好这个才能了解问题,解决实际的需要。
5架构的切分
架构的切分的原因是人的负载太重。而且架构的切分实际就是对stakeholder的利益进行切分或合并,使得每个stakeholder的权责是对等的,每个stakeholder可以为自己的利益负责。架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
6.软件架构到底要解决什么问题
软件架构是要解决问题 软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来的。要做到这一点需要解决两个问题:业务问题和计算机问题。而且
业务的owner需要提升业务的效率,降低业务的成本,这是动机。这个实际上就是业务的问题,所以一般软件开发的出发点就在这里。
是软件工程师的问题,要解决业务owner把业务虚拟化的问题,并且要解决软件开发和运营的生命周期的问题。
7架构师及技术业务与架构的关系
给架构师实际权力 而技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。技术和架构一般是先有技术,才会有架构。 架构师应该承担起解决业务问题的这个角色来。
阅读资料 http://kb.cnblogs.com/page/539160/