从0开始学架构-架构设计的历史背景与目的

这篇具有很好参考价值的文章主要介绍了从0开始学架构-架构设计的历史背景与目的。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从0开始学架构-架构设计的历史背景与目的

编程语言发展历程

机器语言->汇编语言->高级语言。

软件的规模和复杂度的大大增加,出现了两次软件危机。

  • 第一次软件危机与结构化程序设计(20 世纪 60 年代~20 世纪 70 年代)
  • 第二次软件危机与面向对象(20 世纪 80 年代)

软件架构的历史背景

随着软件系统规模的增加,计算相关的算法和数据结构不再构成主要的设计问
题;当系统由许多部分组成时,整个系统的组织,也就是所说的“软件架构”,导致了一系列
新的设计问题。

规模较大的软件系统面临软件架构相关的问题:

  • 系统规模庞大,内部耦合严重,开发效率低;
  • 系统耦合严重,牵一发动全身,后续修改和扩展困难;
  • 系统逻辑复杂,容易出问题,出问题后很难排查和修复。

小结:

  • 软件开发过程包括了分析、设计、实现、测试、验证、部署、运维等多个环节。
  • 软件设计过程中,模块、对象、组件本质上是对一定规模软件在不同粒度和层次上的“拆分”
    方法论,软件架构是一种对软件的“组织”方法论。
  • 架构设计,不能脱离业务、公司实际情况、人员配置、经费预算、时间投入等等与技术本身无关的因素,但却又是影响,甚至决定架构设计方向的因素。因此说没有最好,只有更合适。

架构设计的误区

  • 因为架构很重要,所以要做架构设计
  • 不做架构设计系统就跑不起来
  • 做了架构设计就能提升开发效率
  • 设计良好的架构能促进业务发展
  • 每个系统都要做架构设计
  • 公司流程要求系统开发过程中必须有架构设计
  • 为了高性能、高可用、可扩展,所以要做架构设计

架构设计的真正目的

架构设计的主要目的是为了解决软件系统复杂度带来的问题。

如何进行架构设计

  • 通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计
  • 架构设计并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而
    是要识别出复杂点然后有针对性地解决问题
  • 理解每个架构方案背后所需要解决的复杂点,然后才能对比自己的业务复杂点,参考复杂
    点相似的方案。
  • 如果系统的复杂度不是在性能这部分,TPS 做到 10 万并没有什么用
  • 淘宝的架构是为了解决淘宝业务的复杂度而设计的,淘宝的业务复杂度并不就是我们的业
    务复杂度,绝大多数业务的用户量都不可能有淘宝那么大。
  • Docker 不是万能的,只是为了解决资源重用和动态分配而设计的,如果我们的系统复杂
    度根本不是在这方面,引入 Docker 没有什么意义。

小结

业务架构和业务量级都是从每个具体项目的实际应用场景中提炼出来的。

业务架构是对业务需求的提炼和抽象,开发软件必须要满足业务需求,否则就是空中楼阁。软
件系统业务上的复杂度问题,可以从业务架构的角度切分工作交界面来解决。

设计软件架构,首先是要保证能和业务架构对的上,这也是从业务逻辑转向代码逻辑的过程,所以软件架构的设计为开发指明了方向。

另外架构设计也为接下来的开发工作分工奠定了基础。

业务量级表现在存储能力、吞吐能力和容错能力等,主要是软件运维期业务的复杂度。

做软件架构设计,是要保证软件有能力托起它在业务量级上的要求的,如果软件到运行使用期废了,前面所有的工作都付诸东流了。

不同的业务量级,对应的软件的架构复杂度是不同的,所以对于不同的项目,业务量级不同,架构设计也不同。

做业务架构必须与其面向的实际应用场景相匹配,由于每个产品或项目的业务场景均有所不
同,所以每次做新的软件开发前,必须先设计软件架构,试图不经分析直接套用先前的架构方
案,十有八九会让当前的系统在某个点上报出大问题导致推翻重来,更不要说直接拿别人的现
成架构方案了。

所以每个软件在开发前,都要结合自己的应用场景设计适合自身的软件架构,现成的架构方案
只能借鉴,不能直接套用。

另外,由于业务架构和业务量级也会不断调整或长大,软件架构也不是一劳永逸的,会随业务
不断调整。文章来源地址https://www.toymoban.com/news/detail-542234.html

到了这里,关于从0开始学架构-架构设计的历史背景与目的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【go语言】1.1.1 Go 语言的历史和背景

    Go 语言,也被称为 Golang,是一种静态强类型、编译型的开源编程语言。Go 语言的出现是为了解决当下的软件开发问题,特别是大规模软件系统的开发。 Go 语言的设计者包括 Robert Griesemer、Rob Pike 和 Ken Thompson,他们都是在 Google 工作的资深工程师。他们发现当时的编程语言,无

    2024年02月16日
    浏览(39)
  • TCP/IP出现的背景及其历史【图解TCP/IP(笔记八)】

    从军用技术的应用谈起 20世纪60年代,很多大学和研究机构都开始着力于新的通信技术。其中有一家以美国国防部(DoD,The Department of Defense)为中心的组织也展开了类似的研究。 DoD认为研发新的通信技术对于国防军事有着举足轻重的作用。该组织希望在通信传输的过程中,即

    2024年02月13日
    浏览(52)
  • GO语言从入门到实战-Go语言简介:历史背景、发展现状及语言特性

    一、简述Go语言背景和发展         1. 软件开发的新挑战 多核硬件架构 超大规模分布式计算集群 Web 模式导致的前所未有的开发规模和更新速度         2. Go的三位创始人         Rob Pike         Unix 的早期开发者         UTF-8 创始人         Ken Thompson     

    2024年02月07日
    浏览(40)
  • 基于微信小程序的校园监考管理系统设计与实现课题背景、目的、意义

     目录 一、整体目录(示范): 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分(示范): 四、数据库表(示范): 数据库表有注释,可以导出数据字典及更新数据库时间,欢迎交流学习 五、主要技术介绍: 六、项目调试学习(点

    2024年01月22日
    浏览(54)
  • 【自驾旅游】基于微信小程序的自驾游课题研究背景、目的、意义

    目录 一、整体目录(示范): 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分(示范): 四、数据库表(示范): 数据库表有注释,可以导出数据字典及更新数据库时间,欢迎交流学习 五、主要技术介绍: 六、项目调试学习(点击

    2024年02月02日
    浏览(37)
  • 软件架构设计(五) 软件架构风格-微服务

    微服务的概念 微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组 很小的服务 (其实就是功能独立,职责单一),服务之间互相协调,相互配合,为用户提供最终价值。 微服务架构风格中每

    2024年02月10日
    浏览(42)
  • 从零开始理解Linux中断架构(2)-朴素的中断管理设计理念

            既然是从零开始,我们先从最为简单的中断逻辑处理架构开始,这个逻辑结构跟CPU架构没有关系,纯逻辑上的。纯逻辑是跨越系统和应用的,不管对于应用程序员还是系统程序员,逻辑推导是基本的工具,设计原型是基本的出发点。         在系统初始化的时

    2024年02月08日
    浏览(42)
  • 软件架构设计(六) 软件架构风格-MDA(模型驱动架构)

    概念 模型驱动架构MDA, 全称叫做Model Driven Architecture。 Model:表示客观事物的抽象表示 Architecture:表示构成系统的部件,连接件及其约束的规约 Model Driven: 使用模型完成软件的分析,设计,构建,部署和维护等 开发活动 MDA起源于分离系统规约和平台实现的思想。之前我们在净

    2024年02月09日
    浏览(34)
  • 系统架构师---软件重用、基于架构的软件设计、软件模型

    目录 软件重用 构件技术 基于架构的软件设计 ABSD方法与生命周期 抽象功能需求 用例 抽象的质量和业务需求 架构选项 质量场景 约束

    2024年02月12日
    浏览(45)
  • 软件架构设计(二) 软件架构风格其他风格简介

    架构师备战(四)-软件架构设计(二) 软件架构风格其他风格简介 架构风格其实是很重要的知识,我们先了解了基本的五种架构风格, 我们之前也提到除了这五种风格之外, 还有一些没有收录在这几种风格之内的, 这次会去做一个探索。 概念 当软件被用来操作一个物理系统时,软件

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包