• 什么是架构


    这学期开始学习软件架构了,在之前的学习中,了解到软件架构师是一个不用敲代码,不用整天埋头电脑前,最主要的是,挣钱多的职业。但是,真的是这样吗?通过王概凯的架构漫谈,我将简单了解一下软件架构到底是不是自己幻想的那样。

    首先要了解下到底什么是架构。在每个人都必须自己完成所有生活必需品的时候,是没有架构的。,把一个整体切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。因此,我们可以得出架构产生的动力,首先是,必须由人执行的工作,然后是每个人的能力、时间有限,还有是人堆目标系统有更高的要求,目标系统的复杂性使得单个人完成这个系统.,这几个条件成立的情况下,就会产生架构。

    接下来要学会认识概念,古代的概念,称之为相,相,并不是说表达一件具体的事物,说得直白些,是用来标识某件事物的作用,就像一个杯子,完整无缺的时候,我们称之为杯子,如果摔碎了,我们就称之为碎玻璃了。

    接下来要学会识别问题,也就是识别究竟要解决什么样的问题。当我们去解决一个问题的时候,一定要先把问题搞清楚。一般来说,问题的主体是问题的隐含边界,边界不确定,就无法确定问题。要找到问题的主体,要问两个问题,一是这是谁的问题,二是有什么问题。认识到真正的问题是什么,才有可能更好的解决架构问题。

    下一个部分是架构切分。切分就是利益的调整,是对相关利益人利益的调整。架构切分的导火索就是人的负载太重。架构切分的输出实际上就是一个系统的模型,切分的结果体现在组织架构上。任何架构调整都会涉及到组织架构,千万不可轻视。架构切分的结果一定是一个树状,层数越多沟通越多,效率越低,分层要越少越好。

    在学习了什么是架构以及如何做好架构之后,要开始学习软件架构这块内容。把软件架构切分为软件和架构,接下来我们先来探讨下软件是什么。

    软件其实就是在计算机上以模拟人为目标,在计算机硬件上编写出的,用来控制硬件行为的程序。有了软件之后,实际上,我们是把我们日常生活中所做的事情,包括我们自己本人都一起虚拟化到了计算机中。而人则演化成了,通过计算机的输入输出设备,控制计算机中的自己,来完成日常的工作,以及与其他人的沟通。成本是我们使用软件的主要动力,可以减少大量的人员培训,减少雇员的数目。不管如何发展,模拟人的所有行为都是一个大的趋势。也就是说,软件的主要目的,还是把人类的生活模拟化,提供更低成本,高效率的新的生活。从这个角度来看,软件主要依赖的还是人类的生活知识。

    接下来我们要了解,软件架构解决的问题。软件就是借助计算机中的硬件,把现实生活模拟到计算机中。要做到这一点必须解决两个方面的问题,业务问题与计算机问题。其中,业务的 owner 需要提升业务的效率,降低业务的成本,这是动机。这个实际上就是业务的问题,所以一般软件开发的出发点就在这里。计算机问题是软件工程师的问题,要解决业务 owner 把业务虚拟化的问题,并且要解决软件开发和运营的生命周期的问题。

    接下来讲到的是关于架构师的内容。架构师应该是一个项目的领导者,所以要给架构师实权。架构师必须是一个组织的领导人,有权利调动这个组织的架构,才能更好地发挥架构师的作用,更好的把利益的调整落到实处。

    下面的内容讲的是从架构的角度写好代码。结合每个部署单元的多承担的责任,可以明确将代码拆分为两个不同的责任。一是表达业务逻辑,二是对用户提供访问并保存业务逻辑运行结果。

    架构漫谈的最后一个部分,讲的是技术、业务与架构的关系。技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求——也就是业务。当技术所解决的问题和分拆出来要解决的问题,完全匹配的时候,这是最完美的。当技术所提供的能力远远超过需要解决的问题时,往往掌握技术和维护技术会成为瓶颈。

  • 相关阅读:
    python基础(6)---set、collections介绍
    Vue Router滚动行为 scrollBehavior
    CSS expression属性
    定时器setTimeout实现函数节流
    axios封装
    vue项目结构
    搭建vue项目环境
    javascript参数传递中处理+号
    微信支付 chooseWXPay:fail
    微信支付get_brand_wcpay_request:fail
  • 原文地址:https://www.cnblogs.com/xiaojq/p/11109592.html
Copyright © 2020-2023  润新知