软件架构设计(二)——领域架构、基于架构的软件开发方法

软件架构之架构设计与评估 即每个模块都构成自己的小领域(专门知识或专门技术),并与其他模块的接口清晰,这样,不同的模块分到不同的开发小组中,就能减少各开发小组之间的沟通成本,而在各开发小组内部,由于是处理小领域的问题,容易建立起有效的沟通机制,如成员有这个小领域的背景。修剪这棵树,保留重要场景(不超过 50 个),再对场景按重要性给定优先级(用 H/M/L 的形式),再按场景实现的难易度来确定优先级(用 H/M/L 的形式),这样对所选定的每个场景就有一个优先级对(重要度,难易度),如(H,L)表示该场景重要且易实现。 阅读详情

目录

一、架构描述语言 ADL

二、特定领域软件架构 DSSA

三、DSSA的三层次架构模型 .

四、基于架构的软件开发方法

(1)基于架构的软件设计(ABSD)

(2)开发过程


一、架构描述语言 ADL

        ADL是一种形式化语言,它在底层语义模型的支持下,为软件系统概念体系结构建模提供了具体的语法和概念框架。基于底层语义工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。例如:Aespo,MataH,C2,Rapide,SADL,Unicon,Wright等。ADL它包含三种元素:

  • 构件:计算或数据存储单元
  • 连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则
  • 架构配置:描述体系结构的构件于连接件的连接图

二、特定领域软件架构 DSSA

        所谓特定领域,就是业务领域。例如互联网+农业,就是互联网应用在农业上,特定领域就是农业。比如医疗,金融,物流,化学,政务,信息安全等都需要运用到互联网。大多数人都处在某种行业,想要做好计算机软件,不仅要有技术知识,也要有相关邻域的业务知识。

        在很多情况下,同一个领域的系统,可能大多数需求,以及功能实际上都差不多。如果每次开发同一个类型的系统,都要从零开始,那么成本是巨大的。特定领域软件架构的目标就是将统一个领域的共性抽取出来,为这些共性作架构设计,成为行业的解决方案。

        在分析阶段会建立领域模型;在邻域设计阶段会得到领域架构(DSSA),在实现阶段进行开发和组织可复用的信息。

        因为邻域架构的整个阶段需要抽取行业的共性特征。因此完成邻域架构的相关人员通常要有相关的业务知识储备。比如 行业专家(咨询团队),分析人员,设计人员,和开发人员。

三、DSSA的三层次架构模型 .

        通常在不少大型企业中能见到,一个公司有若干个团队,其中包含核心团队,专门维护基础产品,当作标准产品。其他团队在标准产品的基础上根据用户需求完成些个性化的开发。

        在DSSA三层架构模型中,三层指的是邻域开发环境,领域特定的应用开发环境,应用执行环境。而邻域开发环境就是开发行业领域中的共性的东西,领域特定的应用开发环境就是在原产品上完成对客户的个性化开发

 

四、基于架构的软件开发方法

(1)基于架构的软件设计(ABSD)

  • Architecture Base Software Design,是架构驱动,强调由业务、质量、功能需求的组合驱动架构设计。通俗点说,就是要根据实际业务来进行架构设计。
  • 使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求获取和分析还没有完成,就开始了软件这几
  • ABSD方法由三个基础。分别是功能的分解(使用模块的内聚耦合技术),选择架构风格来实现质量和业务需求,软件模板的使用(利用软件系统结构)。
  • ABSD方法是递归的。架构在迭代中的每一步都总是清晰的。
  • 视角与视图:要从不同角度去分析问题。
  • 用例用来捕获功能需求、特定场景来捕获质量需求。根据参与者访谈了解需求实现要完成哪些功能。通过设计场景进行使用软件,要求系统满足一些非功能需求,比如说响应时间,可靠性等。

(2)开发过程

         ABSD,能够很好的支持软件重用。开发过程需要经历以下几个步骤:

架构需求:首先进行需求获取,其中还可以从需求库中获取一些通用的需求;标识构件,包含生成类图,对类分组,把类打包成构件。这样的目的是为了将需求分为各个功能板块,每个功能板块视为构件;最后需求评审。

架构设计:首先要提出架构模型,要将每个构件映射到架构中,分析构件的相互作用,产生架构后进行评审。

架构文档化:生成《架构规格说明书》、《测试架构需求的质量设计说明书》,文档的完整性和质量是软件的关键因素。例如、编写文档要让使用者看懂,每个开发人员都要有最新的文档

架构复审:发现标识潜在风险,尽早发现架构设计中缺陷和错误。如果复审不通过,那么返回到架构设计重新修改。

架构实现:得到复审后的文档化架构之后,进行构件的实现,实际上也是子系统的实现。流程分析与设计,构件实现。各个子系统完成后,进行构件的组装,完成构件之间的通信。最后进行总体的系统测试。完成后进入了演化过程

架构演化:如果有需求变化,将需求归类,分析架构是否要变动,以及变更计划是什么。分析涉及到哪些构件,落实需求实现后,重新更新构件间的通信,并进行系统测试。最后进行对新架构进行技术评审。得到演化后的架构

 

 

DDD领域驱动设计和DSSA特定领域软件架构 DDD的核心思想是通过深入理解业务领域,将业务逻辑和规则直接映射到软件设计中,以应对复杂系统的开发。 阅读详情

相关推荐

软件架构设计(八) 基于架构的软件开发方法

ABSD虽然在日常生活中并不常见,但是在考试中却是极为常见的,因此仍然是我们的重点学习知识点。

qq_35267557的博客 1433

基于架构的软件开发方法

基于架构的软件开发方法是由架构驱动的,即指由构成体系结构的商业、质量和功能需求的组合驱动的。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求。第1个基础是功能的分解。基于架构的软件开发方法(ABSD)的第一个基础是功能的分解,ABSD方法使用已有的基于模块的内聚和耦合技术。ABSD 方法是递归的,且迭代的每一个步骤都是清晰定义的。架构文档化主要产生2种文档,架构规格说明书,测设架构需求的质量设计说明书,文档至关重要,关系到开发的成败。

梦里蓝天 1904

软考 系统架构设计师系列知识点之基于架构的软件开发方法ABSD(8)

软考 系统架构设计师系列知识点之基于架构的软件开发方法ABSD(8)

phmatthaus的专栏 902

【软考——系统架构师】软件架构设计

软件体系结构是指系统的一个或者多个结构,这些结构包括软件的构件(可能是程序模块、类或者是中间件)、构件的外部可见属性以及他们之间的相互关系。体系结构的设计包括数据设计和体系结构设计,后者主要关注软件构件的结构、属性和交互作用。这是一本能指导读者快速掌握PyTorch和深度学习的著作,从PyTorch的原理到应用,从深度学习到强化学习,本书提供了全栈解决方案。第1版上市后销量和口碑俱佳,是深度学习领域的畅销书,被誉为PyTorch领域的标准著作。

9万+

【软考 系统架构设计师】软件架构设计④ 基于架构的软件开发方法

基于架构的软件设计(Architecture-Based Software Design,ABSD)方法是架构驱动的,即强调由业务、质量和功能需求的组合驱动架构设。 ABSD方法有以下三个基础: 功能的分解,ABSD方法使用已有的基于模块的内聚和耦合技术。 通过选择架构风格来实现质量和业务需求。 软件模板的使用。 视角与视图:从不同的视角来检查,所以会有不同的视图。 用例用于捕获功能需求;特定场景(刺激、环境、响应)用于捕获质量需求。

万猫学社 1908

【系统架构设计师】十一、系统架构设计(软件架构概述|构件|软件架构风格|软件架构复用)

软件体系结构风格(软件系统架构)是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个架构定义、一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。 架构设计的一个核心问题是能否达到架构级的软件复用。 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。

帅次的博客 3848

架构-软件架构设计

通俗理解:软件架构是软件系统的“骨架”,定义了系统的结构、行为和属性,就像盖房子的设计图纸,规划了房间布局、承重结构和功能分区。核心作用沟通桥梁:让技术人员(如程序员)和非技术人员(如产品经理)能理解系统设计,比如用“用户模块”“数据存储模块”描述系统组成。质量预测:通过架构设计可提前判断系统是否能满足性能、安全等需求,例如分层架构能提升可维护性。方便迭代:清晰的架构让修改局部功能更简单,比如更换数据库时只需调整数据层接口。重点架构设计本质是“需求分配”

1535

从ABS到EBS再到AEBS:商用车制动安全系统的“三代同堂”与技术演进史

本文详细解析了商用车制动安全系统从ABS到EBS再到AEBS的技术演进历程。通过对比三代系统的性能差异和应用效果,揭示了电子控制单元(ECU)在提升制动精度和安全性的核心作用,并展望了智能制动技术的未来发展趋势。

weixin_42651748的博客 329

软件架构设计之七:软件架构设计

一、本章要点 1)信息系统综合知识。包括软件架构的概念、软件架构的风格、特定领域软件架构、基于架构的软件开发方法、软件架构评估、软件产品线;设计模式的概念、设计模式的组成、模式和软件架构、设计模式分类、设计模式的实现。 2)系统架构设计案例分析。包括软件架构技术、XML技术、基于架构的软件开发过程、架构模型(风格)、特定领域软件架构、基于架构的软件开发方法、架构评估、软件产品线、系统演化、设计

波粒二象性的专栏 5377

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 392

Vivado时序违约小结

目录1. setup time违约1.1 逻辑级数太高1.2 Fanout太大2. hold time 违约2.1 异步信号处理导致hold time违约 1. setup time违约 建立时间是工程设计中最常遇到的问题了。一般说来,导致建立时间违例主要有两个原因:逻辑级数太大或者扇出太大,当然也可以尝试通过降频来解决建立时间违约。 1.1 逻辑级数太高 Levels指的是逻辑级数logic level,一个logic level的延迟对应的是一个LUT和一个Net的延迟,对于不同的器件,不同频率的设计能

mu_guang_的博客 7152

系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA

软件架构概念软件架构() =软件体系结构指系统的一个或者多个结构,结构包括:(1)结构 - 软件的构件(可能是程序的模块、类、或者中间件)(2)属性 - 构件的外部可见属性(3)交互作用 - 构件之间的相互关系软件架构的本质软件架构为软件系统提供了一个结构、行为和属性的高级抽象。软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。软件架构的作用软件架构是项目干系人进行交流的手段。软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。

weixin_30197685的博客 9771

Cloudflare 5秒盾破解实战:Python补环境框架下的13次请求全解析

本文深入解析Cloudflare 5秒盾(5-second challenge)的工作原理,并提供基于Python环境的自动化应对策略。通过13次请求流程分解、动态脚本处理技术和环境指纹模拟,帮助开发者有效绕过这一复杂的人机验证机制,提升自动化工作效率。

weixin_30772105的博客 176

【系统架构设计(15)】软件架构设计一:软件架构概念与基于架构的软件开发

【系统架构设计(13)】软件架构设计一:软件架构概念与基于架构的软件开发

hiliang521的博客 1358

西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践

本文详细解析了西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践。通过实际案例和代码示例,介绍了状态机的基础认知、硬件配置、逻辑开发、调试技巧以及与MES系统集成的高级应用,帮助工程师高效实现设备自动化控制。

weixin_29255731的博客 527

Arduino、ESP32驱动BMP390L数字大气压传感器(压力传感器)

BMP390L是一款博世新研发的工业级专用数字气压传感器,具有极高的温度稳定性、低漂移、低功耗。

不脱发的程序猿 2006

软件架构设计

而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程调用的顺序;由于过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。ADL是一种形式化语言,它底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。很难找到一个合适的、正确的层次抽象方法;优点:良好的重用性,只要接口不变可用在其他处;特点:各个层次的组件形成不同功能级别的虚拟机;架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。视角与视图:从不同的视角来检查,所以会有不同的视图。

qq_41891244的博客 1962

5.1 rocr-runtime libhsakmt event 机制全景—从 Doorbell 到 Signal

本文介绍了ROCm/KFD中的Event机制架构,主要解决GPU异步计算中的反馈问题。Event机制分为三层:硬件层触发事件,内核层管理事件通知,用户态接收处理。事件类型分为三大类:同步类事件(如SIGNAL、QUEUE_EVENT)用于任务完成通知,异常类事件(如MEMORY、HW_EXCEPTION)报告错误,拓扑类事件(如NODECHANGE)处理设备变更。该机制通过共享内存和中断实现高效通信,避免CPU轮询开销。后续文章将深入内核实现、Thunk层封装和多队列完成检测实战。

图形/计算GPU的驱动与虚拟化技术分享园地 1295

系统架构师学习笔记-软件架构设计

目录     软件架构概述 特定领域软件架构 基于架构的软件开发 设计模式   软件架构概述 软件架构的定义:软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个构件,构件的外部可见属性及构件之间的相互关系。 软件架构的作用: 1. 软件架构是项目干系人进行交流的手段; 2. 软件架构是早期设计决策...

IT1995的博客 5141

RK3588 buildroot 双网口bonding调试

本文介绍了Rockchip Buildroot中配置网络冗余的方法,通过bonding技术将多个物理网口合并为逻辑接口。主要内容包括:1)7种常见bonding模式的特点及适用场景;2)RK3588的具体配置流程,包括内核配置(启用bonding驱动、修改dts)、添加ifenslave工具;3)系统编译和网络状态检查。

501846585_QQAndroid_java 458

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【架构】浅谈软件架构设计

软件架构基础知识,以及微服务架构浅谈

wnm23的专栏 1831

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

三、软件架构设计-5.特定领域软件架构(DSSA)

DSSA通过对特定领域的深入分析、设计和实现,提高了软件开发效率和质量。它包括领域分析、设计、实现三个阶段,产出领域模型、参考架构和可复用组件库,促进了组件复用,减少了重复劳动,并支持快速定制高质量软件产品。

qq_41019389的博客 1088

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【系统架构设计师】软件架构设计 02

国家软考 《系统架构设计师》第二版(即最新版本) 学习笔记提示:以下是本篇文章正文内容,下面案例可供参考。

拥有必珍惜 1281

【软考之系统架构师】软件架构设计-系统架构复用知识点

本文系统介绍了软件架构复用与开发方法的核心内容:1. 软件架构复用重点阐述了软件产品线概念、复用类型(机会复用/系统复用)及三阶段复用过程;2. 特定领域软件架构(DSSA)部分详解了其定义、垂直/水平域划分、三大基本活动和五步建立过程;3. 基于架构的软件开发(ABSD)重点说明了其驱动要素、三大基础、六阶段开发流程及"4+1"视图模型的应用。全文通过结构化框架和实例解析,系统呈现了架构复用与开发的关键技术体系,特别强调了DSSA的领域分析方法与ABSD的架构驱动特性,为软件架构设计提

软件开发实战项目分享 1450
上一篇: 软件架构设计(一)——软件架构风格
下一篇: 软件架构设计(三)——软件架构评估、软件产品线
superSmart_Dong
博客等级 码龄10年 678粉丝 167原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值