当前位置: 首页 > news >正文

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

目录

一、架构描述语言 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,能够很好的支持软件重用。开发过程需要经历以下几个步骤:

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

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

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

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

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

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

 

 

相关文章:

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

目录 一、架构描述语言 ADL 二、特定领域软件架构 DSSA 三、DSSA的三层次架构模型 . 四、基于架构的软件开发方法 (1)基于架构的软件设计(ABSD) (2)开发过程 一、架构描述语言 ADL ADL是一种形式化语言,它在底层语义模型的支持下,为软件系统概念体…...

数组常用方法(2)---数组遍历方法

1. forEach(cb) 回调函数中有三个参数,第一个是当前遍历项(必须),第二个是索引,第三个是遍历的数组本身。forEach() 对于空数组不会执行回调函数。forEach()不会使用回调函数的返回值,返回值为undefined。…...

卸载Node.js

0 写在前面 无论您是因为什么原因要卸载Node.js都必须要卸载干净。 请阅读: 1 卸载步骤 1.1通过控制面板卸载node.js winR—>control.exe—>卸载程序—>卸载Node.js 等待—>卸载成功 1.2 删除安装时的nodejs文件夹 通过记忆或者Everthing搜索找…...

发表计算机SCI论文,会经历哪些过程? - 易智编译EaseEditing

一、选期刊。 一定要先选期刊。每本期刊都有自己的特色和方向,如果你的稿子已经成型,再去考虑期刊选择的问题,恐怕后期不是退稿就是要大面积修改稿子。 选期刊的标准没有一定的,主要是各单位都有自己的要求,当然小编…...

python中lambda的用法

1. lambada简单介绍 lambda 在Python编程中使用的频率非常高,我们通常提及的lambda表达式其实是python中的一类特殊的定义函数的形式,使用它可以定义一个匿名函数。即当你需要一个函数,但又不想费神去命名一个函数,这时候&#xf…...

网络安全协议(3)

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.当前流行操作系统的安全等级 1.Windows的安全等级 什么是EAL…...

102.第十九章 MySQL数据库 -- MySQL的备份和恢复(十二)

5.备份和恢复 5.1 备份恢复概述 5.1.1 为什么要备份 灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等数据丢失场景 参考链接: https://www.toutiao.com/a6939518201961251359/ 5.1.2 备份类型 完全备份,部分备份 完全备份:整个数据集 部分备份:只备份数…...

【C++】C++入门 类与对象(一)

类与对象(一)一、类的引入二、类的定义1、类的两种定义方式:2、成员变量命名规则的建议:三、类的访问限定符及封装1、访问限定符2、封装四、类的实例化1、类的实例化概念2、类对象的大小的计算五、this指针this指针的特性一、类的…...

笔记_js运算符

目录二进制相关运算符移位运算符<<>>&#xff5c;(位或运算)参考文档二进制相关运算符 移位运算符 移位运算就是对二进制进行有规律的移位。 tips:进制转换文档链接 << “<<”运算符执行左移位运算。在移位运算过程中&#xff0c;符号位始终保持不变…...

java面试题(十九) Mybatis

4.1 谈谈MyBatis和JPA的区别 参考答案 ORM映射不同&#xff1a; MyBatis是半自动的ORM框架&#xff0c;提供数据库与结果集的映射&#xff1b; JPA&#xff08;默认采用Hibernate实现&#xff09;是全自动的ORM框架&#xff0c;提供对象与数据库的映射。 可移植性不同&…...

Linux系统位运算函数以及相应CPU ISA实现收录

以32位数据的二进制表示为例&#xff0c;习惯的写法是LSB在左&#xff0c;MSB在右&#xff0c;注意BIT序和大小端的字节序没有关系。Linux和BIT操作有关的接口在定义在头文件bitops.h中&#xff0c;bitops.h定义有两层&#xff0c;通用层和架构层&#xff0c;对应两个bitops.h&…...

logback配置文件---logback.xml

目录常识操作logback-spring.xml 示例参考于 https://blog.csdn.net/white_ice/article/details/85065219 https://blog.csdn.net/weixin_42592282/article/details/122109703 https://www.dianjilingqu.com/629077.html 常识 https://www.dianjilingqu.com/629077.html nod…...

Web前端-设计网站公共header

设计网站公共headerheader元素是一个具有引导和导航作用的结构元素&#xff0c;很多企业网站中都有一个非常重要的header元素&#xff0c;一般位于网页的开头&#xff0c;用来显示企业名称、企业logo图片、整个网站的导航条&#xff0c;以及Flash形式的广告条等。在本网站中&am…...

引用和指针傻傻分不清

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 &#x1f430;引用和指针的区别 &#x1f338;从现象上看 &#x1f338;从编译上看 &am…...

MySQL面试题:关系型数据库SQL和非关系型数据库NoSQL

文章目录一、四大非关系型数据库与关系型数据库的对比1. 关系型数据库2. 基于列的数据库3. 键值对存储4. 文档存储5. 图形数据库参考文章&#xff08;金文&#xff09;&#xff1a;四大非关系型数据库类型&#xff0c;你知道多少 参考文章&#xff1a;“行式存储”和“列式存储…...

1.Redis【介绍与安装】

1.常用数据库介绍 mysql的表类型[表引擎.存储引擎],memory表结构和表数据分开存储的,表结构保存在硬盘中,表数据保存在内存中memcache是一款软件,可以使用键值对的格式保存数据到内存中redis是意大利的工程师开发的开源免费的告诉缓存数据库,需要注意的是作者本身只开发了linu…...

DataStore快速上手1-preference

DataStore 概念 DataStore 可以存储两种类型的数据&#xff0c;一种是 preference&#xff0c;一种是 protobuf 每个进程在同一时间内仅能打开一个 DataStore 实例&#xff08;或者通过其他管理手段来实现多个 DataStore 交替使用&#xff09; 一个 DataStore 可以视为一张数…...

彻底掌握 MySQL InnoDB 的锁机制

本文是对沈剑大佬锁机制十多篇文章的概括总结&#xff0c;文末有全部链接&#xff0c;还参考了 10 多位其他网友的优秀分享。 1、概要 MySQL 中的锁可以按照粒度分为锁定整个表的表级锁(table-level locking)和锁定数据行的行级锁(row-level locking)&#xff1a; 表级锁具有开…...

C++继承

1.继承的概念及定义 1.1继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构&#x…...

动态代理是基于什么原理?

第6讲 | 动态代理是基于什么原理&#xff1f; 编程语言通常有各种不同的分类角度&#xff0c;动态类型和静态类型就是其中一种分类角度&#xff0c;简单区分就是语言类型信息是在运行时检查&#xff0c;还是编译期检查。 与其近似的还有一个对比&#xff0c;就是所谓强类型和弱…...

YOLO-V4经典物体检测算法介绍

在前文我们介绍了YOLO-V1~V3版本都做了哪些事&#xff0c;本文我们继续介绍YOLO-V4版本。YOLO的作者在发表完V3之后&#xff0c;发现YOLO产品被美国军方应用到了很多军事战争当中&#xff0c;这是他所不希望看见的&#xff0c;因此宣布不再继续研究。但历史和科技总是随时间不断…...

angular相关知识点总结

创建 angualr 组件和传值 angular组件其实就是个xxx.component.ts,本质还是ts文件一个html文件 1.创建组件&#xff1a;在Angular中&#xff0c;可以使用命令行工具ng generate component创建一个新组件。例如&#xff1a; ng generate component my-component这将创建一个名…...

大坝安全监测系统:水库“守坝人”!

一、项目背景 随着社会经济的迅速发展&#xff0c;我国水资源利用率越来越高&#xff0c;各类水利水电工规模进一步扩大。在抗洪救灾、水利发电等方面带来巨大的经济和社会效益。但受多种因素影响&#xff0c;大坝的安全问题日益严重。大量工程实践证明&#xff0c;为保证大坝…...

CentOS7安装配置OpenVNP连接远端服务器

在项目当中需要访问一个三方接口及数据库&#xff0c;但是需要在CentOS7服务器上先配置OpenVPN&#xff0c;然后才能连接&#xff0c;现将整体配置过程记录如下。 安装 yum -y install epel-release yum -y install openvpn 查看版本 openvpn --version 配置客户端证书 打开…...

04- Matplotlib数据可视化详解 (数据库)

Matplotlib的亮点: import matplotlib.pyplot as plt # 导包plt.figure(figsize (9, 6) , 设置图片大小plt. plot(x, y), 画图绘制网格线: 线型, 颜色, 透明度plt.grid(linestyle --, color green, alpha0.75) # linestyle: 样式, color: 颜色, alpha: 透明度plt.axis(…...

高性能MySQL -- 查询性能优化

一般来说一个好的程序&#xff1a;查询优化&#xff0c;索引优化&#xff0c;库表结构要同时进行优化。今天我们来讲一下查询优化。 我们需要对MySQL的架构有基本认知&#xff0c;所以这里贴一张图大家看看&#xff1a; 图片来自于《小林coding》 为什么从查询会慢&#xff1…...

Android Binder机制之一(简介)

目录 前言 一、Android 进程间通信方式 二、Binder架构图 三、Binder涉及角色 3.1 Binder驱动 3.2 Binder实体 3.3 Binder引用 3.4 远程服务 3.5 ServiceManager守护进程 四、涉及源码 前言 这是本人第N次看Binder 相关知识了&#xff0c;其实每次看都有新的收获&…...

《SOC芯片研究框架》深度科普,发展趋势、技术特点、产业链一文看懂

片上系统SoC&#xff08;System on Chip&#xff09;&#xff0c;即在一块芯片上集成一整个信息处理系统&#xff0c;简单来说 SoC芯片是在中央处理器CPU的基础上扩展音视频功能和专用接口的超大规模集成电路&#xff0c;是智能设备的“大脑”。随着半导体工艺的发展&#xff0…...

WebRTC中的ICE

ICE简介 ICE是用于UDP媒体传输的NAT穿透协议&#xff08;适当扩展也可以支持TCP&#xff09;&#xff0c;它需要利用STUN和TURN协议来完成工作。 STUN协议提供了获取一个内网地址对应的公网地址映射关系&#xff08;NAT Binding&#xff09;的机制&#xff0c;并且提供了它们…...

了解webpack

文章目录一、webpack是什么&#xff1f;二、为什么要使用webpack三、webpack的五个核心概念四、安装webpack提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、webpack是什么&#xff1f; 本质上&#xff0c;webpack 是一个用于现代 JavaScript 应用程…...

泉州响应式网站建设/品牌推广平台

1.新建一个xib文件描述一个view的内部结构(假设叫做MJTgCell.xib)2.新建一个自定义的类(自定义类需要继承自系统自带的view, 继承自哪个类, 取决于xib根对象的Class) 3.新建类的类名最好跟xib的文件名保持一致(比如类名就叫做MJTgCell)4.将xib中的控件 和 自定义类的.m文件 进…...

wordpress检测登录ip/八戒

来源&#xff5c;金角财经编辑&#xff5c;周大锤你知道每天中午吃的外卖&#xff0c;都是怎么做出来的吗&#xff1f;当订单通过手机发送到商家的打印机里&#xff0c;后厨响起的不是灶火声&#xff0c;而是微波炉转动的轰鸣。按照订单&#xff0c;商家会从冷库里拿出装着菜的…...

用vs做web网站时下拉框/慧聪网

P1018 乘积最大 题目描述 今年是国际数学联盟确定的“2000――世界数学年”&#xff0c;又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛&#xff0c;组织了一场别开生面的数学智力竞赛的活动&#xff0c;你的一个好朋友XZ也有幸得以参加。活动中&#…...

企业手机网站建设流程/营销方案ppt

1 缘起 因为一次开发任务, 需要通过ES查询数据,在自测的过程中,由于连接ES异常, 请教同事,他同时分享了操作ES的方法:Kibana的Dev tools, 并娴熟地查询索引数据和数据映射关系,我之前没有在项目中使用过ES, 并且没有通过Kibana操作过ES,这是一次新的学习过程,非常感…...

做喜报的网站/百度竞价排名黑幕

参加了一个程序设计大赛&#xff0c;有点数学建模的模式&#xff0c;差不多是校级的&#xff0c;而且看之前的题目都是比较简单&#xff0c;有的就是我们的实验题或者课设题目&#xff0c;所以还是想水一水的&#xff08;万恶之源***&#xff09; 题目是这样的 题目 请开发一个…...

誓做中国最大钓鱼网站/手游推广平台哪个好

在面向对象程序设计过程中&#xff0c;有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源&#xff0c;它是系统性能提高的一个瓶颈。例如&#xff0c;围棋和五子棋中的黑白棋子&#xff0c;图像中的坐标点或颜色&#xff0c;局域网中的路…...