当前课程知识点:面向对象分析与设计 >  架构分析 >  定义模型的高层组织结构 >  定义模型的高层组织结构

返回《面向对象分析与设计》慕课在线视频课程列表

定义模型的高层组织结构在线视频

定义模型的高层组织结构

下一节:确定分析机制、确定关键概念、创建用例实现

返回《面向对象分析与设计》慕课在线视频列表

定义模型的高层组织结构课程教案、知识点、字幕

同学们 下面我们讲第11讲

架构分析设计2

在架构分析设计2里面

我们讲一下架构的高层组织

首先 我们介绍两个基本概念 架构模式和框架

什么是模式?

我们说模式提供了一种公共问题的一种公共的解决方案

而分析设计模式提供了一些狭小的具体的技术问题给出的一个参考的片段性的解决方案

我们知道在Java的分析设计模式有23种

比如说单例模式 工厂模式等等

感兴趣的同学可以下来查阅相关资料学习

但是每一种分析设计模式只和技术问题相关

和应用领域无关

也就是说 分析设计模式具有一定的通用性

它可以在多个领域里面只要是类似的相同的问题

都可以采用同一个设计模式

那么框架和模式不同

模式只是给出了一种设计方法或者说一种参考的解决方案

而框架给出的是一个针对特定问题的 或者说普遍的解决方法

所以在框架里面提供了一种骨架解决方案

框架里面已经给出了针对这个问题的一个相对比较完整的一个解决方案

同时它预留了接口

通过对接口的定制开发

可以使得框架能够满足所开发的系统需求

这里来进一步来讲一下设计模式

我们说设计模式是针对公共的设计问题

也就是说它与用户的业务领域是无关的

它只是针对设计问题给出的设计模式

它针对设计问题给出了解决方案

它描述了针对这种问题在这个解决方案里面需要有哪一些元素 哪一些类 或者哪一些对象

以及这些类和对象它怎么样相互协作

通过时序图 通信图来描述它们相互协作来解决这个问题

最后 它还会给出针对这种设计模式

在系统应用这种设计模式的优点和不足

来帮助你选择和应用所需要的设计模式

所以设计模式我们可以看作对设计经验的总结

对于常见的 具有一定难度的公共的设计问题

一些好的设计师通过他的经验总结以后

给出的好的参考的解决方案

架构模式可以看成在软件架构设计问题中

给出的一个好的解决方案

所以架构模式描述了在软件架构设计过程中 软件系统一种基本的内部组织结构

它定义了

如果参考这样一个架构模式你需要预先定义哪些组件和子系统

每个组件和子系统的职责是什么

它们之间的接口是什么

关系是什么

以及如何来把这些组件和子系统组织在一起

我们把它称作架构模式

前面介绍的设计模式只是我们针对详细设计问题给出的解决方案

那么架构模式就是针对软件体系架构设计给出的一些好的参考的解决方案

这里列出了常用的四个架构模式

比如说第一个层次化架构模式

层次化架构模式后面我们要重点介绍

比如在网络的七层协议架构中就选用了这种层次化架构模式

还多数的应用软件也都采用了层次化体系架构

第二个常见的叫

MVC(model view control )

模型视图控制器模式

模型视图控制器模式它把整个体系架构分为三个部分

模型部分 视图部分和控制器部分

其中模型部分用来存储和管理系统中的数据

视图部分用来对数据进行展示

和用户进行交互

而控制器部分完成业务逻辑的处理和计算

也就是说

MVC模式情况下它把数据

数据的展示 数据的计算

把它拆分成三个部分

使它们相互独立

这样提高了整个系统的可维护性

第三个比较常见的叫管道与过滤器

在管道里面

它主要负责把一个输入数据转换成合适的格式再输出出去

而在过滤器里面

则负责对数据的加工处理和计算

这样的话

管道过滤器模式下

整个系统架构里面可以有多个过滤器

每两个过滤器之间通过一个管道进行连接

这种体系架构的好处是

如果根据需要

需要增加对数据的处理加工

我只需要增加新的过滤器

然后重新定义过滤器之间的管道连接

就可以使系统很快的

扩展它的功能

管道过滤器适合那种

对数据进行顺序批量

流量化处理计算的软件系统

第四种比较常见的称之为黑板模式

黑板模式主要用在一些协同设计的软件里面去

在黑板模式下

我们把公共的数据存储在一个全局的数据库 或者全局的数据存储结构

每一个应用都可以对数据进行访问

进行读写

任何一个客户端对数据进行读写

在其他客户端上立即得到显示

这样黑板模式适合协同设计

这样一些软件适合采用黑板模式

我们下面重点介绍层次化体系架构模式

层次化体系架构模式应用非常广泛

最成功的应用在网络拓扑结构里面

包括TCP/IP协议栈

都采用层次化体系架构

在网络拓扑结构里面

它把它划分为七层

这样的话上下之间定义了标准接口

当底层升级替换以后不会影响到上层的软件

这也就是为什么我们在网络里面

我们写的应用程序通过TCP UDP进行通信

但是底层可能采用光纤 双绞线或者无线

这样的物理层介质

或者物理层链路层替换掉以后

不会影响到应用层程序的原因

在一般的应用软件里面

我们在层次化体系架构里面把它主要划分成四层

最底层称之为系统层

中间件层

领域层

和应用层

系统层里面主要定义一些跟硬件跟软件运行环境相关的

比如像操作系统 驱动等等

就放在系统层

系统层提供整个软件运行的基础环境支撑

那么中间件层则提供和应用领域无关的

一些公共的基本的服务组件

比如说

在应用软件里面我们经常访问数据库

那我们进行数据库访问

像JDBC 这样一些组件就属于中间件层

其他的比如说

加密解密的

压缩解压缩的

这样一些组件也都属于中间件层

中间件层软件的最大的特点就是和应用领域没有关系

比如说

像刚才介绍的数据库访问 压缩 加密等等

在教育系统软件里面可能会用到

医疗信息管理系统软件里面也可能会用到

在电子政务系统里面同样可能会用到

在往上 我们称之为领域层

领域层则定义和具体应用没有关系

但是它描述了行业领域里面

一些公共的基础的服务

比如说

我们开发的大学教务系统

每一所大学它的教学组织管理模式可能不一样

所以它的软件功能可能不一样

但是所有大学里面

无论是西北工业大学

西北大学

北京大学

它都有一些公共的基础的

比如说

所有教学系统里面都有教师的管理

学生 课程 考试等等

这些构成它的领域模型

或者领域层组件

在往上就是应用层组件

应用层组件描述

当前我们所开发的软件系统

独有的特定的

一些软件功能组件

就把它实现在应用层

还是以我们刚才举的例子

我们西工大的

北大的

清华的

教学模式就不一样

所以它的应用层里面

都是学生管理

它管理的程序功能软件组件就有区别

这样一些组件把它放在应用层

这边给出的就是我们前面给出的例子

就是网络拓扑七层协议

那么我们如何来分层

那么在分层的时候

我们在同一个层次上

它应该有相同的抽象级别

我们在系统层

所有的系统层都是和硬件相关的

和运行环境相关的

它就应该放在系统层

反过来和具体应用功能相关的

就应该放在应用层

同一层里面的元素子系统组件

应该具有相同的抽象级别

另外在分层的时候我们要考虑

将相似的事情放在同一个层次

反过来说

将不相似的不同的放在不同层里面

在这里

我们要强调

对于和业务领域无关的

我们要把它放在中间件层

但是领域里面公共的

把它放在领域层

领域里面每个应用独有的特殊的

就应该把它放在应用层

在层的划分中

通过采用层次化体系结构

它的优点第一个就是松耦合

在层和层之间

只是上一层依赖下一层

下层不能访问和调用上一层

下层不能依赖上层

这样当上层修改以后

下层程序也不会受到影响

反过来说

层次化体系结构里面

明确定义每一层对上提供的服务接口

在接口标准化以后

当下层接口不变

下层的变更也不会扩散影响到上层

这样就可以实现上下层之间的松耦合

同时实现层次间的相对封装

层内的变化不会影响扩散到层外去

在层次化体系结构里面

我们对变更的封装主要包含在两部分

第一部分容易变化的就是系统运行环境

比如说系统硬件变了

操作系统升级了

有了系统层以后

我们只需要变更系统层的驱动

变更系统层的操作系统

就可以了

对上层的应用软件就不需要做任何的修改

第二个在软件运行过程中

软件生命周期里面

容易变更的就是具体的

用户的接口

界面接口

用户的界面

业务逻辑等等

这些界面 业务逻辑

我们把它们封装在最上面的应用层

那么当它们变化以后

我们只需要修改应用层的软件组件就可以了

它也不会影响到下层的领域层中间件层

在面向对象里面

并没有一个标准的元素来描述层

这里我们以包进行扩展来定义层

我们使用面向对象

UML提供的一种扩展机制

称之为构造型

通过包

定义构造型以后

扩展定义一个UML元素

我们把它称之为层

构造型是在UML里面提供的

它可以在已有的模型元素基础之上

来定义一种新的特定的模型元素

我们说标准的UML里面

对系统设计这块支持是不够的

所以我需要在UML里面包的基础之上

我们来通过构造型这种机制

扩展定义一种新的模型元素

当然我们不仅可以在包的基础上扩展定义

也可以在其他的

比如说 类

其他的模型元素

也都可以根据需要来扩展定义我们所需要的新的模型元素

在定义完层之后

我们就可以把层次化体系架构设计成

上面是应用层 它依赖于领域层

今天我们介绍了架构分析里面

主要的架构分析模式

架构模式以及框架

最后我们介绍了层次化

最后我们介绍了层次化

这种分层的架构模式

和分层的主要考虑因素

谢谢大家

面向对象分析与设计课程列表:

面向对象概述

-软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

统一软件开发(RUP)

-RUP软件开发模型的特点

--RUP软件开发模型的特点

--RUP软件开发模型的特点

面向对象建模

-四个基本原则

--四个基本原则

--四个基本原则

-对象和类

--对象和类

--对象和类

-类之间的关系

--类之间的关系

--类之间的关系

需求概述

-用例模型

--用例模型

--用例模型

-用例之间的关系

--用例之间的关系

--用例之间的关系

-用例建模

--用例建模

--用例建模

分析与设计概述

-分析与设计概述

--分析与设计概述

--分析与设计概述

架构分析

-架构分析基本概念

--架构分析基本概念

--架构分析基本概念

-定义模型的高层组织结构

--定义模型的高层组织结构

--定义模型的高层组织结构

-确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

用例分析概述

-用例分析概述

--用例分析概述

--用例分析概述作业

-控制类

--控制类

--控制类

-用例行为和类的关系

--用例行为和类的关系

--用例行为与类的关系

识别设计类

-识别设计元素概述

--识别设计元素概述

--识别设计元素概述

-识别子系统及接口

--识别子系统和接口

--识别子系统及接口

描述运行态软件体系架构

-描述运行态软件体系架构

--描述运行态软件体系架构

--描述运行态软件体系架构

描述分布式系统架构

-描述分布式系统架构概述

--描述分布式系统架构概述

--描述分布式系统架构概述

用例设计

-用例设计描述

--用例设计描述

--用例设计描述

子系统设计

-子系统设计概述

--子系统设计概述

--子系统设计概述

类设计

-创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

-定义类状态

--定义类状态

--定义类状态

-定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

-定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

定义模型的高层组织结构笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。