diff --git a/src/university/3.md b/src/university/3.md index a5f2dd5..7135ef8 100644 --- a/src/university/3.md +++ b/src/university/3.md @@ -210,9 +210,56 @@ - **通常导致进程成为批处理的结构** - 这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换; - - **不适合处理交互的应用** - 当需要增量地显示改变时,这个问题尤为严重; - - 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就**导致了系统性能下降,并增加了编写过滤器的复杂性。** - - 绝大部分处理时间消耗在格式转换上 \ No newline at end of file + - 绝大部分处理时间消耗在格式转换上 + +## 讨论题 + +> 什么是软件体系结构的风格?它在软件开发过程中具有何种意义? + +风格: + +- 软件体系结构风格是指设计、组织和实现软件体系结构的各种惯用模式和习惯用法,是 + 对一系列体系结构设计的抽象。 + +意义: + +- 利用软件体系结构风格,可以在不同的软件体系结构设计过程中重复使用同一个体系结 + 构。这样可以将软件复用粒度提高到软件体系结构一级。 +- 通过学习软件体系结构风格,可以在软件体系结构设计过程中,采用成熟的体系结构风 + 格,使得所设计的软件体系结构有良好的组织结构和通用性。 + +> 常见的软件体系结构风格主要有哪些种类? + +- 数据流风格:批处理序列,管道′过滤器 +- 调用/返回风格:主程序/子程序,面向对象风格,层次结构 +- 独立构件风格:进程通信,事件系统 +- 虚拟机风格:解释器,基于规则的系统 +- 仓库风格:数据库系统,超文本系统,黑板系统 + +> 简述管道-过滤器的组成。 + +- 构件:过滤器,处理数据流 + - 一个过滤器封装了一个处理步骤 + - 数据源点和数据终止点可以看作是特殊的过滤器 +- 连接件:管道,连接一个源和一个目的过滤器 + - 转发数据流:将一个过滤器的输出传到另 一过滤器的输入 + +连接器定义了数据流图,形成拓扑结构 + +>简述管道-过滤器风格的优缺点。 + +优点: + +- 良好的隐蔽性和高内聚、低耦合的特点; +- 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成; +- 支持软件复用: +- 系统维护和增强系统性能简单: +- 支持过滤器的并行执行: + +缺点: + +- 不适合处理交互的应用; +- 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。**** \ No newline at end of file diff --git a/src/university/4.md b/src/university/4.md index 33a8125..62d7cc6 100644 --- a/src/university/4.md +++ b/src/university/4.md @@ -181,53 +181,6 @@ ## 讨论题 -> 什么是软件体系结构的风格?它在软件开发过程中具有何种意义? - -风格: - -- 软件体系结构风格是指设计、组织和实现软件体系结构的各种惯用模式和习惯用法,是 - 对一系列体系结构设计的抽象。 - -意义: - -- 利用软件体系结构风格,可以在不同的软件体系结构设计过程中重复使用同一个体系结 - 构。这样可以将软件复用粒度提高到软件体系结构一级。 -- 通过学习软件体系结构风格,可以在软件体系结构设计过程中,采用成熟的体系结构风 - 格,使得所设计的软件体系结构有良好的组织结构和通用性。 - -> 常见的软件体系结构风格主要有哪些种类? - -- 数据流风格:批处理序列,管道′过滤器 -- 调用/返回风格:主程序/子程序,面向对象风格,层次结构 -- 独立构件风格:进程通信,事件系统 -- 虚拟机风格:解释器,基于规则的系统 -- 仓库风格:数据库系统,超文本系统,黑板系统 - -> 简述管道-过滤器的组成。 - -- 构件:过滤器,处理数据流 - - 一个过滤器封装了一个处理步骤 - - 数据源点和数据终止点可以看作是特殊的过滤器 -- 连接件:管道,连接一个源和一个目的过滤器 - - 转发数据流:将一个过滤器的输出传到另 一过滤器的输入 - -连接器定义了数据流图,形成拓扑结构 - ->简述管道-过滤器风格的优缺点。 - -优点: - -- (1)良好的隐蔽性和高内聚、低耦合的特点; -- (2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成; -- (3)支持软件复用: -- (4)系统维护和增强系统性能简单: -- (5)支持过滤器的并行执行: - -缺点: - -- (1)不适合处理交互的应用; -- (2)因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。 - > 何谓层次体系结构中的“严格分层”和“松散分层”? 严格分层: @@ -246,4 +199,4 @@ 优点:松散方法可以改善效率,因为系统不必将简单调用从一层转发到下一层。 -缺点:松散方法在层之间不提供相同的隔离级别,这使得在不影响较高层的情况下换出较低层变得更困难。 +缺点:松散方法在层之间不提供相同的隔离级别,这使得在不影响较高层的情况下换出较低层变得更困难。 \ No newline at end of file diff --git a/src/university/6.md b/src/university/6.md index 8b11fd3..f9ab2c2 100644 --- a/src/university/6.md +++ b/src/university/6.md @@ -1,3 +1,121 @@ +## 事件系统风格(独立构件) + +![image-20211125191009114](其它体系结构.assets/image-20211125191009114.png) + +> 定义 + +- 能够激活对象功能的动作。当发生这种动作后将给所涉及对象发送一个消息,对象便可执行相应的功能 +- 对某一对象发生什么事件,该对象便找到相应的处理该事件的程序去处理这一事件 + +![image-20211125185917327](其它体系结构.assets/image-20211125185917327.png) + +> 事件的隐式调用 + +- 构件不直接调用一个过程,而是触发或广播一个或多个事件。 +- 系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。 +- 这种系统,称为基于事件的系统,采用隐式调用的方式。 + +> 为何称为“独立构件”风格? + +- 这种风格的主要特点是:**事件的触发者并不知道哪些构件会被这些事件影响,相互保持独立。** + - 这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用; + - 各个构件之间彼此之间无连接关系,各自独立存在,**通过对事件的发布和注册实现关联;** + +> 基本构成和工作原理 + +![image-20211125190410320](其它体系结构.assets/image-20211125190410320.png) + +| 特点 | 描述 | +| ---------------- | ------------------------------------------------------- | +| 分离的交互 | 事件发布者并不会意识到事件订阅者的存在。 | +| 一对多通信 | 采用发布/订阅消息传递,一个特定事件可以影响多个订阅者。 | +| 基于事件的触发器 | 由事件触发过程调用。 | +| 异步 | 支持异步调用。 | + +> 事件系统风格举例 + +遇到断点,编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并显示出来。 + +![image-20211125190730334](其它体系结构.assets/image-20211125190730334.png) + +> 事件系统的优缺点 + +隐式调用系统的主要优点 + +- **为软件重用提供了强大的支持**:当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中。 +- **为改进系统带来了方便**: 当用一个构件代替另一个构件时,不会影响到其它构件的接口。 + +隐式调用系统的主要缺点 + +- **构件放弃了对系统计算的控制**:一个构件触发一个事件时,不能确定其它构件是否会响应它。即使它知道事件注册了哪些构件的构成,它也不能保证这些过程被调用的顺序。 +- **数据交换的问题**:有时数据可被一个事件传递,但另一些情况下,基于事件的系统必须依靠一个共享的仓库进行交互。这也使全局性能和资源管理便成了问题。 +- **正确性的推理存在问题**:这是由于过程的语义必须依赖于被触发事件的上下文约束。 + +## 仓库风格 + +![image-20211125191101728](其它体系结构.assets/image-20211125191101728.png) + +> 定义 + +**数据库系统、超文本系统和黑板系统都属于仓库风格。** + +在这种风格中,**数据仓库(如文件或数据库)位于这种体系结构的中心,**其他构件会经常访问该数据仓库,并对仓库中的数据进行增加、修改或删除操作。 + +![image-20211125191219430](其它体系结构.assets/image-20211125191219430.png) + +> 仓库风格实例 + +注册表 + +- 最初,硬件/软件系统的配置信息均被各自保存在一个配置文件(.ini): +- 这些文件散落在系统的各个角落,很难对其进行维护; +- 为此,引入注册表,其思想是将所有.ini文件集中起来,形成共享仓库,为系统运行趣起到了集中的资源配置管理和控制调度的作用 + +![image-20211125191453040](其它体系结构.assets/image-20211125191453040.png) + +剪贴板 + +- 剪贴板是一个用来进行短时间的数据存储并在文档/应用之间进行数据传递和交换的软件程序 +- 用来存储带传递和交换信息的公共区域(形成共享仓库)﹔ +- 不同的应用程序通过该区域交换格式化的信息; +- 访问剪贴板的方式: copy paste. + +> 仓库风格的连接件 + +**连接件**:仓库与独立构件之间的交互存在**两种交互机制** + +- **数据库方式**:输入流中的事务类型触发需要执行的过程 +- **黑板结构**:中心数据结构的当前状态触发并选择需要执行的过程 + +> 黑板结构 + +- 黑板体系结构是仓库体系结构的特殊化。黑板体系结构模型通常由知识源、黑板数据结构和控制器三部分构成。 +- 黑板风格是人工智能应用系统的重要设计方法之一。 + +![image-20211125191916042](其它体系结构.assets/image-20211125191916042.png) + +![image-20211125191922457](其它体系结构.assets/image-20211125191922457.png) + +> 知识源 + +- 知识源描述某个独立领域问题的知识及其处理方法 +- 通常知识源具有“条件-动作”的形式。当条件满足时,知识源被触发,其动作部分增加或修改黑板上内容。 +- 每个知识源分别存放且相互独立 +- 知识源通过黑板进行通讯,合作求出问题的解 +- 计算过程 + - 待解决的问题被分为若干个子问题,每个子问题由一个独立的知识源加以计算。 + - 知识源包含独立的领域知识。 + - 知识源执行计算后会更新黑板里的数据状态。 + - 多个知识源之间只能通过黑板交换知识 + - 通过对黑板的读写操作来完成交换。 + +> 控制器 + +- 时刻监视黑板状态变化 +- 对黑板上信息的当前状态进行判断和评价 +- 当黑板的状态满足了知识源的执行条件时,该知识源被控制器触发并进行计算,然后将结果更新到黑板上 +- 这种更新又导致其他知识源参与计算并更新黑板,直到找到问题解为止 + ## MVC风格 > 基本概念 @@ -23,7 +141,7 @@ - 获取用户输入 - 向controller发送处理请求 - 接收来自Controller的反馈并将model的处理结果显示给用户 -- Controller(控制器) +- Controller(控制器) - 接收来自客户的请求 - 调用model业务逻辑方法 - 调用View显示执行结果 diff --git a/src/university/其它体系结构.assets/image-20211125185917327.png b/src/university/其它体系结构.assets/image-20211125185917327.png new file mode 100644 index 0000000..f8b3fe9 Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125185917327.png differ diff --git a/src/university/其它体系结构.assets/image-20211125190410320.png b/src/university/其它体系结构.assets/image-20211125190410320.png new file mode 100644 index 0000000..213c149 Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125190410320.png differ diff --git a/src/university/其它体系结构.assets/image-20211125190730334.png b/src/university/其它体系结构.assets/image-20211125190730334.png new file mode 100644 index 0000000..deb9a39 Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125190730334.png differ diff --git a/src/university/其它体系结构.assets/image-20211125191009114.png b/src/university/其它体系结构.assets/image-20211125191009114.png new file mode 100644 index 0000000..6fd543c Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125191009114.png differ diff --git a/src/university/其它体系结构.assets/image-20211125191101728.png b/src/university/其它体系结构.assets/image-20211125191101728.png new file mode 100644 index 0000000..a955a45 Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125191101728.png differ diff --git a/src/university/其它体系结构.assets/image-20211125191219430.png b/src/university/其它体系结构.assets/image-20211125191219430.png new file mode 100644 index 0000000..e16bcbf Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125191219430.png differ diff --git a/src/university/其它体系结构.assets/image-20211125191453040.png b/src/university/其它体系结构.assets/image-20211125191453040.png new file mode 100644 index 0000000..985cc78 Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125191453040.png differ diff --git a/src/university/其它体系结构.assets/image-20211125191916042.png b/src/university/其它体系结构.assets/image-20211125191916042.png new file mode 100644 index 0000000..fd799a1 Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125191916042.png differ diff --git a/src/university/其它体系结构.assets/image-20211125191922457.png b/src/university/其它体系结构.assets/image-20211125191922457.png new file mode 100644 index 0000000..3ce793d Binary files /dev/null and b/src/university/其它体系结构.assets/image-20211125191922457.png differ