架构是什么,,在big data上有句笑话作者认为可以放在架构上,架构像是大学生初夜,每个人都谈论它,但没有人真正的知道的那是什么。在Wikipedia上构架既是计划,设计的过程和产品,也是构建建筑和其它的物理结构,以人类的发展为例,人群居分工,各种角色通过沟通成为一个整体这就形成了构架,产生构架的五个条件也是动力,由人主导的工作,每个人都有自己的强项也有自己的短板,因为每个人的时间有限所以把工作进行分解提高效率,人不满足与现状有更高的目标要求,系统复杂。
动力:
o 必须由人执行的工作
o 每个人的能力有限
o 每个人的时间有限
o 人对目标系统有更高的要求
o 目标系统的复杂性使得单个人完成这个系统,满足条件2,3
这五个是产生构架的必然条件,总结来说就是人的能力有别有限,所以需要分工,来完成更好的目标,那架构的定义可以为为系统进行边界范围划分,然后对系统按模块划分便于分角色完成任务,最后为不同模块设置沟通机制。
如何有效的去认识概念,明白概念背后的含义,以及如何利用对概念的理解,快速的进行学习。掌握了这些原则,会有利于帮助我们在架构阶段,快速的识别和定位问题。
沟通前概念得统一,那么概念是什么,一个事物的概念可以有很多,但准确的是根据问题的解决方案来规定概念的。关于什么是抽象,实际上是把不同的概念的相似部分合并形成新的概念,那么相似度的界定如何判断,概念抽象后是一个新的概念解决的问题是不一样的,那么如何才能有正确的认识呢?如果我们学习新技术不是死背概念而是从这个技术是为了解决什么问题才有的那么这个概念就容易理解和认识了,那么servlet能解决什么问题,个人认为没有servlet也能实现系统功能也能对数据库操作,servlet的出现解决了业务和界面分离,大部分业务有前端HTML或者jsp完成servlet则负责具体后台业务的实现。
如何快速的定位和识别问题,这是架构的起始。
解决问题前要弄清问题到底是什么,如果我们只是关注如何去解决问题而不关心问题究竟是什么可能会不能解决真正需要解决的问题,我们知道了问题的解决方案但不知问题是什么可能导致犯错,如何识别问题得弄清问题的主体,明白了主体是谁就会得到很多的信息,比如我们就知道了问题的边界,发现问题比解决问题更重要。
关于切分和利益,切分是因为每个人都有自己擅长的也有自己不擅长的,切分后可以去发挥自己擅长的然后通过交易换取别人擅长自己也需要的东西,这样就能保证自己的得到更好的利益,这样利益就成了动力,切分的原意是解决一个不能完成更好的目标的问题,切分不合理就会导致某个或者有些利益相关者的负担太重,所以切分需要遵循一定的原则有些需要连续时间内发生的活动是不能切分的,切分的模块负责人的责任和义务是相等的,切分是对系统的内部切分就是无论怎么切分都能很好的解决系统要解决的问题,切分就是建模的过程,分成了一个个模块,会产生更多的概念,切分的目标是系统模型,由一个个模块构成的模型。
o 架构的切分的导火索是人的负载太重。
o 架构的切分实际就是对stakeholder的利益进行切分或合并,使得每个stakeholder的权责是对等的,每个stakeholder可以为自己的利益负责。
o 架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。
o 架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
软件初期,成本很高,后来随着软件功能的丰富,能够做的越来越多,价格也越来越低,软件开始时程序员给自己解决问题,后来帮别人写程序软件行业就此诞生也出现了各种分工,软件的动力始终是模拟人与社会,把成本降低把效率提高,软件工程师承担的任务也越来越多,自然而然的需要拆分为不同的角色,从而形成了架构。