软件体系结构

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了软件体系结构脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

目录

  • 前言
  • 概述
    • 软件重用
      • 可重用的元素
      • 构件
      • 构件模型(规模——越大越好?越小越好?)
      • 构件获取
      • 可重用技术和领域之间的关系
      • 构件管理
    • 软件体系结构
      • 软件体系结构的反作用
      • 软件体系结构的商业周期
  • 软件体系结构建模
    • 4+1模型视图
      • 逻辑视图
      • 开发视图
      • 进程视图
      • 物理视图
      • 场景
    • 软件体系结构的生命周期
    • 软件体系结构设计核心模型
      • 构件
      • 构件之间的关系
      • 连接件
      • 配置
    • 软件体系结构
  • 软件体系结构风格
    • 管道过滤器风格
    • 数据抽象和面向对象组织
    • 事件驱动风格
    • 分层系统
    • 仓库系统及知识库
      • 黑板系统
    • C2(层次网络+消息驱动)
  • 全局软件体系结构

前言

按照惯例,在这里写下我对软件体系结构的一点理解和认识 软件工程是一门研究利用工程化的方法,构建维护有效的实用的高质量的软件的学科,东北林业大学软件工程专业核心课,就是按照软件生命周期的课来安排的,将每一个生命周期中的过程都抽象成一门课来给学生讲解,软件体系结构这门课是继需求分析和系统分析之后的一门课 需求分析教会了我们如何进行需求获取、需求分析和需求验证,最后形成需求规格说明书,系统分析教会了我们如何抽象出合理的类图,而软件体系结构讲的是如何把类抽象成构件以及如何合理的安排这些构件(或者类)

概述

软件重用

在两次或多次开发的过程中,重复使用相同或相近的元素的过程

可重用的元素

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

构件

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

构件模型(规模——越大越好?越小越好?)

青鸟模型:外部接口+内部接口

软件体系结构

构件获取

  • 开发新的构件
  • 购买
  • 从历史遗留工程中提取
  • 去构件库中查找需要的构件
  • 由现有构件做适应性修改

可重用技术和领域之间的关系

领域具有内聚性和稳定性——前提 可重用信息具有领域特定性——约束

构件管理

对大量的构件进行有效的管理,方便构建的存储、检索和提取 构件的描述;名称、功能、参考函数、版本号等

关键词法

软件体系结构

优点:简单易行 缺点:不便于查询

刻面法

软件体系结构

优点:方便查找相似构件 缺点:查询程序太难做

超文本法

软件体系结构

优点:操作人性化 缺点:容易差跑题了

软件体系结构

软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。 软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。

软件体系结构

软件体系结构的反作用

  • 影响开发组织结构
  • 影响开发组织目标
  • 影响客户对下一个系统的要求
  • 构建过程中丰富团队经验,影响后续设计
  • 改变行业人员学习和实践的技术环境

软件体系结构的商业周期

软件体系结构

软件体系结构建模

软件体系结构的建立应位于需求分析之后,软件设计之前,在建立软件体系结构时,设计师主要从结构的角度对整个系统进行分析,选择恰当的构件、构件间的相互作用以及他们的约束,最后形成一个系统框架以满足用户的需求,为软件设计奠定基础。

4+1模型视图

软件体系结构

每个视图只关心系统的一个侧面,结合在一起才能反映系统的软件体系结构的全部内容 在每个视图上均独立地应Perry & Wolf 的公式,即定义一个所使用的元素集合(构件、容器、连接件)

软件体系结构

逻辑视图

主要是整个系统的抽象结构表述 关注系统提供最终用户的功能 不涉及具体的编译即输出和部署 通常用BOOCH标记法,或在UML中用类图表示

软件体系结构

开发视图

主要侧重软件模块的组织和管理,为编程人员服务 软件可以通过程序库或子程序进行组织,从而可以由不同的人员进行开发 主要考虑软件内部需求,要充分考虑软件开发的容易程度,重用性,软件的通用性,充分考虑由于具体开发工具不同而带来的局限性。

软件体系结构

  • 常用层次风格
  • 采用4-6层子系统
  • 仅进行相邻交互
  • 层次越低,通用性应越强

    软件体系结构

进程视图

侧重系统的运行特性 关注非功能需求(性能、可用性、并发性) 定义逻辑视图中的各个类的操作是在哪一个线程中被执行 可以描述成多层抽象 每个级别分别关注不同的方面 最高层抽象中:进程结构=构成一个执行单元的一组任务 | 独立、分布 | 通过逻辑网络相互通信

软件体系结构

软件体系结构

物理视图

如何把软件映射到硬件上 关注系统性能、规模、可靠性等

软件体系结构

软件体系结构

软件体系结构

场景

重要系统活动的抽象 最重要的需求抽象 联系4个视图

软件体系结构

软件体系结构的生命周期

软件体系结构

需求分析阶段 体系结构需求包括需求获取、生成类图、对类分组、将类打包成构件和需求评审等过程。

建立软件体系结构阶段 选择合适的体系结构风格,把体系结构需求阶段已确认的构件映射到体系结构中,产生一个中间结构,分析构件之间的相互作用和关系,对中间结构进行细化。

设计阶段 主要是对系统进行模块化并决定描述各个构件间的详细接口、算法和数据类型的选定,对上支持建立体系结构阶段形成的框架,对下提供实现基础。

实现阶段 设计阶段设计的算法及数据类型进行程序语言表示,满足设计体系结构和需求分析的要求,从而得到满足设计需求的目标系统。

软件体系结构设计核心模型

软件体系结构

构件

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

抽象表示为C = (O,A,X,P), O 是构件的所有对象的集合; A 是构件属性的集合; X 是构件动作的集合; P 是构件端口的集合。

构件是具有某种功能的可重用的软件模版单元 从其内容角度看,表现为:计算元素、数据存储 从其形式角度看,表现为:原子构件、复合构件 构件的接口:一组端口

构件之间的关系

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

软件体系结构

顺序运算定理:

软件体系结构

连接件

构件间的交互依据内容分类: 表现为:管道、过程调用、事件广播…… 连接件的接口:一组角色

连接件是构件运算的实现,它是一个6元组 <ID,Role,Beha,Msgs,Cons,Non-Func> 其中,Role为连接件和构件的交互点的集合,它由一个四元组定义 Role=<Id,Action,Event,LConstrains>

配置

拓扑逻辑和约束

软件体系结构

定义:设论域为U, (1)构件是一个软件体系结构 (2)连接件是一个软件体系结构 (3)构件经有限次连接(运算)后是软件体系结构。 软件体系结构记为A=<C,O>,其中C表示组成体系结构的构件集合,O表示构件运算的集合

性质:

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

软件体系结构风格

什么决定了软件体系结构风格?控制原则、质量属性

管道过滤器风格

软件体系结构

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

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

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

数据抽象和面向对象组织

软件体系结构

优点: 封装性、便于重用 可实现交互

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

事件驱动风格

软件体系结构

事件:监听事件、声明事件

构成:事件消费者、事件生产者、事件管理器

软件体系结构

基本结构: 事件监听接口和事件监听器 事件监听的注册和注销

特征: 是面向对象风格的变体 事件接触者不知道哪些构件会被这些事件影响 无法预知和假定构件的处理顺序

优点: 为重用提供支持 为系统改进提供方便

缺点: 弱化了对系统计算的控制能力 有数据共享的负担 系统逻辑关系复杂

分层系统

软件体系结构

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

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

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

仓库系统及知识库

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

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

黑板系统

软件体系结构

中央数据单元是系统的核心,存储数据和系统状态数据 知识源是相互独立的,通过黑板系统完成交互 控制单元是非独立单元

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

软件体系结构

C2(层次网络+消息驱动)

组织规则: 顶、底 构件不能直接相连 连接件之间自由连接 连接件的直接相连是有序的

工作方式:请求+通知

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

软件体系结构

软件体系结构

全局软件体系结构

脚本宝典总结

以上是脚本宝典为你收集整理的软件体系结构全部内容,希望文章能够帮你解决软件体系结构所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。