NoteDeep

软件的构成

  1. 体系结构需要基础
  2. 计算机硬件结构软件的基本组成构成软件的可用组块
  3. 讨论软件的体系结构必须首先建立一个基础:一旦确立了基础,各种观点的比较就有了共同的标准语言。
  4. 体系结构需要清晰的角色划分
  5. 都负责就是都不负责
  6. 责权利应该明确
  7. 架构师、软件工程师、程序员等
  8. 体系结构需要层次:由使用最基本的材料开始,到认识常用基础构件再到组装和构造整体框架的发展过程。
  9. 体系结构需要模式软件设计模式软件体系结构模式

软件的物质基础

软件设计的物质基础是当前的计算机硬件,它决定了软件设计和实现的出发点。
当前硬件的变革表现在两个方面
  1. 非冯.诺依曼运行机制的产生
  2. 并行处理为特征的高性能计算机结构

软件的结构基础

  • 任何具有固定组成形式的数据、代码、数据集合、代码序列、数据和代码的结合体都可以称作结构。
  • 无论多么高层的结构,都是建立在基础结构之上的。
  • 软件结构的问题从最初的最基本、最底层的描述过渡到越来越高、越来越抽象的层次上。
  • 软件结构基础的思想和概念,包括四个方面:

结构化控制流


部件的连接方式

  • 建立在基本控制流之上的高层次抽象,指部件与部件连接关系的构成形式。
  • 部件数据、外部设备、程序段
  • 部件连接器:完成部件与部件之间的连接
  • 实现部件连接的方式

过程调用方式

  • 部件之间通过过程函数方法实现连接
  • 必须知道对方部件的标识、对外提供的操作过程标识、参数设置

远程过程调用

  • RPC
  • 网络分布环境下的过程调用
  • 通过代理部件完成部件之间的连接

中断/事件触发方式

  • 通过硬件提供的中断及其控制机制实现部件连接的方式
  • 特定名称标识中断号码就形成事件触发的部件连接方式

服务连接方式

  • 服务连接方式由接口、分析器、执行器构成
  • 请求部件→接口→分析器→执行器→请求部件
  • 各类解释器、功能服务器采用的就是这种连接方式

条件连接



循环连接



查询连接

  • 两个部件
  1. 信息源:负责信息的采集
  2. 信息处理部件周期性地对信息源进行信息查询
  • 对于随机发生的信息源事件无法达到快速的实时处理

中断/事件触发方式

  • 处理构件不主动关心信息源的情况
  • 信息处理部件在信息源中断事件触发下启动工作
  • 可以对随机发生的信息源事件进行快速的实时处理

共享信息模式

  • 共享信息区构件进行信息源和信息处理构件的信息交换和传递
  • 需要考虑信息存取的同步和互斥问题

数据结构

常见的数据结构:集合、线性结构、树形结构、图形结构

抽象数据结构

  • ADT是一个关于软件分块或者部件的数学模型,定义了由一个值域和定义在该值域上的一组操作组成;
  • 定义了所描述的部件的构成和构成成员之间的关系以及作用在部件构成之上的合法的操作和操作的性质;
  • 与其在计算机内的具体的表示和实现无关;
  • 抽象数据类型的定义,四元组(D,R,P,S)表示。

面向对象、进程及其运行环境、分时并发计算、资源共享/并行同步、实时系统

面向对象

  • 建立在抽象数据类型基础之上
  • 基本概念:对象、类、封装、继承、多态
  • 类的层次性增加了代码的复用
  • 信息隐藏保证的对象行为的可靠性
  • 封装提高了对象作为一种模块的内聚力

进程

  • 进程是可以并行执行的计算部分,是一个独立的可以调度的活动
  1. 进程执行某个任务时,需要分配和释放各种资源
  2. 行为的规范构成程序,程序在处理机上的执行活动叫进程
  • 程序是进程的脚本,进程是程序的动态执行过程
  • 一个进程可以执行一个或者几个程序
  • 不同的进程可以包含同一个程序
  • 进程具有并行特征
  • 进程必须建立独立的数据环境(确保进程间不发生干扰)
  • 在串行计算机上,进程处理是实现程序并行和分时运行的必不可少的机制
  • 进程概念的进一步发展,提出和实现了线程等概念

分时并发计算

对分时系统的需求:
  1. 引入基于进程的多道程序技术后使机器的利用率得到的改善,但仍然不能满足用户的需求。
  2. 主要表现:对任务控制能力的失去(小计算量的长事件等待)、希望多个操作能同时进行。
分时系统的基本特征
  1. 同时性
  2. 独立性
  3. 及时性
  4. 交互作用性
实现分时的方法:时间片

资源共享/并行同步

  • 并行执行的任务同时需要同一个硬件和软件资源→资源共享、竞争的问题
  • 并行执行的任务之间可能存在某种受限的逻辑或时序关系→进程同步问题
  • 解决办法:信号量
  1. 互斥信号:用于资源共享
  2. 同步信号:用于任务同步

实时系统

  • 实时是指对于特定事件处理响应的高速度特性,或者指所提供的计算或服务反映最新信息状态的现实特性。
  • 实时是相对于用户容许的响应时间或容许的滞后时间,只要满足用户对时间的要求,皆可称作实时的
  • 分时与实时
  1. 分时的目标是提供多个用户可同时使用同一台机器或多个程序可在同一台机器上运行的软件环境
  2. 实时强调的是系统对特殊时间或请求的及时响应性
  • 实时系统的实现:在分时控制下的循环查询模式和事件/中断模式
  • 实时系统的特性
  1. 实时时钟管理
  2. 负载控制能力
  3. 高可靠性

软件的层次结构模型

  • 分而治之的思想
  • 横向
  • 纵向
  • 层次性一直都是软件的问题分析和设计实施的基本和具有普遍适用的思想方法
  • 层次系统(Layered Systems)是一种体系结构风格

存储器的层次结构



软件和硬件的界面

ISA(Instruction Set Architecture )指令集体系结构:一种规约(Specification),它规定了如何使用硬件

计算机系统抽象层的转换



不同层次语言之间的等价转换




计算机网络的体系结构



计算机操作系统的体系结构



层次体系结构的对比、总结

  • 都是从硬件的构成和连接的基础开始
  • 系统设计中都考虑到了系统的升级和扩展性、兼容性
  • 建立在各基础层服务之上的系统,对于性能可以建立可追踪的分析估计
  • 不同点:上层对下层的隔层之间是否发生直接连接或调用关系

软件体系结构的层次模型

任何软件的完整结构都具有层次关系:
  • 特定的软件需要特定的硬件环境运行
  • 不存在不需要下层支持的抽象的上层结构或框架
  • 层次性是软件体系结构的不变性质,是软件构成的共同规律

硬件基础层

软件运行的物质基础

软化的硬件层

对硬件结构和性能抽象的基础上,实现硬件的操作和控制描述
  • 处理器:状态和指令集合
  • 中断:状态和中断服务

基础控制描述层

  • 建立在高级程序语言描述上的纯粹软件描述层,包括了高级语言所支持的所有程序控制和数据描述概念
  1. 程序控制概念:顺序、条件、选择、循环变量、参数过程、函数、模块
  2. 数据描述的概念:数组、队列、链表、堆栈树、图指针、记录
  • 支持该层面的软件系统模型:主程序/子程序、结构化程序、模块化程序、面向对象程序
  • 支持该层面的设计工具:程序设计语言、结构化分析、面向对象分析设计

资源和管理层

  • 在基础控制描述层建立的一切数据对象和操作,都需要在操作系统的协调和控制下才能实际的实现其设计的作用和功能,进程管理、消息处理、I/O etc.
  • 该层考虑的设计模式:共享资源、同步、分时系统、异常处理、并行、进程、线程、消息、远程调用 etc.
  • 该层的软件系统模型:进程控制、分时系统、消息机制 etc.

系统结构模式层

  • 最高层次的软件结构概念
  • 属于体系结构风格或系统级别的设计模式
  • 最高的抽象描述层
  • 该层包含的概念有:解释器、编译器、编辑器管道/过滤器、黑板、C/S 、B/S、框架 etc.

应用层

  • 纯粹应用领域出发所建立的系统结构概念
  • 是系统结构模式层的概念经过领域应用命名的直接引用:企业管理、公文处理、控制系统、CAD系统、ERP系统 ,etc.

软件体系结构的体系

体系结构的层次模型构成了SA的结构体系、知识体系。原因如下:

  • 软件研究的过程就是SA从基础到高层逐步发展的过程
  • SA的概念是建立在软件研究和技术成果之上,是软件发展过至今的产物

层次模型对软件体系结构的认识

  • 体系结构是关于软件的构成部件及其连接的分层的结构框架
  • 体系结构包括软件的内在概念外在操作
  • 体系结构分析与设计涵盖并指导着从逻辑结构设计到运行实现的软件工程的全部过程

体系结构的构成基础

  • 体系结构是计算机技术发展成熟的必然产物
  • 基础包括:对硬件的软件抽象、基础控制描述、资源管理调度、系统结构模式、领域知识
  • SA研究是整个软件领域几十年研究的继承、概括和发展。

体系结构的描述抽象

  • 抽象在软件技术研究中一直发挥着重要的作用,每次抽象都标志着技术发展从经验向理论的转折,每次抽象都在前一次抽象基础上建立的。
  • SA是目前对软件结构的最高级抽象,该抽象建立在当强所有关于软件的研究成果之上的。

体系结构的语法和语义

  • 体系结构的组成需要使用特定的语言进行描述
  • SA的层次性反映了几十年软件描述的基础词汇、语法集合、使用方法→规范化、形式化

体系结构的性能分析

  • 软件的性能
  • 功能特性(Functional Properties)
  • 非功能特性(Non-Functional Properties)
  • 只有最上层结构关系而无深层次实现描述是无法实现非功能性分析
  • 体系结构层次模型的资源及管理调度和基础控制描述层为研究非功能特性提供了支持

体系结构代码生成

  • 软件设计的目的是建立正确高效运行的软件代码系统
  • SA应该支持代码的生成,提供对各个层次的部件和连接器的深层分析和表达
  • SA研究重点在:
  • 体系结构风格
  • 体系结构形式化
  • 体系结构描述语言
  • 代码的生成

体系结构的知识体系

  • 软件体系结构的层次模型说明了软件的构成和设计知识贯穿散布在计算机各领域中
  • 软化的硬件层:组成、汇编、接口
  • 基础控制描述层:语言、DS、OO、DB
  • 资源及管理调度层:OS
  • 系统结构模式层:DB、SE、DC
  • 应用层:Background
  • 建立统一、系统的软件知识体系

评论列表

    软件的构成
    软件的物质基础
    软件的结构基础软件的层次结构模型
    软件体系结构的层次模型
    软件体系结构的体系