软件架构设计(二)——领域架构、基于架构的软件开发方法
目录
一、架构描述语言 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中的一类特殊的定义函数的形式,使用它可以定义一个匿名函数。即当你需要一个函数,但又不想费神去命名一个函数,这时候…...
网络安全协议(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运算符
目录二进制相关运算符移位运算符<<>>|(位或运算)参考文档二进制相关运算符 移位运算符 移位运算就是对二进制进行有规律的移位。 tips:进制转换文档链接 << “<<”运算符执行左移位运算。在移位运算过程中,符号位始终保持不变…...
java面试题(十九) Mybatis
4.1 谈谈MyBatis和JPA的区别 参考答案 ORM映射不同: MyBatis是半自动的ORM框架,提供数据库与结果集的映射; JPA(默认采用Hibernate实现)是全自动的ORM框架,提供对象与数据库的映射。 可移植性不同&…...
Linux系统位运算函数以及相应CPU ISA实现收录
以32位数据的二进制表示为例,习惯的写法是LSB在左,MSB在右,注意BIT序和大小端的字节序没有关系。Linux和BIT操作有关的接口在定义在头文件bitops.h中,bitops.h定义有两层,通用层和架构层,对应两个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元素是一个具有引导和导航作用的结构元素,很多企业网站中都有一个非常重要的header元素,一般位于网页的开头,用来显示企业名称、企业logo图片、整个网站的导航条,以及Flash形式的广告条等。在本网站中&am…...
引用和指针傻傻分不清
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🐰引用和指针的区别 🌸从现象上看 🌸从编译上看 &am…...
MySQL面试题:关系型数据库SQL和非关系型数据库NoSQL
文章目录一、四大非关系型数据库与关系型数据库的对比1. 关系型数据库2. 基于列的数据库3. 键值对存储4. 文档存储5. 图形数据库参考文章(金文):四大非关系型数据库类型,你知道多少 参考文章:“行式存储”和“列式存储…...
1.Redis【介绍与安装】
1.常用数据库介绍 mysql的表类型[表引擎.存储引擎],memory表结构和表数据分开存储的,表结构保存在硬盘中,表数据保存在内存中memcache是一款软件,可以使用键值对的格式保存数据到内存中redis是意大利的工程师开发的开源免费的告诉缓存数据库,需要注意的是作者本身只开发了linu…...
DataStore快速上手1-preference
DataStore 概念 DataStore 可以存储两种类型的数据,一种是 preference,一种是 protobuf 每个进程在同一时间内仅能打开一个 DataStore 实例(或者通过其他管理手段来实现多个 DataStore 交替使用) 一个 DataStore 可以视为一张数…...
彻底掌握 MySQL InnoDB 的锁机制
本文是对沈剑大佬锁机制十多篇文章的概括总结,文末有全部链接,还参考了 10 多位其他网友的优秀分享。 1、概要 MySQL 中的锁可以按照粒度分为锁定整个表的表级锁(table-level locking)和锁定数据行的行级锁(row-level locking): 表级锁具有开…...
C++继承
1.继承的概念及定义 1.1继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构&#x…...
动态代理是基于什么原理?
第6讲 | 动态代理是基于什么原理? 编程语言通常有各种不同的分类角度,动态类型和静态类型就是其中一种分类角度,简单区分就是语言类型信息是在运行时检查,还是编译期检查。 与其近似的还有一个对比,就是所谓强类型和弱…...
YOLO-V4经典物体检测算法介绍
在前文我们介绍了YOLO-V1~V3版本都做了哪些事,本文我们继续介绍YOLO-V4版本。YOLO的作者在发表完V3之后,发现YOLO产品被美国军方应用到了很多军事战争当中,这是他所不希望看见的,因此宣布不再继续研究。但历史和科技总是随时间不断…...
angular相关知识点总结
创建 angualr 组件和传值 angular组件其实就是个xxx.component.ts,本质还是ts文件一个html文件 1.创建组件:在Angular中,可以使用命令行工具ng generate component创建一个新组件。例如: ng generate component my-component这将创建一个名…...
大坝安全监测系统:水库“守坝人”!
一、项目背景 随着社会经济的迅速发展,我国水资源利用率越来越高,各类水利水电工规模进一步扩大。在抗洪救灾、水利发电等方面带来巨大的经济和社会效益。但受多种因素影响,大坝的安全问题日益严重。大量工程实践证明,为保证大坝…...
CentOS7安装配置OpenVNP连接远端服务器
在项目当中需要访问一个三方接口及数据库,但是需要在CentOS7服务器上先配置OpenVPN,然后才能连接,现将整体配置过程记录如下。 安装 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 -- 查询性能优化
一般来说一个好的程序:查询优化,索引优化,库表结构要同时进行优化。今天我们来讲一下查询优化。 我们需要对MySQL的架构有基本认知,所以这里贴一张图大家看看: 图片来自于《小林coding》 为什么从查询会慢࿱…...
Android Binder机制之一(简介)
目录 前言 一、Android 进程间通信方式 二、Binder架构图 三、Binder涉及角色 3.1 Binder驱动 3.2 Binder实体 3.3 Binder引用 3.4 远程服务 3.5 ServiceManager守护进程 四、涉及源码 前言 这是本人第N次看Binder 相关知识了,其实每次看都有新的收获&…...
《SOC芯片研究框架》深度科普,发展趋势、技术特点、产业链一文看懂
片上系统SoC(System on Chip),即在一块芯片上集成一整个信息处理系统,简单来说 SoC芯片是在中央处理器CPU的基础上扩展音视频功能和专用接口的超大规模集成电路,是智能设备的“大脑”。随着半导体工艺的发展࿰…...
WebRTC中的ICE
ICE简介 ICE是用于UDP媒体传输的NAT穿透协议(适当扩展也可以支持TCP),它需要利用STUN和TURN协议来完成工作。 STUN协议提供了获取一个内网地址对应的公网地址映射关系(NAT Binding)的机制,并且提供了它们…...
了解webpack
文章目录一、webpack是什么?二、为什么要使用webpack三、webpack的五个核心概念四、安装webpack提示:以下是本篇文章正文内容,下面案例可供参考 一、webpack是什么? 本质上,webpack 是一个用于现代 JavaScript 应用程…...
泉州响应式网站建设/品牌推广平台
1.新建一个xib文件描述一个view的内部结构(假设叫做MJTgCell.xib)2.新建一个自定义的类(自定义类需要继承自系统自带的view, 继承自哪个类, 取决于xib根对象的Class) 3.新建类的类名最好跟xib的文件名保持一致(比如类名就叫做MJTgCell)4.将xib中的控件 和 自定义类的.m文件 进…...
wordpress检测登录ip/八戒
来源|金角财经编辑|周大锤你知道每天中午吃的外卖,都是怎么做出来的吗?当订单通过手机发送到商家的打印机里,后厨响起的不是灶火声,而是微波炉转动的轰鸣。按照订单,商家会从冷库里拿出装着菜的…...
用vs做web网站时下拉框/慧聪网
P1018 乘积最大 题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中&#…...
企业手机网站建设流程/营销方案ppt
1 缘起 因为一次开发任务, 需要通过ES查询数据,在自测的过程中,由于连接ES异常, 请教同事,他同时分享了操作ES的方法:Kibana的Dev tools, 并娴熟地查询索引数据和数据映射关系,我之前没有在项目中使用过ES, 并且没有通过Kibana操作过ES,这是一次新的学习过程,非常感…...
做喜报的网站/百度竞价排名黑幕
参加了一个程序设计大赛,有点数学建模的模式,差不多是校级的,而且看之前的题目都是比较简单,有的就是我们的实验题或者课设题目,所以还是想水一水的(万恶之源***) 题目是这样的 题目 请开发一个…...
誓做中国最大钓鱼网站/手游推广平台哪个好
在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路…...