【架构基础】架构概念

这篇具有很好参考价值的文章主要介绍了【架构基础】架构概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

软件架构产生的背景

1972年图灵奖获得者、荷兰计算机科学家Edsger Wybe Dijkstra早在20世纪60年代就开始涉及软件架构概念了。

20世纪60年代第一次软件危机引出了结构化编程,创造了模块的概念。

20世纪80年代第二次软件危机引出了面向对象编程,创造了对象的概念。

到了20世纪90年代软件架构开始流行,创造了组件的概念。

由此可见,模块、对象、组件本质上都是对达到一定规模的软件进行拆分,区别仅仅是随着软件复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。

架构定义

目前软件架构没有统一的定义,下面列举几个比较具有代表性的架构定义:

  • 卡内基梅隆大学SEI--计算系统的软件架构是解释该系统所需的结构体的集合,其中包括软件元素、元素之间的相互关系,以及二者各自的属性。
  • ISO42010.2011--架构是一个系统的基本组织,体现为其组成部件、部件之间、环境之间的关系,以及支配其设计和演进的原则。
  • 《系统架构》--架构是对系统中实体与实体之间关系所进行的抽象描述,在人类构建的系统中,它可以表述为一系列的决策。

架构设计

架构设计是一门分与合的艺术。

关注点分离(Separation of concerns, SoC)原则主要目的就是为了解决复杂系统如何“分”的问题。将复杂系统根据不同的角度(也即关注点)分解为多个相对独立的部分,再对每个独立部分单独处理,这就是关注点分离。

从不同维度,可以有不同的分离方案。温昱老师的《软件架构设计》一书中的【 2.1.1 关注点分离之道 】章节分别从功能职责、通用专用性、大小粒度等不同维度进行分离。

【架构基础】架构概念,架构基础,架构,软件工程

架构的“合”,下面从功能职责划分视角说明,从高层到低层依次为展现层、业务层、数据层。

架构设计需要明确依赖关系规则。一是源码的依赖关系必须只能由高层指向低层,即展现层依赖于业务层或数据层。二是上层模块发生的任何变更,都不应影响到下层模块的实现,如展现层变更,不应影响到业务层或数据层。

对于大型长生命周期的项目,为了保持核心业务层架构的稳定性,避免数据层的变化对业务层影响,业务层不能直接调用数据层的接口读写数据。通常采用依赖倒置原则(DIP)解决源码中控制流与依赖方向的相反性问题,即由高层定义接口,由低层实现接口。此处,由业务层定义接口,由数据层实现接口。

架构设计-RUP 4+1视图方法

【架构基础】架构概念,架构基础,架构,软件工程

1995年,Philippe Kruchten在《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注。后来,他加入Rational,演变出著名的“RUP 4+1视图方法”。

  • 逻辑视图(Logical View),设计的对象模型。

逻辑视图关注功能,不仅包括用户可见的功能,还包括为实现用户功能而必须提供的 “辅助功能模块”。它们可能是逻辑层、功能模块、类等。

  • 进程视图(Process View),捕捉设计的并发和同步特征。

进程视图关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题。进程视图和实现视图的关系:进程视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、线程、进程,进程视图比较关注的是这些运行时单元的交互问题。

  • 部署视图(Deployment View),描述了软件到硬件的映射,反映了分布式特性。

部署视图关注 “目标程序及其依赖的运行库和系统软件” 最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。部署视图和进程视图的关系:进程视图特别关注目标程序的动态执行情况,而部署视图重视目标程序的静态位置问题;部署视图还要考虑软件系统和包括硬件在内的整个 IT 系统之间是如何相互影响的。

  • 实现视图(Implementation View),描述了在开发环境中软件的静态组织结构。

实现视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方 SDK 和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件。实现视图和逻辑视图之间可能存在一定的映射关系:比如逻辑视图中的逻辑层一般会映射到实现视图中的多个程序包;再比如实现视图中的源码文件可以包含逻辑视图中的一到多个类。文章来源地址https://www.toymoban.com/news/detail-605362.html

  • 用例视图(Use-Case View),该视图对应于“+1”,代表用户需求。它关联了其他所有视图,实际上也代表了所有设计都必须围绕用户需求展开。

到了这里,关于【架构基础】架构概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 系统架构设计师-软件工程(4)

    目录 一、软件测试         1、软件测试类型(动态测试 / 静态测试)                 1.1 动态测试【计算机运行】                  1.2 静态测试【人工监测和计算机辅助分析】         2、软件测试阶段         3、软件系统测试 二、遗留系统演化策略

    2024年02月13日
    浏览(74)
  • 系统架构设计师-软件工程(1)

    目录 一、软件过程模型               1、瀑布模型         2、V模型【瀑布变种】         3、原型模型         4、螺旋模型【原型+瀑布】         5、构件组装模型/基于构件的开发方法         6、快速应用开发RAD【瀑布+构件组装】                        

    2024年02月11日
    浏览(66)
  • 系统架构设计师-软件工程(2)

    目录 一、需求工程          1、需求工程阶段划分         2、需求获取         3、需求分析​         4、需求定义(形成需求规格SRS)         5、需求确认与验证         6、需求跟踪                          7、需求变更管理过程         1、需求工程阶

    2024年02月12日
    浏览(42)
  • 系统架构设计专业技能 · 软件工程之软件测试与维护(六)【系统架构设计师】

    系统架构设计专业技能 · 网络规划与设计(三)【系统架构设计师】 系统架构设计专业技能 · 系统安全分析与设计(四)【系统架构设计师】 系统架构设计高级技能 · 软件架构设计(一)【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统

    2024年02月13日
    浏览(59)
  • 软考高级架构师笔记-8软件工程

    前文回顾:

    2024年02月11日
    浏览(40)
  • 系统架构设计专业技能 · 软件工程(一)【系统架构设计师】

    系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】 软件开发生命周期

    2024年02月13日
    浏览(48)
  • 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

    目录 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 一、数据流图 ( DFD ) 简介 二、数据流图 ( DFD ) 概念符号 1、数据流  2、加工 ( 核心 ) 3、数据存储 4、外部实体 三、数据流图 ( DFD ) 分层  1、分层说明  2、顶层数据流图 3、中层数据流图 4、底层数据流图 四、数

    2024年02月13日
    浏览(39)
  • [架构之路-152]-《软考-系统分析师》- 8-软件工程-2-软件工程的N维矩阵模型与软件开发方法(形式化方法、逆 向 工 程)

    8.1  软件工程的矩阵模型 横轴X(时间):是软件的生命周期 :需求分析=》架构设计=》编程实现=》测试=》版本发布=》部署运行 纵轴Y1维度/视角:软件开发活动, 不同什么周期阶段,有不同的开发活动,包括需求规格、设计文档、编码、测试规范、测试用例等活动。 纵轴

    2024年02月05日
    浏览(72)
  • [架构之路-263]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 概要设计 - 综述、如何做概要设计、概要设计的内容

    目录 一、概要设计综述 1.1 什么是概要设计 1.2 概要设计的目标 1.3 软件概要设计与软件架构设计的比较 1.4 软件概要设计、软件架构、软件详细设计比较 二、如何做好概要设计 2.1 概要设计的入手点 2.2 概要设计的步骤 2.3 进行概要设计的注意事项 三、软件概要设计的内容

    2024年03月10日
    浏览(87)
  • 软件设计师(五)软件工程基础知识

    软件开发和维护过程中所遇到的各种问题称为“软件危机”。 软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。 计算机软件是指计算机系统中的程序及其文档。

    2024年02月14日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包