经典软件体系结构风格及DSSA

软件体系结构风格整理 什么是软件体系结构风格? 软件体系结构风格(Architectural Styles)是描述特定系统组织方式的惯用范例,强调了软件系统中通用的组织结构。 风格这个词是个模糊的概念,不同的人有不同的理解,这有时候就让人很困惑。这时候为了明确这个概念,通过数学集合的方式来定义风格,如此一来,我们更能认清风格的内部结构及本质。 同样,针对某种软件应用场景,应该选择与其相适应的构件,以及合理安排构件间的关... 阅读详情

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式(idiomatic paradigm)。体系结构风格定义了一个系统家族,即一个体系结构定义了一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。

风格允许定义领域特定的或应用特定的(application-specific)的设计词汇(vocabulary),以及如何使用这些词汇的约束。支持对领域特定的设计经验的打包(package),特定目的分析和代码生成工具的使用,设计过程的简化,与体系结构标准一致性的检查等。

讨论体系结构风格时要回答的问题是:

1设计词汇表是什么。

2构件和连接件的类型是什么。

3可容许的结构模式是什么。

4基本的计算模型是什么。

5风格的基本不变性是什么。

6其使用的常见例子是什么。

7使用此风格的优缺点是什么。

8其常见的特例是什么。

Garlan,Shaw对体系结构风格有个分类:

1数据流风格:批处理序列、管道/过滤器

2调用/返回风格:主程序/子程序、面向对象风格、层次风格

3独立构件风格:进程通信、事件系统

4虚拟机风格:解释器、基于规则的系统

5仓库风格:数据库系统、超文本系统、黑板系统。

经典软件体系结构风格:

 1管道/过滤器

在该体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成。因此,这里的构件被称为过滤器,而连接件被称为管道。

一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算的过程的顺序。

过滤器是独立的实体,不能与其他的过滤器共享数据。

典型的管道/过滤器风格有:UNIX下的Shell编程。UNIX既提供一种符号以连接各组成部分(进程),又提供某种进程运行时机制以实现管道。另一个例子:传统的编译器。传统的编译器中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。

2数据抽象和面向对象组织

数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这个风格的构件就是对象,或者说是抽象数据类型的实例。对象是一种被称为管理者的构件,因为它负责保持资源的完整性。对象通过函数和过程调用来交互。

3基于事件的隐式调用

其思想是:构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程。这样,一个事件的触发导致了另一个模块中的过程的调用。

这个风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。

这个风格的应用很多。

4分层系统

分层系统是一个层次结构,每一层为上一层服务,并作为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻层可见。这样,系统中的构件在一些层中实现了虚拟机(在另外一些层次系统中层是部分不透明的)。连接件通过决定层间如何交互的协议来定义,其拓扑约束包括对相邻层间交互的约束。

这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂的问题分解成一个增量步骤序列的实现。因为,每一层只影响两层,同时只要给相邻层提供相同的接口,允许每次用不同的方法实现,同样为软件重用提供了强大的支持。

典型的应用是分层通信协议。

5C2风格

C2是一种基于构件和消息的架构风格,可用于创建灵活的、可伸缩的软件系统。一个C2构架可以看成是按照一
定规则由连接件连接的许多组件组成的层次网络:系统中的构件和连接件都有一个“顶部”和“底部”;一个构件的“顶部”或“底部”可以连接到一个连接件的“底部”或“顶部”;对于一个连接件,和其相连的构件或连接件的数量没有限制,但是构件和构件之间不能直接相连。

C2架构风格最重要的特性就是“底层无关性”,这在构件的可替代性和可重用性方面具有显著的作用;另外,C2架构引入了“事件转化”的概念,域解释器把构件的请求转化为接收方能够接收的特定形式,同时也把通知转化为该构件能够理解的形式。

C2风格是最常用的一种风格:

系统中的构件可实现应用需求,并能将任意复杂的功能封装在一起。

所有构件之间的通信以连接件为中介的异步消息交换机制。

构件相对独立,依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享控制线程之类的相关性假设。

DSSA(Domain Specific Software Architecture)与软件体系结构风格的比较

DSSA与软件体系结构风格是从不同角度出发研究问题的两种结果,前者从问题域出发,后者从解决域出发。

DSSA只对某个领域进行专家知识的提取、存储、组织,但可以同时使用多种软件体系结构风格;而在某个软件体系结构风格中进行专家知识组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。

DSSA通常选用一个或多个适合所研究的领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。但该方法提取的专家知识只能应用于一个较小的范围--所在领域。一个领域的

DSSA及其工具在另一个领域中是不适应的,或不可以重用的。

体系结构风格避免设计到特定的应用领域或背景,所提取的知识比DSSA提取的知识应用范围要广。但在一个特定领域中,正是由于体系结构风格对领域知识、领域背景的忽略,使其在一个具体领域的开发中的作用并不比DSSA要大。

DSSA与体系结构风格是互为补充的两种技术。

软件架构设计 ABSD/DSSA/SAAM/ATAM 架构权衡分析方法ATAM是一种基于场景的系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。ATAM分为4个主要的活动包括场景和需求收集、架构视图描述、属性模型构造和分析、架构决策和折中,整个评估过程强调以属性作为架构评估的核心概念。软件架构分析方法SAAM是一种基于场景的系统架构评估方法,最初是用来分析架构的可修改性的,但实践证明也可用于对许多其它质量属性及系统功能的快速评估。分析类图是从业务领域获取信息的,在描述上更多的使用了业务领域的语言和词汇。 阅读详情

相关推荐

【软件体系结构】软件体系结构风格

多年来,人们在开发某些类型软件过程中积累起来的组织规则和结构,形成了软件体系结构风格。软件体系结构风格,是总结人们设计经验而形成结构较为巩固、组织较为统一的形式,是一种适合于多种场合的相似结构的抽象。软件体系结构设计的一个核心问题是,能否使用重复的体系结构模式,即能否达到体系结构级的软件重用。

m0_62410106的博客 3354

【软考系统架构设计师】DSSA特定领域软件架构

本阶段的重点是确定什么在感兴趣的领域中以及本过程到何时结束。这个阶段的一个主要输出是领域中的应用需要满足一系列用户的需求。本阶段的目标是编译领域字典和领域术语的同义词词典。在领域工程过程的前一个阶段产生的高层块圈将被增加更多的细节,特别是识别领域中应用间的共同性和差异性。本阶段的目标是描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论。本阶段的目标是产生一般的体系结构,并说明构成它们的模块或构件的语法和语义。

weixin_42163707的博客 2953

系统架构 DSSA(Domain Specific SoftwareArchitecture)特定领域软件架构

系统架构 DSSA(Domain Specific SoftwareArchitecture)特定领域软件架构

技术博客 1996

高级系统架构师学习(四)软件架构设计-中篇

一、特定领域软件架构【DSSA】定义:以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,支持一个特定领域中多个应用的生成。基本活动  垂直域:某一个狭小领域或者说某个行业的共性抽象。  水平域:多个行业可通用的一些共性的抽象。领域分析中各角色职能领域专家:从事该领域中系统的需求分析、设计...

weixin_41309100的博客 1246

软考系统架构师论文-基于DSSA的软件架构设计和应用

基于DSSA的软件架构设计和应用 论基于DSSA的软件架构设计和应用 论基于DSSA服务的web应用系统设计 论软件可靠性设计和应用 摘要 去年三月份,我所在的公司启动国网电力用户用电信息采集系统项目,我被任命为项目负责人, 国网电力用户用电信息采集系统是国家电网公司坚强智能电网建设的一部分,由于公司之前为南网 开发过类似用电信息采集系统,且公司准备在典礼行业做强做大,我提出了采用DSSA技...

weixin_42672777的博客 1680

二维紧束缚模型求解程序

假如我们已经推导出了二维紧束缚模型的哈密顿量矩阵H(kx,ky)的解析形式,那么在整个布里渊区对角化矩阵就可以得到能带。从技术上说这里面有以下几个问题。 1. 缺少实空间和倒空间的坐标,使得能带难以和布里渊区高对称点对应。 2. 最容易处理的布里渊区是矩形,对于其他多边形,如果全布里渊区mesh画费米面有一定技术困难。 因此一个好的处理框架是首先给出实空间原子坐标,给出实空间哈密顿量,...

wwxy1995的博客 4083

三、软件体系结构风格

软件体系结构风格 一、概述 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。 体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。 体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。根据项目的具体特点进行分析,再确...

Cookie__C的博客 5359

实战对比:VINS和ORBSLAM3在无人机避障中的表现(含实测数据)

本文通过实战测试,深度对比了VINS和ORBSLAM3两种主流视觉SLAM算法在无人机避障中的表现。测试聚焦于光照变化、动态遮挡和快速运动三大挑战,提供了详细的实测数据与性能分析。结果表明,VINS在计算效率和实时性上占优,而ORBSLAM3在定位精度和地图管理方面更稳健,为不同应用场景下的工程选型提供了清晰依据。

醉三国 627

《软件体系结构》第三章 软件体系结构风格

第三章 软件体系结构风格 一、基本概念 1. 软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能够达到体系结构级的复用。 2. 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的 3. 对软件体系结构风格的...

学习笔记 2万+

嵌入式工程师必学(118):MCU的硬件定时器和中断

大多数微处理器都有一个或多个可编程硬件定时器,这些定时器包括对中断的支持。可以有不同类型的计时器,用于不同的应用程序。例如,LPC1768 具有四个 32 位通用定时器、一个看门狗定时器、一个重复中断定时器、一个系统滴答定时器、一个正交编码器接口、6 个 PWM 输出和一个支持中断的实时时钟。硬件定时器用于计时和计数作,允许处理器在 timer 进程运行时继续执行其他进程。硬件定时器是一种使用 clock 信号来增加 register 的电路。

码农17年的博客 211

YOLOv11改进 | 主干/Backbone篇 | 轻量级移动端网络ShuffleNetV2(附代码+修改教程)

本文给大家带来的改进内容是ShuffleNetV2,这是一种为移动设备设计的高效CNN架构。其在ShuffleNetV1的基础上强调除了FLOPs之外,还应考虑速度、内存访问成本和平台特性。(我在YOLOv11n上修改该主干降低了GFLOPs,但是参数量还是有一定上涨,其非常适合轻量化的读者来使用,同时精度也有一定程度的上涨)。本文通过介绍其主要框架原理,然后教你如何添加该网络结构到网络模型中。

Snu77的博客 3386

什么是DSSA?

DSSA通过对领域需求的深入理解,提供了一种高度复用的架构模式,使得架构更贴合领域需求并具备通用性。这种方法尤其适合那些在同一领域内开发多个项目或系统的团队,从而实现高效的领域专用解决方案。

pumpkin84514的博客 2107

三极管电平转换电路

摘要:本文介绍了三种基于三极管的电平转换电路方案。第一种采用双NPN三极管实现3.3V转5V反相电平转换;第二种使用单NPN三极管完成5V转3.3V同相转换;第三种利用单PNP三极管实现3.3V转5V同相转换。各方案均通过三极管的开关特性配合电阻网络实现电压域适配,具有结构简单、成本低的优点,适用于不同逻辑电平设备(如MCU与外设)间的信号兼容传输。文中详细分析了各电路的工作原理、元件作用和特性,并通过Multisim仿真验证了其功能有效性。

XU157303764的博客 1855

ABSD 和 DSSA对比

ABSD 和 DSSA 都是架构设计方法,适用的开发场景和目标不同。ABSD 更适合特定项目的应用开发,而 DSSA 则适合在同一领域内建立标准化架构,实现复用。

pumpkin84514的博客 1482

YOLO26 正式发布源代码!极致速度优化方案, 面向工业级落地的目标检测模型!

YOLO26 作为 Ultralytics 公司于 2025 年 9 月发布的最新一代目标检测模型,在架构设计和技术实现上展现了显著的创新。本文深入分析了 YOLO26 的核心架构改进和技术原理,重点探讨了其在边界框回归、推理流程、损失函数设计和优化算法方面的突破性进展。

魔改工程师的博客 1243

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 965

论基于DSSA的软件架构设计与应用

软件架构设计的一个重要课题是如何解决软件重用问题。特定领域软件架构(Domain Specific Software Architecture,DSSA)是一种有效实现特定领域软件重用的手段。按照Tracz的说法,DSSA就是一个特定的问题领域中由领域模型、参考需求、参考架构等组成的开发基础架构,其目标就是支持一个特定领域中多个应用的生成。DSSA的基本活动包括领域分析、领域设计和领域实现。 领域...

程序员杂谈 3400

Linux内核4.14版本——drm框架分析(1)——drm简介

本文介绍了DRM架构的发展历史、驱动框架以及简单示例,旨在帮助读者了解DRM架构的形成、功能流程实现。

phmatthaus的专栏 2556

ATAM,DSSA,ABSD

定义 ATAM是一种常用的软件架构评估方法,该方法强调对软件的质量属性进行分析、分类和优先级排序工作。在此基础上构件质量属性效用树(敏感点和权衡点是关键的体系结构决策) ...

Echo的博客 2921

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

软考高级:特定领域软件架构(DSSA)概念和例题

明明如月学长, 优快云 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。

悟鸣的技术博客 2096

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

什么是DSSA?以及DSSA主要包括哪些阶段?

DSSA是Domain Specific Software Architecture的缩写,叫做特定领域软件架构。 架构的本质在于其抽象性。它包括两个方面的抽象:业务抽象和技术抽象。其中业务抽象面向特定的应用领域。 特定领域软件架构(Domain Specific Software Architecture,DSSA)可以看做开发产品线的一个方法(或理论),它的目标就是支持在一个特定领域中有多个应用的生成。DSSA 的必备特征有: (1)一个严格定义的问题域或解决域; (2)具有普遍性,使其可以用于领域中.

mischen520的博客 4950

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

特定领域软件架构 DSSA【方法论】

(抽离共性做标准通用软件,以通用软件版本为基础,做定制开发)垂直域:在一个特定领域中的通用的软件架构,是一个完整的架构。相同领域,深入水平域:在多个不同的特定领域之间的相同的部分的小工具,如购物和教育都有收费系统,收费洗头膏即是水平域(不同领域,平移目标是,即整个领域工程过程中信息的来源,可能的信息源包括现存系统、技术文献、问题域和系统开发的专家、用户调查和市场分析、领域演化的历史记录等,它不是单个系统的表示,而是能够。建立领域模型之后,就可以派生出满足这些被建模的领域需求DSSA。

apple20150410的博客 1007

特定领域软件架构DSSA

DSSA是为特定领域提供标准化软件架构的框架,包含领域模型、参考架构和可复用组件库。其建立过程分为领域分析、设计和实现三个阶段,由领域专家、分析者、设计者等角色协作完成。DSSA分为垂直域(单一领域)和水平域(跨领域),具有严格定义的问题域与解域,强调领域共性和复用。通过提取领域知识,DSSA能提高开发效率和质量,但需权衡领域成熟度与适用范围。典型案例包括电信软件和图形编辑器等领域应用。

icefan02的专栏 713

系统架构设计师——特定领域软件体系结构DSSA

在软件工程领域,特定领域软件架构(DSSA)是一种针对特定应用领域的软件架构方法。

庄的博客 1154
上一篇: 篮球术语普及A~Z
下一篇: software architeture的相关名词
yethyeth
博客等级 码龄21年 140粉丝 265原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值