当前课程知识点:软件理论与工程 > 第3章 软件设计 > 3.3 设计模型元素 > 3.3 设计模型元素
大家好
这一节我们讲述一下
在设计章节当中的
设计模型元素
我们先来看一下这一张图
这一张图的横轴
是系统结构元素
接口元素
构件级元素和部署级元素
我们的横轴是沿着设计的过程维度
从系统结构元素开始
然后设计接口元素和构件级元素
最后设计部署级元素
这张图的纵轴从上向下
是从分析模型向设计模型的转变
随着分析模型向设计模型的转变
我们的抽象程度变得越来越低
越来越增加了设计的细节
我们的体系结构设计元素
相当于房间的平面图
平面图描述了房间的整体布局
包括各个房间的尺寸 形状
相互之间的联系
能够进出房间的门窗
平面图为我们提供了房间整体的视图
而软件体系结构设计元素
和房间的平面图一样
为我们提供了软件的整体视图
那么在这张图中
从分析模型向设计模型转变的过程当中
我们先看一下
系统体系结构元素这一个部分
在这张图的最左边这一列
这一列在分析模型当中
有类图 分析包 CRC模型
还有协作图 数据流图和控制流图
然后转变到设计模型的时候
转变成为设计类的实现
子系统和协作图
通过对设计的进一步求精的过程
变成了设计类的实现
以及更详细描述的子系统和协作图
那我们沿横轴表示的模型元素
并不总是顺序的开发的
初步的体系结构是基础
随后是接口设计和构件级的设计
通常接口设计和构件级设计是
并行进行的
直到设计全部完成以后
我们才开始了部署模型的设计工作
在整个设计过程当中的任何地方
我们都可以应用设计模式
因为这些模式能够使设计人员
将设计的知识应用到他人
已经遇到并解决的特定领域问题当中
那在接口元素这一列当中我们看
在分析模型的时候
我们有用例文本
用例图
活动图
泳道图
协作图
状态图和顺序图
那么通过这些图形
我们可以直接导出一些个技术接口设计
导航设计和图形用户界面设计
这些都是我们的接口设计元素当中的设计成果
那么在构件级的设计元素当中
我们从分析模型当中的类图
分析包
CRC模型
协作图
数据流图
控制流图
处理过程描述
状态图和顺序图
我们可以导出构件图 设计类
活动图和顺序图
这些作为初步的设计结果
然后随着逐步求精的过程
我们可以导出更加详细的设计的构件图
设计类
更加详细的活动图和顺序图
那么在最后这一列部署级的元素当中
我们根据分析模型当中的
系统的分析需求当中的约束
和交互操作
以及我们的目标和配置
我们可以推导出设计当中的设计类实现
子系统
协作图
构件图
设计类
活动图和顺序图
然后进一步通过这些设计类实现
子系统
协作图
构件图还有设计类和活动图 顺序图等
来推导出我们的部署局设计元素的最终成果
也就是我们的部署图
关于体系结构模型
我们可以从以下三个来源导出
第一个是
我们要构建的软件的应用领域的信息
我们根据应用领域的信息
可以导出一些个常见的系统的体系结构
第二个
特定的需求模型元素
如数据流图或分析图
或者在现有问题当中它们的关系和协作
我们可以推导出一些个体系结构模型当中的
体系结构模型元素
第三个
我们可以通过已经获得的体系结构的风格和模式
来导出体系结构设计模型的设计元素
体系结构设计元素通常被描述为一组
相互联系的子系统
而且
常常从需求模型当中的
分析包中可以派生出来
每个子系统都有其自己的体系结构
比如
图形用户界面
可能根据之前存在的用户接口体系结构
进行了结构化而得到 等等
那我们的设计元素主要就包括五个部分
设计元素包括数据元素
体系结构元素
接口元素
构件元素和部署元素
在我们的数据元素当中
我们可以通过数据模型推导出数据结构
我们还可以通过数据模型
设计出数据库的体系结构
但是我们的数据结构和数据库体系结构
分别有两门专门的课程来讲述相关的内容
在我们的软件工程理论这个课程里面
就不做过多的解释
那么下面我们看一下体系结构元素
我们的体系结构元素包括了应用领域
包括了分析类和它们的关系
协作和行为
被转换成设计实现
以及我们的模式和“风格”
也可以总结出我们的体系结构元素
那么还有我们的接口元素
我们的接口元素包括用户界面
以及
我们的系统与其他系统的外部接口
设备
和网络
或者是其他生产者或信息的使用者之间的接口
以及在我们的系统内部的不同构件之间的
内部接口
所以
我们的接口元素包括三个方面
首先是系统与用户的接口
也就是我们的用户界面
然后是
系统与其他系统的外部接口
与其他的外部软件系统
硬件系统
网络和其他的生产者和使用者的接口
那么第三个就是在我们的系统内部的
不同构件之间的内部接口
这三个接口的主要内容
都是我们设计当中的接口元素的重要组成部分
那么 下一个是构件元素
构件元素是我们设计当中的很重要的一部分内容
也就是我们系统当中的所有的构件的设计
最后是部署元素
部署元素是在完成了构件和接口设计之后
我们描述的我们系统 子系统以及构件
在硬件或者是其他的环境当中的部署关系
那么我们先看一下体系结构元素
体系结构元素
我们有三个获取的来源
第一个就是
关于将要构件的软件的应用领域的相关信息
第二个是
特定的需求模型元素
比如数据流图或者分析类
以及在现有问题中它们的关系和协作
再有就是
我们可以通过体系结构的模式和风格
来获得
体系结构非常重要
因为体系结构
使得人们可以更好的理解系统的整体结构
然后我们看一下接口元素
我们说接口元素包括用户界面
包括与其他系统的外部接口
与其他的设备网络
或者其他的生产者
和信息使用者之间的外部接口
接口元素还包括不同的设计构件之间的内部接口
那么我们下面看一下右面这张图
接口设计相当于一组房屋的门
窗
和外部设施的详细绘图以及规格说明
门窗
外部设施的详细图纸
以及规格说明
作为平面图的一个部分
它们大体上可以告诉我们
事件和信息如何流入和流出
我们见到的这个住宅
以及
如何在平面图的房间内进行流动的
那我们的软件接口设计元素
描述的是信息如何流入
和流出我们的系统
以及
被定义为体系结构的一部分的构件之间
是如何通信的
我们图中这个例子的ControlPanel的类
提供了和键盘相关的行为
因此
必须实现它的操作
比如read KeyStroke
和decode key这两个操作
如果我们要把这些操作提供给其他的类
比如 在我们的例子当中
操作提供给了WirelessPDA
和Mobilephone
来使用的话
那么我们就要定义如图所示的接口
这样是会十分有帮助
在图中 我们定义了名为keyPad的接口
它表示为一个interface的构造型
或者用一个带有标识
且用一条线
和类相连的小圆圈来表示
我们定义接口时
并没有实现键盘的行为所需的属性和操作的集合
带有三角箭头的虚线
表示了Control panel类
提供了keyPad操作
以作为其行为的一个部分
那么 在UML中
被称为实现
也就是说
ControlPanel行为的一部分
将通过实现keypad操作来实现
这些操作将被提供给那些
访问这个接口的其他类
我们下面看一下构件设计元素
构件级设计完整的描述了
每个软件构件的内部的细节
构件级设计为所有局部数据对象
定义了数据结构
构件级设计
为所有在构件内发生的处理定义
算法的相关细节
构件级的设计
定义了允许访问所有构件的这些操作
或者是行为的接口
构件级设计元素
相当于一个房屋中的
每个房间的一组详细图
以及相关的规格说明
这些图描绘了每个房间内的布线和管道
电器插座和墙上的开关
水龙头 水池等等
这些与该房间相关的任何其他的细节
构件级的设计
完整的描述了
每个软件构件的内部细节
为此
构件级的设计
为所有的局部数据对象定义了数据结构
而且
为所有在构件内发生的处理
定义了相关的算法的细节
并定义了允许
该方法所有构件操作的接口
图中的例子
我们有一个SensorManagement的构件
虚线连接到了Sensor类
那么
SensorManagement这个构件
完成了所有和sensor相关的功能
那包括可能的监控
和配置sensor的相关的功能
我们下面再看一下部署级的设计元素
我们说在完成了接口设计和构件级设计之后
我们可以进行系统的部署级设计
我们的部署级设计元素主要是完成我们的
相关的软件构件
和子系统
将如何在支持软件的物理计算环境内进行分布
例如
我们图中的例子的SafeHome产品的元素
会被配置在三种主要的计算环境中运行
包括基于住宅的PC
和SafeHome这个产品的控制面板
和位于CPI公司的服务器
那么 图中的标号标出了
每个计算元素中
含有的子系统的相关的功能
例如
在个人计算机PC中有完成
安全
监视
住宅管理和通信功能的子系统
此外 还有供外部访问的子系统
以管理外界资源对SafeHome系统的访问
每个子系统都需要进行细化
用以说明该子系统所实现的所有相关构件
那么 下面我们进行一下设计模型元素的总结
在设计模型元素中
我们有五个组成部分
是
数据元素
体系结构元素
接口元素
构件元素和部署元素
其中 数据元素会在其他的课程当中进行讲解
那么 在我们这里边讲的体系结构元素
包括我们的应用领域信息
包括从分析类
和分析类之间的关系协作
和行为转换的设计的实现
还有从模式和风格导出的体系结构元素
那么体系结构元素是我们后面的接口元素
和构件元素设计的基础
接口元素中我们包括用户界面
包括与其他系统的外部接口
包括与设备网络
和其他生产者或者信息的使用者的接口
以及在系统内部不同的构件之间的内部接口
那么再有就是构件元素和部署元素
构件元素完成了在一个构件内部的
数据和算法的相关设计
那么部署元素是完成了
一个子系统或者是几个子系统
以及其含有的构件
在物理计算环境的部署关系
好 以上就是我们今天关于设计模型元素的讲解
谢谢大家
-课程概述
-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章 习题