《软件体系结构》_具有进程分配的大型acs系统的物理视图-程序员宅基地

技术标签: 软件工程  

第一章

工学的定义:

工学: 工程学科的总称,应用学科,用数学和自然科学原理设计有用物体进程。。

研究自然学科的应用方式,研究工程进行的一般规律

工程:

  • 狭义: 以目标为依据,应用知识和技术,一群人有组织将现有实体转换为有价值的过程
  • 广义: 一群人达到目的,长周期进行协调活动的过程

软件工程:

用工程化方法,构建和维护有效的,实用的和高质量的软件的学科,因为有软件危机所以需要

软件危机的定义:

表现: 

  • 成本日益增长
  • 开发进度难以控制
  • 软件质量差
  • 维护困难

产生原因

  • 用户需求不明确: 用户不清楚需求; 用户描述不清; 开发过程中提出修改; 开发人员理解有误
  • 缺乏正确的理论指导
  • 软件规模越来越大
  • 软件复杂度越来越高

工程的内涵: 研究,设计,开发,生产,施工,操作,管理

科学与工程的区别: 

  • 目的: 科学在于发现认知;工程在于发明运用
  • 方法: 分析归纳; 创造演绎
  • 成本: 不计代价; 精打细算
  • 贡献: 知识开拓; 生活改善

软件重用:

软件重用:

多次不同软件开发过程中,重复使用相同或相近的软件元素的过程

可重用元素:

程序代码,设计文档,需求分析文档,测试用例,设计过程,领域知识

构件: 功能!

  • 语义完整,语法正确,有课重用价值的单位软件。
  • 是软件重用过程中明确辨识的系统
  • 结构上是语义描述,通信接口和实现代码的复合体

构件实现:

具体实现构件功能的逻辑系统,代码构件

构件应用过程:

构件获取

领域工程

重用技术与领域之间的关系:

  • 获取途径: 修改,提取,购买

构件管理

构件描述:

  • 实现方法
  • 实现体
  • 注释
  • 生产者
  • 生产日期
  • 规模
  • 价格
  • 版本
  • 关联构件

构件描述: 管理角度的细节刻画

构件模型: 本质的抽象描述

构件组织: 

  • 要求: 支持构件库维护,查找:精确,模糊,功能行为检索,精确行为描述,易于使用
  • 方法: 关键字法
  • 方法:刻面法

  • 超文本法:

构件分类:

  • 商业化构件种类分为: 用户界面,数据库; 商务应用,工具、网络通信,核心技术
  • 构件形态分类: 独立、成熟; 有限制; 适应性; 可修改的

人员及权限管理

  • 公共用户
  • 注册用户
  • 构建提供者
  • 一般系统管理员
  • 超级系统管理员

构件重用

构件检索

基于关键字法:

  • 浏览;
  • 关键字匹配

优点: 简单易行

缺点: 用户不一定能恰当运用关键字进行描述

基于刻面法
  • 构造查询
  • 检索构件
  • 排序

优点:方便相似构件的查找

缺点:构造查询困难

基于超文本法
  • 一个或多个关键字匹配
  • 返回相关文档
  • 用户通过超链接跳转浏览

优点: 人性化操作

缺点: 迷失,效率低



理解和评价

理解的目标:

  • 构件的功能,行为
  • 相关领域知识
  • 约束条件、例外
  • 可预见的修改部分以及修改方法

理解的手段:

评价:

  • 成功次数
  • 修改量
  • 健壮性
  • 性能度量

构件组成
  • 基于功能
  • 基于数据
  • 面向对象

软件体系结构的兴起和发展

软件体系结构的定义

核心是在系统开发过程中尽早处理质量属性相关问题。

软件体系结构是一个程序/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间演化的指导方针

  • 软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。
  •      处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。
  • 这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。

       

四个角度
  • 概念角度描述系统的主要构件及它们之间的关系;
  • 模块角度包含功能分解与层次结构;
  • 运行角度描述了一个系统的动态结构;
  • 代码角度描述了各种代码和库函数在开发环境中的组织。

软件体系结构的意义
  • 早期设计决策的体现
  • 风险承担者交流的手段
  • 可传递可重用的模型
  • 高层复用制品,企业战略财富

软件体系结构的发展历程

第贰章

软件体系结构建模

建模: 建立系统模型的过程

软件体系结构建模: 如何对软件体系结构建立系统模型

每个软件系统都有多个风险承担者: 最终用户,开发人员,系统工程师,项目经理

“4+1”视图模型

  • 逻辑视图的特性: 自主性,持久性,依赖性,分布性
  • 逻辑与开发视图
  • 进程视图的产生
  • 4+!视图模型的剪裁

  • 每个视图只关心一个侧面,结合在一起才反映系统的软件体系结构的全部内容

  • 在每个视图上均独立地支持Perry & Wolf 的公式,即定义一个所使用的元素集合(构件、容器、连接件)

逻辑视图:
  1. 整个系统的抽象结构表述
  2. 关注系统提供最终用户的功能
  3. 不涉及具体的变异即输出和部署
  4. 常使用BOOCH标记法,在UML中类图表示
  5. 多数使用面向对象风格
  6. 主要内容保持一个单一的,内聚的对象模型贯穿整个系统。

开发视图
  1. 侧重软件模块的组织和管理,为编程人员服务
  2. 通过程序库或子程序进行组织,由不同人员开发
  3. 考虑内部需求,充分考虑软件开发的容易程度,重用性,软件的通用性,充分考虑由于具体开发工具的不同带来的局限性
  4. 采用层次风格,采用4-6层子系统,仅进行相邻交互,层次越低,通用性越强

关于层次的引出

进程视图
  • 侧重系统的运行特性
  • 关注非功能需求: 性能; 可用性; 并发性
  • 定义逻辑视图中的各个类的操作是在哪一个线程中被执行
  • 可描述多层抽象
  • 每个级别分别关注不同的方向
  • 最高层抽象中:进程结构 = 构成一个执行单元的一组任务; 独立、分补; 通过逻辑网络相互通信。
物理视图:
  • 把软件映射到硬件上
  • 关注系统性能、规模、可靠性

具有进程分配的小型ACS系统的物理视图

具有进程分配的大型ACS系统的物理视图

场景
  • 是其他视图的冗余
  • 作用: 作为驱动因素发现架构设计中的架构元素; 作为设计结束后的一项验证和说明功能,原型测试

核心模型

生命周期

抽象模型

构件定义:构件是一个数据单元或一个计算单元,由构件的对象的集合,属性的集合,动作的集合和端口的集合组成

构件及其关系的抽象描述

构件间关系的定义:

  • 顺序结构(顺序运算)
  • 选择结构(选择运算)
  • 循环结构

                                          

连接件和软件体系结构的抽象模型定义

连接体的抽象描述: 

连接件是构件运算的实现,它是一个6元组         <ID,Role,Beha,Msgs,Cons,Non-Func>

其中,Role为连接件和构件的交互点的集合,它由一个四元组定义    

 Role=<Id,Action,Event,LConstrains>

连接体的抽象定义: 设论域为U

  1. 构件是一个软件体系结构
  2. 连接体是一个软件体系结构
  3. 构件经有限次连接(运算后)是软件体系结构。

 软件体系结构记为A=<C,O>,其中C表示组成体系结构的构件集合,O表示构件运算的集合

软件体系结构性质:

  1. 封闭性:即构件与构件、构件与体系结构、体系结构与体系结构连接后仍是一个体系结构。 
  2. 层次性:即体系结构可由构件连接而成,而体系结构又可以再经过连接组成新的更大的体系结构。
  3. 可扩充性:即一个满足条件的新构件可以通过连接加入到结构中。

第叁章 

软件体系结构风格概述

软件体系风格

  • 描述特定应用领域中系统组织方式的惯用模式
  • 反映众多系统所共有的结构和语义特性
  • 指导如何将各个模块和子系统有效组织成一个完整系统

决定风格

  • 控制原则
  • 质量属性

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

  • 构件和连接件的类型是什么?
  • 可容许的结构模式是什么?
  • 基本的计算模型是什么?
  • 风格的基本不变性是什么?
  • 其使用的常见例子是什么?
  • 使用此风格的优缺点是什么?
  • 其常见的特例是什么?

经典软件体系系结构风格

管道-过滤器风格

优点
  • 构件间耦合关系降低,易于分解问题,实现重用
  • 易于维护和扩展
  • 为系统的运行分析提供便捷条件
  • 支持并发计算

缺点
  • 不适合处理交互频繁的应用
  • 数据解析,合成麻烦

扩展形式
  • 管线
  • 有界管道
  • 批处理

面向对象风格

优点
  • 封装性,便于重用
  • 可实现交互

缺点
  • 调用使得修改被传播

事件驱动风格(基于事件的隐式调用)

说明
  • 系统运行得以推进的驱动力来源是:广播媒介
  • 事件:监听事件、声明事件
  • 构成: 事件消费者,事件生产者,事件管理器
  • 特征: 面向对象风格的变体; 事件的触发者不知道哪些构件会被这些事件影响;无法预知和假定构件的处理顺序。
  • 与面向对象风格的融合

事件驱动的基本结构

显式调用与隐式调用应用案例
电梯系统类图

电梯模型事件及其子类组织结构

乘客在第一层电梯进出的协作图

分层系统

工作机制
  • 每个层次为上一层提供服务
  • 同时作为用户调用下层的功能
  • 严格的分层
  • 半透明的分层

优点
  • 支持基于抽象程度递增的系统设计
  • 良好的扩展性
  • 支持重用

缺点
  • 层次划分困难
  • 适用性受限

数据共享风格

要素
  • 两类构件: 中央数据单元 ; 外部构件
  • 控制策略: 两类构件间的交互方式

分类
  • 传统数据库型(被动)
  • 黑板系统(主动)

黑板系统

中央数据单元
  • 是系统的核心
  • 存储数据  +  系统状态数据
知识源

相互独立,通过黑板完成交互

  • 控制单元的位置
  • 由来
  • 任务
  • 目标
  • 动作
  • 表示方式
控制单元

非独立单元

优点
  • 易于增加数据的生产者和消费者
  • 良好的知识库扩展性
  • 易于保证数据的同步、一致性

专家系统

C2风格

  • 层次网络
  • 数据驱动

组织规则
  • 顶、底
  • 构件不能直接相连
  • 连接件之间自由连接
  • 连接件的直接相连是有序的
工作方式

请求 + 通知

特点
  • 基底独立性
  • 构件之间交互只能通过消息传递实现
  • 多线程

构件结构

客户/服务器风格

结构

服务器任务
  • 保证数据库安全性
  • 控制数据库并发访问
  • 确保数据的一致性
  • 数据备份与恢复

客户端任务
  • 提供交互界面
  • 提交请求,接收信息
  • 对客户端数据执行应用逻辑要求

工作流程机制

优点
  • 对软硬件变化的适应性和灵活性,易于系统扩充和缩小
  • 数据和事务处理能力较强,服务器端负荷轻
  • 模型简单,易于理解

缺点
  • 开发成本高
  • 不便于使用新技术
  • 软件维护升级困难

三层客户/服务器风格

传统二层C/S的弊端

  • 软硬件的组合和集成能力有限,难以扩展至大型项目中
  • 客户机负荷过重
  • 数据安全性不好

结构

工作流程机制

物理结构

优点

  • 在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性
  • 允许更灵活有效地选用相应的平台和硬件系统,在处理负荷能力上与处理特性上分别适应于结构清晰的三层
  • 应用的各层可以并行开发,可以选择各自最适合的开发语言
  • 利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层

要注意的关键问题

  • 三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能
  • 设计时必须慎重考虑三层间的通信方法、通信频度及数据量

浏览器/服务器风格

结构

优点

  • 维护升级简单、高效
  • 服务覆盖范围大  I. 空间    II. 类别平台

劣势

  • 应用服务器负荷重——数据处理和响应速度慢
  • 安全控制能力弱
  • 数据动态交互性不强

公共对象请求代理体系结构

原理示意

  • 命名服务
  • 事件服务
  • 事务处理服务
  • 交易服务
  • 生命周期服务
  • 安全服务
  • 通知服务

构成

工作过程

特点

  • 引入中间件做事务代理
  • 实现客户与服务对象的完全隔离
  • 提供软总线机制
  • 基于面向对象的开发

正交软件体系结构

组织结构特征

  • 由完成不同功能的n条线索构成
  • 系统具有m个不同抽象级别的层
  • 线索之间相互独立
  • 系统有公共驱动层和公共数据层

实例

优点

  • 结构清晰,易于理解
  • 易修改,可维护性强
  • 可移植性强,重用粒度较大

基于层次消息总线的体系结构风格

结构

要素

  • 复合构件
  • 原子构件
  • 接口:  消息 + 互补端口
  • 消息总线

静态结构要点

  • 自顶向下层次化分解
  • 总线间无直接的连接

对系统演化的支持

  • 动态增删构件
  • 动态改变构件响应的消息类型
  • 支持消息过滤

异构结构风格

原因

  • 变动最终是绝对的
  • 实际工作中,我们总会遇到一些遗留下来的代码
  • 即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同

不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题

示例

C/S与B/S混合之内外有别模型

C/S与B/S混合之查改有别模型

示例

互联系统构成的系统及其体系结构

互联系统风格

上级系统独立于其从属系统,每个从属系统仅仅是其上级系统模型中所指内容的一个实现,并不属于上级系统功能约束的一部分

特定领域软件体系结构

定义

  • DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合
  • DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成

要点

  • 严格定义的问题域和/或解决域 (I.垂直域    II.水平域 )
  • 具有普遍性,使其可用于领域中某特定应用的开发
  • 对整个领域的适合程度的抽象
  • 具有该领域固定的、典型的,在开发过程中可重用的元素

基本活动(反复迭代,逐步求精)

  • 领域分析
  • 领域设计
  • 领域实现

◇ C2风格案例

上下文关键字(KWIC)问题

任务要求

KWIC索引系统接受一些行,每行有若干词,每个词由若干字符组成;每行都可以循环移位,亦即重复地把第一个字删除,然后接到行末; KWIC把所有行的各种移位情况按照字母表顺序输出

设计中有待思考的问题
  • 处理算法:例如,行的移位可在每行读入后、在所有行读入后、或当排序要求一组移位的行时執行;
  • 数据表示:例如,行、字、字符可以不同的方式存储;类似地,循环移位后的行可以显式或隐式存储(索引和偏移量);
  • 系统功能的增强:例如,限制以某些“修饰词”(a, an, and等)打头的移位结果;支持交互,允许用户从原始输入表中删除一些行等;
  • 效率:时间和空间;
  • 复用:构件被复用的潜力。
方案一:使用共享数据的主程序/子程序
  • 问题分解:输入、移动、按字母表排序、输出
  • 所有计算构件作为子程序协同工作,由主程序顺序调用各个子程序
  • 构件通过共享存储区交换数据



方案贰:抽象数据类型
  • 系统分解为5各模块,每个构件提供了过程集合
  • 每个模块提供一个接口,接口允许其他构件通过调用接口中的过程来访问数据

第伍章: 软件体系结构描述

5.1 软件体系结构描述方法

5.2 软件体系结构描述框架标准

描述框架标准

5.3  软件体系结构描述语言

5.3.1 Unicon

Unicon

构件:

component<identifier>

     <interface>

     <implementation>

end <indentifier>

5.3.2 C2

5.3.3 ACME

5.3.4 Wright

第陆章 基于体系结构的软件开发

6.1 设计模式

6.2 基于体系结构的设计方法

6.3 体系结构的设计与演化

6.4 基于体系结构的软件开发模型

第柒章 软件体系结构评估

7.1 软件体系结构评估概述

7.2 软件体系结构的主要评估方式

7.3 SAAM评估方法

7.4 ATAM评估方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_73895400/article/details/134275164

智能推荐

51单片机的中断系统_51单片机中断篇-程序员宅基地

文章浏览阅读3.3k次,点赞7次,收藏39次。CPU 执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对异常情况或特殊请求进行处理,处理完毕后再返回现行程序断点处,继续执行原程序。void 函数名(void) interrupt n using m {中断函数内容 //尽量精简 }编译器会把该函数转化为中断函数,表示中断源编号为n,中断源对应一个中断入口地址,而中断入口地址的内容为跳转指令,转入本函数。using m用于指定本函数内部使用的工作寄存器组,m取值为0~3。该修饰符可省略,由编译器自动分配。_51单片机中断篇

oracle项目经验求职,网络工程师简历中的项目经验怎么写-程序员宅基地

文章浏览阅读396次。项目经验(案例一)项目时间:2009-10 - 2009-12项目名称:中驰别克信息化管理整改完善项目描述:项目介绍一,建立中驰别克硬件档案(PC,服务器,网络设备,办公设备等)二,建立中驰别克软件档案(每台PC安装的软件,财务,HR,OA,专用系统等)三,能过建立的档案对中驰别克信息化办公环境优化(合理使用ADSL宽带资源,对域进行调整,对文件服务器进行优化,对共享打印机进行调整)四,优化完成后..._网络工程师项目经历

LVS四层负载均衡集群-程序员宅基地

文章浏览阅读1k次,点赞31次,收藏30次。LVS:Linux Virtual Server,负载调度器,内核集成, 阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现。NATTUNDR优点端口转换WAN性能最好缺点性能瓶颈服务器支持隧道模式不支持跨网段真实服务器要求anyTunneling支持网络private(私网)LAN/WAN(私网/公网)LAN(私网)真实服务器数量High (100)High (100)真实服务器网关lvs内网地址。

「技术综述」一文道尽传统图像降噪方法_噪声很大的图片可以降噪吗-程序员宅基地

文章浏览阅读899次。https://www.toutiao.com/a6713171323893318151/作者 | 黄小邪/言有三编辑 | 黄小邪/言有三图像预处理算法的好坏直接关系到后续图像处理的效果,如图像分割、目标识别、边缘提取等,为了获取高质量的数字图像,很多时候都需要对图像进行降噪处理,尽可能的保持原始信息完整性(即主要特征)的同时,又能够去除信号中无用的信息。并且,降噪还引出了一..._噪声很大的图片可以降噪吗

Effective Java 【对于所有对象都通用的方法】第13条 谨慎地覆盖clone_为继承设计类有两种选择,但无论选择其中的-程序员宅基地

文章浏览阅读152次。目录谨慎地覆盖cloneCloneable接口并没有包含任何方法,那么它到底有什么作用呢?Object类中的clone()方法如何重写好一个clone()方法1.对于数组类型我可以采用clone()方法的递归2.如果对象是非数组,建议提供拷贝构造器(copy constructor)或者拷贝工厂(copy factory)3.如果为线程安全的类重写clone()方法4.如果为需要被继承的类重写clone()方法总结谨慎地覆盖cloneCloneable接口地目的是作为对象的一个mixin接口(详见第20_为继承设计类有两种选择,但无论选择其中的

毕业设计 基于协同过滤的电影推荐系统-程序员宅基地

文章浏览阅读958次,点赞21次,收藏24次。今天学长向大家分享一个毕业设计项目基于协同过滤的电影推荐系统项目运行效果:项目获取:https://gitee.com/assistant-a/project-sharing21世纪是信息化时代,随着信息技术和网络技术的发展,信息化已经渗透到人们日常生活的各个方面,人们可以随时随地浏览到海量信息,但是这些大量信息千差万别,需要费事费力的筛选、甄别自己喜欢或者感兴趣的数据。对网络电影服务来说,需要用到优秀的协同过滤推荐功能去辅助整个系统。系统基于Python技术,使用UML建模,采用Django框架组合进行设

随便推点

你想要的10G SFP+光模块大全都在这里-程序员宅基地

文章浏览阅读614次。10G SFP+光模块被广泛应用于10G以太网中,在下一代移动网络、固定接入网、城域网、以及数据中心等领域非常常见。下面易天光通信(ETU-LINK)就为大家一一盘点下10G SFP+光模块都有哪些吧。一、10G SFP+双纤光模块10G SFP+双纤光模块是一种常规的光模块,有两个LC光纤接口,传输距离最远可达100公里,常用的10G SFP+双纤光模块有10G SFP+ SR、10G SFP+ LR,其中10G SFP+ SR的传输距离为300米,10G SFP+ LR的传输距离为10公里。_10g sfp+

计算机毕业设计Node.js+Vue基于Web美食网站设计(程序+源码+LW+部署)_基于vue美食网站源码-程序员宅基地

文章浏览阅读239次。该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:项目技术:Express框架 + Node.js+ Vue 等等组成,B/S模式 +Vscode管理+前后端分离等等。环境需要1.运行环境:最好是Nodejs最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发环境:Vscode或HbuilderX都可以。推荐HbuilderX;3.mysql环境:建议是用5.7版本均可4.硬件环境:windows 7/8/10 1G内存以上;_基于vue美食网站源码

oldwain随便写@hexun-程序员宅基地

文章浏览阅读62次。oldwain随便写@hexun链接:http://oldwain.blog.hexun.com/ ...

渗透测试-SQL注入-SQLMap工具_sqlmap拖库-程序员宅基地

文章浏览阅读843次,点赞16次,收藏22次。用这个工具扫描其它网站时,要注意法律问题,同时也比较慢,所以我们以之前写的登录页面为例子扫描。_sqlmap拖库

origin三图合一_神教程:Origin也能玩转图片拼接组合排版-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏38次。Origin也能玩转图片的拼接组合排版谭编(华南师范大学学报编辑部,广州 510631)通常,我们利用Origin软件能非常快捷地绘制出一张单独的绘图。但是,我们在论文的撰写过程中,经常需要将多种科学实验图片(电镜图、示意图、曲线图等)组合在一张图片中。大多数人都是采用PPT、Adobe Illustrator、CorelDraw等软件对多种不同类型的图进行拼接的。那么,利用Origin软件能否实..._origin怎么把三个图做到一张图上

51单片机智能电风扇控制系统proteus仿真设计( 仿真+程序+原理图+报告+讲解视频)_电风扇模拟控制系统设计-程序员宅基地

文章浏览阅读4.2k次,点赞4次,收藏51次。51单片机智能电风扇控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0042。_电风扇模拟控制系统设计