什么是系统架构?

什么是系统架构?

JAVA架构师之路2019-06-06 14:26:28

什么才是“软件架构”呢?软件架构师的工作内容究竟是什么?这项工作又是什么时候进行的呢?

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员,绝对不要听从那些说应该让软件架构师从代码中解放出来以专心解决高阶问题的伪建议。

软件架构师其实应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。也许软件架构师生产的代码量不是最多的,但是他们呢必须不停的承接编程任务。

如果不亲自承受因系统设计而带来的麻烦,就体会不到设计不佳所带来的痛苦,接着就会逐渐迷失正确的设计方向。

软件系统的架构质量是由它的构建者所决定的,软件架构这项工作的实质就是规划如何将系统拆分成组件,并安排好组件之间的排列关系,以及组件之间互相通信的方式。

软件架构的终极目标就是最大化程序员的生产力,同时最小化系统的总运营成本。

所有的软件系统都可以降解为策略与细节这两种元素。策略体现的是软件中所有的业务规划和操作过程,因此它是系统真正的价值所在。

优秀的架构师会小心地将软件的高层策略与其底层实现隔离开,让高层策略与实现细节脱钩,使其策略部分完全不需要关心底层细节,当然也不会对这些细节有任何形式的依赖。

一、独立性

一个设计良好的架构应该能允许一个系统从单体结构开始,以单一文件的形式部署,然后逐渐成长为一组相互独立的可部署但愿,甚至是独立的服务或者微服务。最后还能够随着情况的变化,允许系统逐渐回退到单体结构。

二、划分边界

软件架构设计本身就是一门划分边界的艺术。边界的作用是将软件分割成各种元素,以便约束边界两侧之间的依赖关系。其中有一些边界是在项目初期——甚至在编写代码之前——就已经划分好,而其他的边界则是后来才划分的。在项目初期划分这些边界的目的是方便我们尽量将一些决策延后进行,并且确保未来这些决策不会对系统的核心业务逻辑产生干扰。

正如我们之前所说,架构师们应该追求的目标是最大限度地降低构建和维护一个系统所需的人力资源。那么我们就需要了解一个系统最消耗人力资源的是什么?答案是系统中存在的耦合——尤其是那些过早做出的、不成熟的决策所导致的耦合。

那么,怎样的决策会被认为是过早且不成熟的呢?答案是那些决策与系统的业务需求无关。

三、边界剖析

所谓划分边界,就是指在这些模块之间建立这种针对变更的防火墙。

系统架构中最强的边界形式就是服务。

四、策略与层次

本质上,所有的软件系统都是一组策略语言的集合。软件架构设计的工作重点之一就是,将这些策略彼此隔离,然后将它们按照变更的方向进行重新分组。其中变更原因、时间和层次相同的策略应该被分到同一个组件中。分之,变更原因、时间和层次不同的策略则应该分属于不同的组件。

软件设计的工作常常需要将组件重排组合成为一个有向无环图。一般来说,低层组件被设计为依赖于高层组件。

五、业务逻辑

业务逻辑是一个软件系统存在的意义,它们属于核心功能,是系统用来赚钱火省钱的那部门代码,是整个系统的皇冠明珠。

这些业务逻辑应该保持纯净,不要掺杂用户界面或者所使用的数据库相关的东西。在理想情况下,这部门代表业务逻辑的代码应该是整个系统的核心,其他底层概念的实现应该以插件的形式借入系统中。业务逻辑应该是系统中最独立、复用性最高的代码。

六、尖叫的软件架构

Jacobson:软件的系统架构应该为该系统的用例提供支持。这就像住宅和图书馆的建筑计划满篇都在非常明显地凸显这些建筑的用例一样,软件系统的架构设计图也应该非常明确地凸显该应用程序会有那些用例。

架构设计的核心目标

一个良好的架构设计应该围绕着用例来展开的,这样的架构设计可以在脱离框架、工具以及使用环境的情况下完整地描述用例。这就好像一个住宅建筑设计的首要目标应该是满足住宅的使用需求,而不是确保一定要用砖来构建整个房子。

而且,良好的架构设计应该尽可能地允许用户推迟和延后决定采用什么框架、数据库、Web 服务以及其他与环境相关的工具。

同时,良好的架构设计还应该让我们很容易改变这些决定。

框架是工具而不是生活信条

一个系统的架构应该着重于展示系统本身的设计,而并非该系统所使用的框架。

收藏
举报
25 条评论
  • 用户59346965397892019年6月9日

    简单问题非要复杂么?架构 框架=构思!!简单比喻一下!比如你想建个房子!你必需把它的结构框架模形,在脑子里构思一下,这才是构架理念的最初由来!你说气人不

    回复0 
  • 回复0 
  • 双击六个六2019年6月7日

    少壮不努力,长大敲代码。

    回复1 
  • 小小悟空本领大2019年6月6日

    应该是初级程序员或者刚要接触软件行业,才会写这种文章

    回复1 
(0)

相关推荐

  • 软件架构设计(一):软件架构概念

      不积跬步,无以至千里.   程序员在向架构师转型时,都希望尽早清除"什么是架构".但是架构的额定义又多又乱.已造成"什么是架构"成了程序员向架构师转型的最大 ...

  • 整车SOA系统设计

    引言: <浅谈整车SOA架构>系列分为四大部分,层层递进,干货满满,千万不要错过哦: 1. 背景介绍(已发表,点击可看) 2.大家眼中的SOA(已发表,点击可看) 3.我眼中的SOA(已发 ...

  • 不容错过的灰度发布系统架构设计

    重磅干货,第一时间送达 来自:小杨互联网 大家好,我是你们帅气的喵哥! 灰度发布的定义 互联网产品需要快速迭代开发上线,又要保证质量,保证刚上线的系统,一旦出现问题可以很快控制影响面,就需要设计一套灰 ...

  • Pony.ai 硬件系统架构介绍

    自动驾驶是软硬件结合的系统工程,本文将为您解读Pony.ai 自动驾驶车辆的硬件架构.自研的计算系统,以及深度讲解自动驾驶行业所需的硬件技术. 01 产汽车电子电气架构回顾 传统汽车由Electron ...

  • 系统架构师、算法工程师、人工智能工程师需要学多少数学?

    昨天有网友问我,他原先没有学过奥数,问能不能当系统架构师?其他也有人有疑问,是不是应该先学数学,然后在考研的时候转入计算机? 我先说一下结论,没有学过奥数,完全可以当系统架构师.如果真的喜欢数学,可以 ...

  • 【混动】深度解读P0-P4电机系统架构

    来源:龙域电机 在发烧友和技术控眼中,新能源车更像一件艺术品,每一个核心部件都是其精髓所在.聊到纯电动车,他们会问你电池厂商或是电芯的供应商,这可以视作车辆的第二品牌:聊到混合动力汽车,他们会问你是& ...

  • 赞豳邑航天人高级系统架构师笫五亚洲 文/张小锋

    公刘故里,陕西旬邑,中华诗词之乡,人杰地灵,英才辈出.北斗星通公司高级系统架构师第五亚洲,荣获2021年"全国五一劳动奖章".他先后荣获首届海淀园"创新工匠"荣 ...

  • 38张史上最全的系统架构师技能图谱(高清)

    球迷Long导语 系统架构并不神秘,但也不必陷入到某一个技术领域不可自拔,范围太广,需要结合自身工作需要有针对性的掌握才好. 今天给大家分享38张 史上最全系统架构师技能图谱 文末有38张技能图谱下载 ...

  • 38张史上最全的系统架构师技能图谱(高清)(内附下载链接)

    史上最全系统架构师技能图谱 文末有38张技能图谱下载方式 架构师图谱 Java架构师图谱 微服务架构秘籍 一致性图谱 互联网大流量的方法 安全秘籍 阿里巴巴常用小框架 架构方法论图谱 设计模式秘籍图谱 ...

  • 最常见的六种视频监控工程系统架构

    很多的朋友对监控的安装有很多疑问,在很多情况下,作为施工人员我们要根据客户的要求进行施工,那么我们所了解的方法就可能不止一种,这样才能满足客户的不同要求,本期我们来总结网络监控系统安装的六种传输方式. ...

  • IT系统架构及架构体系详解

    公众号回复'架构'获取架构师电子书及视频课程 完整PPT版本获取方式:

  • 自动驾驶传感器之摄像头(二)车载摄像头的系统架构基本介绍

    作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 摄像头模组内部结构及工作机理讲解: 镜头:聚集光线,把景物投射到成像介质表面,有的是单镜头,有的成像效果要好,需要多层玻璃的镜头. 滤色片:人眼 ...