当前课程知识点:软件理论与工程 > 第3章 软件设计 > 3.8 基于模式的设计 > 3.8 基于模式的设计
大家好
今天我们来一起看一下
软件设计当中
基于模式的设计
在基于模式的设计内容当中
我们会看一下基于模式设计的基本概念
模式的种类
模式如何进行描述
和如何进行基于模式设计
另外 我们再看一下体系结构模式
构件级设计模式
用户界面设计模式
WebApp模式
和移动用户界面模式
设计模式
我们每个人都会遇到过设计问题
并且会想
是否已经有人研究出了这个问题的解决方案呢
如果有某种描述问题的标准方式
并用有组织的方式
来描述问题的解决方案
结果 会如何呢
设计模式
是用来描述问题
以及解决方案的规范化方法
在某种程度上
允许软件工程界获取设计知识
使解决方案能够得到重用
每个模式都描述了我们所处环境内
反复出现的问题
然后描述该问题的核心解决方案
这样你就可以
几百万次的重复使用该解决方案
而不必用同样的方式
重新工作两次
所以我们说模式是
表示特定上下文
问题和解决方案三者之间关系的
三步规则
上下文使读者理解问题所发生的环境
以及在此环境中
什么样的解决方案才是合适的
一组需求
包括限制
约束
起到影响因素的作用
比如 如何在此问题的上下文环境中
对问题进行解释
如何有效的应用这个解决方案
模式有很多个种类
比如有体系结构模式
数据模式
构件模式
体系结构模式描述了很多
可以用结构化方法解决的设计问题
数据模式
描述了重现的面向数据的问题
以及用来解决这些问题的
数据建模解决方案
构件模式
也可以叫做设计模式
涉及与开发子系统和构件相关的一些问题
它们之间相互通信的方式
以及
它们在一个较大的体系结构当中的位置
界面设计模式
描述了公共用户界面问题
以及具有影响因素
包括最终用户的具体特征的解决方案
Web应用模式解决了
构建Web应用时遇到的问题
而且往往还包括很多
我们前面提到的一些其它的模式
既然模式可以被复用
来解决后面遇到的类似的问题
那么我们应该对模式进行一个有效的表示
在模式的表示当中
我们要表示模式的名称
以简短但富表现力的名字描述模式的本质
第二
我们要描述这个模式应对的问题
也就是描述模式涉及的问题
第三我们要描述动机
提供问题的一些实例
还有 我们要描述模式使用的环境
也就是描述问题所在的环境
包括应用领域
另外 还要描述
模式的影响因素
列出影响问题解决方案的全部影响因素
包括必须要考虑的限制
和约束的相关讨论
当然 最重要的我们要列出解决方案
这才是我们要复用模式的一个核心价值
解决方案
提供了问题解决方案的详细描述
另外 我们还可以描述模式的目的
协作
效果
和实现
和已知应用
以及相关模式
目的指的是描述模式以及模式所做的工作
协作指的是描述其它模式对解决方案的贡献
效果 描述实现模式时
必须考虑的可能
要做的折中
以及使用模式的最终效果
实现描述的是 当实现模式时
确定应该考虑的特殊问题
已知应用
提供了设计模式在实际应用系统中
使用的实例
相关模式
描述的是
我们相关的设计模式的一些交叉索引
那我们下面看一下如何基于模式进行设计
软件设计师从描述系统抽象
表示的需求模型
开始工作
这些需求模型包括
明确的
和隐含的
需求模型描述了问题的集合
建立的上下文环境
并明确了主要的影响因素
那么我们可以看到
需求模型
描述了我们所关心的问题
上下文
和即将要对应的解决方案
那么需求模型对
问题和上下文进行了描述
我们就可以基于这个问题和上下文
找到可复用的解决方案的模式
那么基于模式的设计
开始于需求模型
之后我们的设计就开始了
我们提取出
需求模型当中的问题
和环境影响因素
然后
考虑设计的概念
和考虑设计的质量属性
我们综合考虑了设计的概念
提取出的问题和环境影响因素
以及设计的质量属性之后
我们会考虑一下
是否可以通过模式来解决这个问题
如果可以
那么我们就开始了基于模式的设计任务
产生我们最终的设计模型
如果不能够通过模式来解决
我们就应用其它的设计方法
或表示法
来产生设计模型
这个图展示了我们基于模式的
设计的过程的基本框架
那么我们有体系结构模式
有数据模式 有构件模式
我们先来看一下体系结构模式
体系结构
这个概念就比较抽象
模式的概念也有点抽象
那么体系结构模式
到底是一个什么样的东西呢
我们先来通过一个比喻理解一下
比如
每一户都要使用厨房的模式
每一个在建造房子的时候
都要建造一个厨房
那么厨房的模式就可以被复用
厨房的模式以及它合作的其它模式
能涉及的问题有
食物的存储与储备
完成这些任务所需要的工具
以及这些与工作流程相关的工具
在房间中的放置规则等等
另外 这个厨房模式
还会涉及到的有关问题有
厨房的台面
照明
墙壁开关
中心岛
室内的地面等等
显然对一个厨房会存在多种设计
通常会取决于环境和影响因素
但是我们可以在厨房模式
所建议的解决方案的环境内
构思具体化
你的个性化的设计
既然我们要使用这些模式
我们就应该要找到模式存储库
在网上有很多设计模式的原始资料
一些模式可以从
独立发布的模式语言中得到
另一些模式可以从模式门户
或模式库中得到
我们再看一下
构件级的设计模式
构件级设计模式
可以提供验证了的解决方案
这些解决方案可以解决从需求模型中
提取出的一个或者是多个子问题
在很多情况下
这种类型的设计模式
关注系统的某些功能元素
另外 我们还有用户界面设计模式
用户界面设计模式
有
整个用户界面
界面布局
表单和输入
表格等等
为最高级的结构以及整个用户界面的导航
提供设计指导的就是整个用户界面模式
我们的处理页面网站的
页面布局模式要清晰的显示出
屏幕的显示的一般组织结构
另外 表单和输入的设计模式
要考虑完成表单及输入的各种设计技术
表格的设计模式
为各种类型的表格数据的创建和操作
提供设计指导
另外
我们还有直接进行数据处理的设计模式
可以处理数据的编辑
修改和转换
导航的设计模式
辅助用户在层次菜单 网页
以及交互式显示的屏幕中进行导航
搜索的模式可以满足对网站中存在的信息
或者可通过交互式应用程序访问的
永久性数据存储的
特定搜索
页面元素的设计模式
可以实现网页
或显示屏的特定元素显示
电子商务的设计模式
可以针对网站
这些模式
实现电子商务应用系统的重复性的元素
那么再有WebApp的模式
WebApp的模式可以包括
信息体系结构模式
涉及了信息空间的总体结构
以及用户与信息的进行交互的方式
导航模式
在WebApp中定义了导航链接结构
例如层次
环
导航路径等等
交互模式的WebApp的模式当中
可以有助于用户界面的设计
这种模式解决的是
界面如何将特定的动作的结果
通知给用户
用户如何扩展
基于上下文环境的内容
和用户的愿望
如何最好的描述一个链接
所隐含的目的地
如何通知用户正在进行的交互的状态
以及界面的相关问题
WebApp的表示模式是
用于协助介绍内容
由于它是通过界面的呈现给用户的
这种模式解决的是
如何组织用户界面控制功能
以获得更好的可用性
如何表现界面的动作
与所影响的内容对象之间的关系
以及如何建立有效的内容层次
功能模式在WebApp中定义了工作流
行为
过程
通信
以及WebApp中的其它算法元素
那么WebApp的模式
会有不同的设计力度
当我们要解决的问题涉及到全局的问题的时候
我们可以试着开发
关注全局解决的方案的相关模式
相反
当焦点很窄的时候
例如
从包含五项
或者更少的元素集合中选择一项的话
我们的解决方案的目标
也会变得相对比较窄
那么 根据粒度的级别
WebApp模式可以描述为
以下几个层次
比如 可以描述为WebApp的体系结构模式
Architectural patterns
这个层次的抽象
通常会涉及到的
模式定义WebApp的总体结构
表示不同构件
或增量间的关系
为指定的体系结构元素
网页
包
构件
子系统
这些之间的关系来定义规则
这个是WebApp的体系结构模式
那么WebApp的设计模式
是用来处理特定的设计元素
例如 构件的聚合
来解决一些设计问题
比如说网页上的元素之间的关系
或影响构件间的通信的机制
一个WebApp的主页的布局就是这种
大格局的一个模式的例子
另外
WebApp模式也可以在小的
粒度层次上
比如说构件模式
WebApp的构件模式这个层次的抽象
与WebApp的个别小规模的元素有关
WebApp的构件模式
可以有
个别的交互元素
例如单选按钮
文本框
导航元素
例如如何格式化链接
或者是功能性的元素
例如一些特定的算法等等
那么我们最后再简单的看一下
移动用户的界面模式
随着我们手机移动应用的广泛的开展
我们移动用户的应用程序
应用越来越广泛
那么 移动用户的界面模式当中
可能会涉及到一些登录屏幕的模式
地图的模式
漂浮选单的模式
注册流程的模式
自定义选项卡导航模式
或者是邀请模式等等
一些
移动用户经常会用到的界面模式
那么 通过以上的这些讲述
我们今天
讲述了基于模式设计的主要内容
我们讲述了什么是模式
如何进行模式的设计
并且我们结合了具体的
WebApp的模式
移动用户的
App设计模式等等
来解释了一下基于模式设计的概念
让大家进一步的理解了抽象的
模式的概念
今天我们的内容就这么多
谢谢大家
-课程概述
-1.1 软件的本质
-1.2 软件工程
--1.2 软件工程
-1.3 软件过程结构
-1.4 过程模型
--1.4 过程模型
-1.5 敏捷开发方法
-第1章 习题
--第1章 习题
-2.1 需求工程过程
-2.2 需求获取
--2.2 需求获取
-2.3 需求分析
--2.3 需求分析
-2.4 过程建模
--2.4 过程建模
-2.5 面向对象建模
-第2章 习题
--第2章 习题
-3.1 设计概述
--3.1 设计概述
-3.2 设计的概念
-3.3 设计模型元素
-3.4 体系结构概述
-3.5 体系结构风格
-3.6 构件级设计
-3.7 UI设计
--3.7 UI设计
-3.8 基于模式的设计
-第3章 习题
--第3章 习题
-4.1 UML概述
-4.2 UML 及UML中的事物
-4.3 UML关系和图
-4.4 UML 图细节(上)
-4.4 UML 图细节(下)
-第4章 习题
--第4章 习题
-5.1 软件测试策略
-5.2 测试传统的应用系统
-5.3 测试面向对象的应用系统
-5.4 测试web应用系统
-5.5 测试移动应用系统
-第5章 习题
--第5章 习题
-6.1 软件项目估算
-6.2 软件过程管理
-6.3 软件配置管理
-6.4 项目版本控制及调试
-第6章 习题
--第6章 习题