系统架构设计师-软件架构设计(2)

目录

一、基于架构的软件开发方法(ABSD)

        1、架构需求 

                1.1 需求获取

                1.2 标识构件

                1.3 架构需求评审

        2、架构设计

                2.1 提出架构模型

                2.2 映射构件

                2.3 分析构件的相互作用

                2.4 产生架构

                2.5 设计评审

        3、架构文档化

        4、架构复审

        5、架构实现

                5.1 分析与设计

                5.2 构件实现

                5.3 构件组装

                5.4 系统测试 

        6、架构演化

                6.1 需求变化归类

                6.2 制定架构演化计划

                6.3 构件变动

                6.4 更新构件的相互作用

                6.5 构件组装与测试

                6.6 技术评审

二、软件架构风格

        1、数据流风格

        2、调用/返回风格 

        3、独立构件风格

        4、虚拟机风格

        5、以数据为中心                


一、基于架构的软件开发方法(ABSD)

        概念:

        · ABSD是架构驱动,即强调由业务【商业】、质量和功能需求的组合驱动架构设计。

        · ABSD方法有三个基础。第一个基础是功能的分解。在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;第二个基础是通过选择架构风格来实现质量和业务需求;第三个基础是软件模版的使用。

        · 视角与视图:从不同的视角来检查,所以会有不同的视图。

        · 用例用来捕获功能需求、特定场景【刺激、环境、响应】用来捕获质量需求。

         

        开发过程:     

                ABSD模型把整个软件开发过程划分为:架构需求、架构设计、架构文档化、架构复审、架构实现、架构演化。

                ABSD能很好的【支持软件重用】

                ABSD方法是一个自顶向下,递归细化的方法。

                软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。

        1、架构需求 

                1.1 需求获取

                        架构需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。如果以前有类似的系统架构的需求,我们可以从需求库中取出,加以利用和修改,以节省获取需求的时间,减少重复劳动,提高开发效率。

                1.2 标识构件

                        (1)生成类图

                        (2)对类进行分组

                                与其他隔离的类形成一个组,由概括关联的类组成一个附加组,由聚合或合成关联的类组成一个附加组

                        (3)把类打包成构件

                                把类簇打包成构件,这些构件可以分组合并成更大的构件

                1.3 架构需求评审

                        由分析人员,客户,设计人员,测试人员组成小组,检查需求是否真实,类的分组是否合理,构件的合并是否合理

        2、架构设计

                2.1 提出架构模型

                        选择一个合适的架构风格,该模型为将来的实现和演化建立了目标。

                2.2 映射构件

                        把已标识的构件映射到架构中,将产生一个中间结构,它只包含适合架构模型的构件。 

                2.3 分析构件的相互作用

                2.4 产生架构

                        当决定了关键构件之间的相互作用后,就可以在中间结构的基础上进行精化,得到软件架构。

                2.5 设计评审

                        邀请独立于系统开发的外部人员对架构进行评审。

        3、架构文档化

                 架构文档化过程的主要输出结果是架构规格说明测试架构需求的质量设计说明书这两个文档。

                文档的完整性质量是软件架构成功的关键因素。

                关于文档的三大注意事项:

                (1)文档要从使用者的角度进行编写。

                (2)必须分发给所有与系统有关的开发人员 。

                (3)且必须保证开发者手上的文档是最新的。

        4、架构复审

                架构复审【架构评估】的目的是标识潜在的风险,及早发现架构设计中的缺陷和错误。

        5、架构实现

                5.1 分析与设计

                        在架构说明书中,已经定义了系统中构件与构件之间的关系,构件接口约束对外唯一代表了构件,所以可以从构件库中直接查找符合接口约束的构件

                5.2 构件实现

                        必要时开发新的满足要求的构件。

                5.3 构件组装

                5.4 系统测试 

                        包括单个构件的功能性测试和被组装应用的整体功能和性能测试

        6、架构演化

                6.1 需求变化归类

                        对需求变化进行归类,使变化的需求与已有构件对应。对找不到对应构件的需求变动,在后续工作中将创建新的构件来对应。

                6.2 制定架构演化计划

                6.3 构件变动

                        修改,增加或删除构件,要对修改和增加的构件进行功能性测试。

                6.4 更新构件的相互作用

                6.5 构件组装与测试

                6.6 技术评审

                

二、软件架构风格

         架构风格定义了用于描述系统的术语表和一组指导构件系统的规则。

        1、数据流风格

                前一步的处理结果是后一步的输入内容【数据驱动】。

                优点:

                (1)松耦合【高内聚-低耦合】(2)良好的重用性/可维护性

                (3)可扩展性【标准接口适配】(4)良好的隐蔽性(5)支持并行

                缺点:

                (1)交互性差(2)复杂性较高(3)性能较差【每个过滤器都需要解析与合成数据】 

                典型实例:

                (1)传统编译器(2)网络报纹处理

                 数据流风格分两种:

                (1)批处理序列

                        大量整体数据、无需用户交互

                (2)管道-过滤器

                        流式数据、弱用户交互。

                        

        2、调用/返回风格

                调用/返回风格分三种: 

                (1)主程序/子程序:面向过程。

                        主程序/子程序风格是结构化开发时期的经典架构风格。

                (2)面向对象:对象的方法调用。

                (3)分层架构风格:层与层之间的方法调用。                

                        优点:

                        (1)良好的重用性,只要接口不变可用在其它处(2)可维护性好

                        (3)可扩展性好,支持递增设计

                        缺点:

                        (1)并不是每个系统都方便分层(2)很难找到一个合适的、正确的层次抽象方法 

                        (3)不同层次之间耦合度高的系统很难实现

                        特点:

                        (1)各个层次的组件形成不同功能级别的虚拟机

                        (2)多层相互协同工作,并且实现透明

        3、独立构件风格

                独立构件风格主要强调系统中的每个构件都是相对独立的个体 ,他们之间不直接通信,以降低耦合度,提升灵活性。

                独立构件风格分两种:

                (1)进程通信

                        构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程 ,消息传递的方式可以是点到点、异步和同步方式及远过程调用等。

                        例:A服务 调用 B服务

                (2)事件驱动系统(隐式调用) 

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

                 与调用返回风格区别:事件管理机制

                优点:

                (1)松耦合(2)良好的重用性/可修改性/可扩展性 

                缺点:

                (1)构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序。

                (2)数据交换问题

                (3)既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。

                特点:

                 系统由若干子系统构成且成为一个整体;系统有统一的目标;子系统有主从之分;每一子系统有自己的事件收集和处理机制。

        4、虚拟机风格

                 虚拟机风格分两种:

                (1)解释器

                         

                (2)规则为中心

                        基于规则的系统构成:规则集、规则解释器规则/数据选择工作内存,一般用在人工智能领域和DSS(决策支持系统)中。                        

                        

        5、以数据为中心(仓库风格)

         以数据为中心风格分三种:

        (1)数据库系统

                特点:以数据为中心

        (2)黑板系统

                例:语音识别、知识推理。一般基于数据库系统

        (3)超文本系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取大疆无人机的飞控记录数据并绘制曲线

机型M350RTK,其飞行记录文件为加密的,我的完善代码如下 gitgithub.com:huashu996/DJFlightRecordParsing2TXT.git 一、下载安装官方的DJIFlightRecord git clone gitgithub.com:dji-sdk/FlightRecordParsingLib.git飞行记录文件在打开【我的电脑】&am…

结构型设计模式之装饰器模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…

LiveNVR监控流媒体Onvif/RTSP功能-支持无人机、IPC等设备RTMP推流转码分发H5无插件播放也支持GB28181输出

LiveNVR支持无人机、IPC等设备RTMP推流转码分发H5无插件播放也支持GB28181输出 1、无人机推流转国标2、获取RTMP推流地址2.1、RTMP推流地址格式2.2、推流地址示例 2、设备RTMP推流3、配置拉转RTMP3.1、直播流地址格式3.2、直播流地地址示例3.3、通道配置直播流地址 4、配置级联…

深入浅出多种开发语言对接淘宝京东1688阿里巴巴等电商平台,获取实时商品详情数据API接口介绍

api接口详解大全?优秀的设计是产品变得卓越的原因设计API意味着提供有效的接口,可以帮助API使用者更好地了解、使用和集成,同时帮助人们有效地维护它每个产品都需要使用手册,API也不例外在API领域,可以将设计视为服务器和客户端之…

IDE /完整分析C4819编译错误的本质原因

文章目录 概述基本概念代码页标识符字符集和字符编码方案源字符集和执行字符集 编译器使用的字符集VS字符集配置 有何作用编译器 - 源字符集编译器 -执行字符集 Qt Creator下配置MSVC编译器参数动态库DLL字符集配置不同于可执行程序EXE总结 概述 本文将从根本原因上来分析和解…

属猴人性格及一生运势怎么样?

生肖属猴的人聪明,才华出众,是个非常会处理人际关系的生肖, 开朗,大方,人缘好,而且能说会道,嘴巴甜,也特别擅长社交,喜欢热闹, 所以属猴人不管在哪都容易受到…

数仓学习---13、报表数据导出

星光下的赶路人star的个人主页 莫见长安行乐处,空令岁月易蹉跎 文章目录 一、报表数据导出1.1 MySQL建库建表1.1.1 创建数据库1.1.2 创建表 1.2 数据导出1.2.1 DataX配置文件生成脚本1.2.2 编写每日导出脚本 一、报表数据导出 为方便报表应用使用数据,需…

Java诊断利器 Arthas-- 一款释放潜力的神器

嘿,你是不是对Java开发中的调试和诊断问题感到头疼? 别担心,我要告诉你一个秘密武器!它就像是一位超级英雄,能够释放你的潜力,解决你的烦恼!它的名字叫做Arthas,是一款Java诊断利器…

手写Nacos基本原理——服务注册 配置管理

手写Nacos基本原理 一、背景介绍二、 思路方案三、过程nacosService代码pom文件配置文件具体类 nacosSDK代码pom文件配置类具体类 serviceA代码pom文件配置文件具体类 serviceB代码pom文件配置文件具体类 实现效果四、总结五、升华 一、背景介绍 之前在项目开发的过程中&#…

C# List 详解五

目录 26.GetType() 27.IndexOf(T) 28.IndexOf(T, Int32) 29.IndexOf(T, Int32, Int32) 30.Insert(Int32, T) 31.InsertRange(Int32, IEnumerable) 32.LastIndexOf(T) 33.LastIndexOf(T, Int32) 34.LastIndexOf(T, Int32, Int32) …

【CAS6.6源码解析】调试Rest API接口

CAS的web层默认是基于webflow实现的,ui和后端是耦合在一起的,做前后端分离调用和调试的时候不太方便。但是好在CAS已经添加了支持Rest API的support模块,添加相应模块即可。 文章目录 添加依赖并重新build效果 添加依赖并重新build 具体添加…

32位Cortex-M4 MCU:LPC54607J256ET180E、LPC54605J512BD100K 180MHz嵌入式微控制器

LPC546xx 32 位微控制器(MCU) 具有丰富的外设集、极低的功耗和增强的调试功能。 LPC546xx MCU系列采用ARM Cortex-M4内核,可提供以太网支持,并设有一个TFT LCD控制器和两个CAN FD模块。LPC546xx MCU旨在提高灵活性和性能可扩展性,可提供高达1…

Vue3 Vite electron 开发桌面程序

Electron是一个跨平台的桌面应用程序开发框架,它允许开发人员使用Web技术(如HTML、CSS和JavaScript)构建桌面应用程序,这些应用程序可以在Windows、macOS和Linux等操作系统上运行。 Electron的核心是Chromium浏览器内核和Node.js…

ABAP 为N的一个数,在原来基础上浮动在-30~30

需求:为N的一个数,在原来基础上浮动在-30~30 *&---------------------------------------------------------------------* *& Report ZZZZ111 *&---------------------------------------------------------------------* *& 需求&…

【算法基础:搜索与图论】3.4 求最短路算法(Dijkstrabellman-fordspfaFloyd)

文章目录 求最短路算法总览Dijkstra朴素 Dijkstra 算法(⭐原理讲解!⭐重要!)(用于稠密图)例题:849. Dijkstra求最短路 I代码1——使用邻接表代码2——使用邻接矩阵 补充:稠密图和稀疏…

npm i babel-plugin-import -D之后报错

替换modules/.bin/XX文件 1.vue-cli-service #!/bin/sh basedir$(dirname "$(echo "$0" | sed -e s,\\,/,g)")case uname in*CYGWIN*) basedircygpath -w "$basedir";; esacif [ -x "$basedir/node" ]; then"$basedir/node"…

【NLP】视觉变压器与卷积神经网络

一、说明 本篇是 变压器因其计算效率和可扩展性而成为NLP的首选模型。在计算机视觉中,卷积神经网络(CNN)架构仍然占主导地位,但一些研究人员已经尝试将CNN与自我注意相结合。作者尝试将标准变压器直接应用于图像,发现在…

CAXA中.exb或者.dwg文件保存为PDF

通常CAXAZ中的文件为.exb或者.dwg格式,我们想打印或者保存为PDF文件格式,那么就用一下的方法: CAXA文件如图所示: 框选出你要打印的图纸!!!! 我们选择"菜单"->"…

【算法基础:搜索与图论】3.5 求最小生成树算法(PrimKruskal)

文章目录 最小生成树介绍朴素Prim算法算法思路⭐例题:858. Prim算法求最小生成树 Kruskal算法算法思路⭐例题:859. Kruskal算法求最小生成树 最小生成树介绍 最小生成树 有关树的定义 生成子图:生成子图是从原图中选取部分节点以及这些节点…

Keepalived热备、Keepalived+LVS、HAProxy监控及后端服务器健康检查、负载均衡调度器对比

day02 day02KeepAlived高可用集群配置高可用的web集群监控本机80端口,实现主备切换实现原理实施配置高可用、负载均衡的web集群配置高可用、负载均衡HAProxy配置haproxy负载均衡调度器比较LVS(Linux Virtual Server)NginxHAProxy KeepAlive…