概述
架构设计,简单说就是“切分”和“组合”的艺术,主要目的是解决软件系统建设过程中的主要矛盾。这个和我们人类社会划分组织机构的目的是一样的。我们可以比较粗浅地认为架构就是:模块(子系统)+交互机制,以及一些约束规则和指导原则,那么为甚要做架构设计呢?我们只有理解这个目的才能做的更好,我个人认为可以归类为以下几个理由:
第一:做事情正确的方法,应该是从粗到细、层层递进,紧紧抓住主要矛盾,防止出现方向性错误,搞的满盘皆输,浪费时间和资源;实际上很多微观的问题都是宏观问题的一个投影。架构设计的过程,是层层分解的过程,实际上这是人类做事的重要方法论,一个大问题往往需要综合各个方面的能力才可以解决,但是很少有一个人具备这么多能力,经过分解后,把大问题变成小问题,就很容易找到合适的人来解决,这个在很大程度上提高了效率,这个方法论渗透在各个行业。比如钱学森是导弹的总设计师,他负责的是最顶层的设计,而他的手下又有这个导弹各个部分的设计师,有的人关注空气动力,有的人关注爆炸的破坏力等问题。我们的软件架构师也分为:首席架构师和各个子系统或者模块的架构师;我们的需求人员在做需求时,先提取“客户的愿景”,然后再由愿景提取和分解出顶层概念,然后再逐层分解成更小的概念。例如,公共资源交易的愿景是“公开、公平、公正”,然后在这个基础上分解为建设工程、政府采购、产权、土矿这样的子系统概念,然后每个子系统再拆分为项目、公告、答疑、公示等等。再比如,我们实现一个软件,过程是:顶层设计->子系统设计->模块设计->类文件设计->方法设计等等,把一个庞大的系统最后分解为一个个JDK的API。
第二:分解问题,聚焦问题,降低问题的复杂性,因为人脑的处理能力是有限的,我们之所以有的时候需要借助模型,模型本身就是一个对实际目标的抽象,就是为了忽略一些无关紧要的影响,以此来照顾我们“不够聪明的大脑”;隔离问题,便于管理;这些问题来自于功能性需求、质量需求(吞吐量、响应速度、高可用、可扩展、易用性等等),以及其他非功能性需求,比如工期要求、比如硬件环境要求,再比如开发过程中在大量人员介入后,不要出现瓶颈问题。我们关注的问题,就是我们要重点关注和需要采取手段的地方。比如我们使用消息的时候,我们预估后期会出现高并发的消息机制,我们就可以抽提出消息接口,将消息接口和消息实现接口分离,以后我们换了消息后,对使用消息的模块造成的影响最小;
第三:居高临下,宏观上统筹规划;排任务优先级,防止出现瓶颈,做到风险前移。理清系统边界、挖掘潜在需求。比如,我们通过建模能够发现关键模块和路径,可以提前在较粗的颗粒度上完成验证,即使出现方案失败,也发生在大量资源投入之前,最大程度减少浪费;
第四:提取通过用功能、降低开发工作量。重复是软件的大忌。
最后
以上就是怕孤单冬天为你收集整理的架构设计的目的和意义的全部内容,希望文章能够帮你解决架构设计的目的和意义所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复