§ 4.6面向对象方法子 系 统 设 计类及对象设计消息设计责任设计面向对象设计的四个层次:
4.6.1 将 OO分析模型转换到 OO设计模型用例对象 -关系模型
CRC
索引卡片子 系 统 设 计类及对象设计消息设计责任设计分析模型 设计模型对象 -行为模型将分析模型转换为软件设计数据字典数据流图
E-R图状态变迁图加工规约控制规约数据对描述象数 据 设 计体系结构设计接口设计过程设计分析模型 设计模型结构化设计的四个层次数 据 设 计体系结构设计接口设计过程设计子 系 统 设 计类及对象设计消息设计责任设计面向对象设计的四个层次由 OO分析模型转换到 OO设计模型用例图类 图交互图状态图包图方法描述,if A then
Calculate Sales Tax
Calculate Total Amount
End if
设计带方法的类图系统内部保险单包图示例客户保险单填写界面数据库界面
(abstract)
Oracle界面
Sybase界面客户支持系统客户维护子系统包图示例库存管理子系统订单输入子系统目录维护子系统订单执行子系统客户支持系统 包括设计类的包图示例客户维护子系统订单输入子系统目录维护子系统订单执行子系统客户 目录 包订单条目 订单交易订单 退货条目发运人 运输
Fichman和 Kemerer提出的 10种 设计建模成分
模块层次的表示
数据定义规约
过程逻辑的规约
端到端处理序列的指明
对象状态和变迁的表示
类及层次的定义
操作到类的赋予
详细的操作定义
消息连接的规约
排它服务的标识结构化方法所不支持的
OOD的四个层次:
子系统层,包含每个子系统的表示类和对象层,包含类层次和每个对象的设计表示消息层,包含使得每个对象能够和其协作者通信的细节,建立系统的外部和内部接口责任层,包含针对每个对象的所有属性和操作的数据结构和算法的设计目前流行的 OOA方法概述
Booch方法
Booch的 OOD微开发过程概述:
系统结构计划
战术的设计
发布计划目前流行的 OOD方法概述
Coad-Yourdon方法
Coad-Yourdon的 OOD过程概述:
问题域部分
人机交互部分
任务管理部分
数据管理部分目前流行的 OOD方法概述
Rumbaugh方法 ( 简称 OMT)
Rumbaugh的 OOD过程概述:
进行系统设计
进行对象设计
实现在系统设计中定义的控制机制
调整类结构以加强继承性
设计消息序列以实现对象关系(关联)
包装类和对象为模块统一的 OOD方法
UML被组织进两个主要的设计活动:
系统设计系统设计的主要目标是表示软件体系结构
对象设计对象设计着重于对象及其相互交互的描述软件体系结构可分为四种不同的体系:
概念结构包括部件、互连、原则和性能等
代码结构包括软件的配置管理、系统建造等
模块结构包括模块界面、模块管理、模块控制和一致性等
执行结构包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等系统设计系统设计的主要目标是表示软件体系结构。
对面向对象开发而言:?
概念体系结构 涉及静态类模型的结构和该模型的构件间的连接。
模块体系结构 描述系统被分成子系统或模块的方式以及它们如何通过移入和移出数据而通信。
代码体系结构 定义程序代码如何被组织为文件和目录以及分组为库。
执行体系结构 关注于系统的动态方面以及任务和操作执行时构件间的通信。
对象设计对象设计着重于对象及其相互交互的描述。
在对象设计期间:?
属性数据结构和所有操作的过程的详细规约被创建。
所有属性的可见性(公共的、私有的或保护的)被定义,对象间的接口被精化以定义完整的消息模型的细节。
OOA与 OOD的本质:
OOA是一个分类活动,即分析问题力图确定在开发解决方案时可应用的对象 类,
同时确定对象关系和行为。
OOD使得软件工程师能够确定从类中导出的 对象,以及这些对象的相互关联,
此外,OOD描述了,对象间的关系如何达到 ;
行为如何实现;
对象间通信如何实现。
从 OOA到 OOD
逐渐扩充模型的过程
OOD分为两个阶段,
高层设计(系统设计)
低层设计(对象设计)
OOD过程流系统设计分析对象设计
OOD导出的系统结构数据管理其它系统文件
RDBMS
OODBMS
设备系统交互界面问题论域人机交互界面
…,,…,,
…,,…,,
窗口报告子系统设计 过程中必须定义四种重要的设计结构问题域 — 直接负责实现客户需求的子系统人机交互 — 实现用户界面的子系统
(包括可复用的 GUI子系统)
任务管理 — 负责控制和协调并发任务的子系统,任务可能被包装在一个子系统中或不同的子系统间;
数据管理 — 负责对象的存储和检索的子系统在对象设计过程中将分析模型转换为设计模型分析模型类属性方法关系行为设计模型对象数据结构算法消息传递控制
4.6.2 对象模型技术 (OMT)的 OOD方法系统设计 过程:
将分析模型划分为子系统
确定并发性
将子系统分配到处理器和任务
选择实现数据管理的基本策略
标识全局资源及访问它们所需的控制机制
为系统定义合适的控制机制
考虑边界条件如何处理系统分解:
子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的内聚集合。
定义子系统遵循的标准:
子系统应有良好的接口
除少数,通信类,,子系统中的类应只和该子系统中的其它类协作
子系统数目不应太多
可在子系统内划分以降低复杂性划分 分析模型 子系统第三层数据库服务器第二层后台库服务器第一层前台客户机客户端子系统端子系统服务器端子系统端子系统请求请求请求合约 合约子系统间通信子系统间协作的模型
4.6.3 Yourdon的 OOD方法主体层类及对象层结构层属性层服务层问题域部分
(PDC)
人机交互部分
(HIC)
任务管理部分
(TMC)
数据管理部分
(DMC)
OOD阶段建立OOA阶段模型
OOD由四个活动组成:
OOD模型
4.6.3.1 问题域部分的设计
OOA的模型直接放到 OOD的问题域部,OOD阶段对 OOA结果进行改动和增补。
根据需求变化,对 OOA产生模型的类与对象、结构、属性、操作进行组合与分解,增加必要的类、属性和关系。
对 OOA结果加以增补要考虑的因素
重用设计
把问题域专用类组合在一起
通过增添一般类而建立协议
调整继承的支持级别
改进性能
增加低层的类和对象
4.6.3.2 人机交互部分的设计虽然好的人机交互部分不可能挽救一个功能很差的软件,但性能很差的人机交互部分将使一个功能很强的产品变的不可接受 !
传感器图形项目传感器控制系统人机交互部分设计举例调用项目传感器状况窗口显示菜单调用菜单活动传感器项目调用项目传感器报警窗口显示菜单调用菜单活动位置传感器报警项目调用项目传感器窗口坐标
4.6.3.3 任务管理部分的设计
1.为什么要有任务管理部分系统中有许多并发行为时,需要按照各个行为的协调和通信关系,划分各种任务 (进程 ),简化并发行为的设计和编码。
根据动态模型分析、定义并发性;
选择软件实现的控制方法。
2.怎样设计任务管理部分任务管理主要包括 任务的选择和调整
识别事件驱动任务
识别时钟驱动任务
识别优先任务和关键任务
识别协调者
审查每个任务
定义每个任务传感器控制系统任务管理部分设计举例任务协调器协调任务名字描述优先级服务协调通信初始化开始准备好结束
10,m
传感器任务描述举例任务 1
名字,传感器读出。
描述,该任务在需要脉冲调幅时负责读出传感器。
包含,传感器,样本。
优先级,中等。
协调,时钟驱动,100ms的时间间隔。
通信,从输入线(传感器)得到值,
给雷达邮箱发送值。
4.6.3.4 数据管理部分的设计数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响 (不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式,)
如何设计数据管理部分
(1)数据存放方法设计
(2)相应服务的设计为每个需存储其对象的类增加一个属性和服务面向对象设计实例,简化的 C++类库管理系统需求描述:
管理用 C++语言定义的类
用户能够方便地向类库中添加新类,并建立新类与库中原有类的关系
用户能够通过类名从库中查询出指定的类
用户能够查看或修改与指定类有关的信息
用户能够从类中删除指定的类
用户能够在浏览窗中方便、快速地浏览当前类的父类和子类
具有,联想,浏览功能
用户能查看或修改某个类的指定的成员函数的源代码
本系统是一个简化的多用户系统,每个用户都可以建立自己的类库,不同类库之间互不干扰
对于用户误操作或错误的输入,能提示并继续稳定运行
系统易学,用户界面应是 GUID的
OOA阶段建立的类库管理系统对象模型类库库名类条目列表插入类条目删除类条目
……
1+
0,n1
类条目类名父类列表
……
设置类名添加父类
……
成员函数函数名访问权虚基类标志
……
父类名字访问权虚基类标志数据成员数据名访问权数据类型
0,n2 0,n3
0,m
用户拥有面向对象设计 ( 简化的 C++类库管理系统 )
1,设计类库结构两种可把类条目组织成类库得数据结构,
二叉树
链表,容易表示多重继承
2,设计问题域子系统 — 对对象模型做补充和细化
类条目( ClassEntry)
类库( ClassEntryLink)
父类( ClassBase)、成员函数( ClassFun)
和数据成员( ClassData)
类条目缓冲区( ClassEntryBuffer)
类条目类名父类列表成员函数列表数据成员列表类条目类名父类链表头指针成员函数链表头指针数据成员链表头指针注释指向下一类条目指针新增数据成员新增操作设置类名添加父类删除父类更改父类添加成员函数删除成员函数更改成员函数添加数据成员删除数据成员更改数据成员查找并取出指定父类信息查找并取出指定成员函数信息查找并取出指定数据成员信设置类名添加父类删除父类更改父类添加成员函数删除成员函数更改成员函数添加数据成员删除数据成员更改数据成员具体化类库库名类条目列表插入类条目删除类条目存储类库读出类库具体化为类库库名类链头指针插入类条目删除类条目把内存中类链表写到文件读文件并在内存建立链表按类名查找类条目并把内容复制到指定地点新增操作具体化父类名字访问权虚基类标志 新增数据成员父类名字访问权虚基类标志指向下一个父类的指针成员函数函数名访问权虚基类标志返回值类型参数代码 新增数据成员成员函数函数名访问权虚基类标志返回值类型参数代码指向下一个成员函数的指针数据成员数据名访问权数据类型 新增数据成员数据成员数据名访问权数据类型指向下一个数据成员的指针类库 (ClassEntryLink)示意图下一个 ClassEntry
ClassEntryLink ClassEntry
……
ClassBase
ClassData
ClassFun
下一个
ClassBase……
下一个
ClassFun ……
下一个
ClassData……
类条目缓冲区( ClassEntryBuffer)
为便于处理当前类,额外设置类条目缓冲区,它是从 ClassEntry类派生出来的类,除继承 ClassEntry中的数据成员和成员函数外,
主要增加用于域窗口或类链交换数据的成员函数 ClassEntry
ClassEntryBuffer
面向对象设计 ( 简化的 C++类库管理系统 )
3,设计人机交互子系统?
窗口
登录窗口 (用户输入账号、确认 /放弃 )
主窗口 (创建 /浏览 /存储 /退出 )
创建窗口 (输入新类名 /选择已有类名,三个分组框分别管理父类、成员函数和数据成员,每组框有:添加 /编辑 /
删除 )
选择浏览方式窗口 (按类名浏览 /按类关系浏览 )
类名浏览窗口
类关系浏览窗口?
重用,基于 VC开发环境,尽可能重用 MFC中类
4,设计其它类
ClassBase
CWinApp
ClassToolsApp
CDocument
ClassEntryLink
ClassEntry
0,M
ClassFun ClassData ClassEntryBuffer
0,n1 0,n2 0,n3
OOD得出的类库管理系统对象模型
Create_Data
CDialog
Create_Base Create_Fun Browse_Name Browse_Inherit
Login Classtools Create_Class Create_Select
消息连接软件体系结构的有关概念什么是软件体系结构
软件体系结构定义了软件局部和总体计算部件的构成,以及这些部件之间的相互作用关系。
从整体看,软件体系结构是由结构和功能各异、相互作用的部件集合,按照层次构成的。它包括了系统基础构成单元、
它们之间的作用关系、在构成系统时它们的合成方法以及对合成约束的描述。
软件体系结构的类别
概略型
需求型
设计型软件体系结构的重要性
规划阶段
需求分析阶段
设计阶段
实施阶段
评估阶段
维护升级阶段软件设计的目标
设计应该是便于维护和升级的,因而应该是模块化的
设计应该是便于移植的
设计应该具有适应性
设计过程应该受到理性化的控制
设计应该表现出概念的完整性软件设计思想
强调信息隐蔽的单元概念
应用基于操作和数据封装构成的单元设计技术
应用专门的机制可靠地处理并发控制和分布系统问题
提出基于模型的系统结构和设计方法
明确提出软件体系结构的设计思想关于软件体系结构的认识发展
1992年,Dewayne Perry和 Alex Wolf定义:
软件体系结构由具有一定形式的结构化元素组成,包括处理元素、数据元素和连接元素三类。
1993年,David Garlan和 Mary Shaw提出:
软件体系结构是设计过程的一个层次,它处理那些超越算法和数据结构的设计,研究 整体结构和描述方法。体系结构还包括大体组织结构、全局控制结构、通信和同步以及数据存取的协议、
设计元素的功能、物理分布和合成、设计方案的选择等。
关于软件体系结构的认识发展
1994年,Bass等提出:
软件体系结构可以由三个方面描述:功能划分、结构和功能到结构的分配。
1995年,Garlan和 Perry 提出:
软件体系结构包括系统构件的结构、构件的相互关系、以及控制构件设计演化的原则和指导三个方面。
1997年,Bass,Clements和 Kazman指出:
软件体系结构包括部件、部件的外部可见性以及相互关系。
普通部件及其支持的相互作用序号部件类型 部件支持的相互作用类型
1 模块 (Module) 过程调用、数据共享
2 对象 (Object) 方法调用
3 过滤器 (Filter) 数据流
4 过程 (Process) 消息传递、远程调用、
通讯协议、同步
5 数据文件 (Data file) 读写
6 数据库 (Database) 模式、查询语言
7 文档 (Document) 共享表示假设软件体系结构可分为四种不同的体系:
概念结构包括部件、互连、原则和性能等
代码结构包括软件的配置管理、系统建造等
模块结构包括模块界面、模块管理、模块控制和一致性等
执行结构包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等与软件体系结构有关的研究:
体系结构风格 (Architecture Styles)
表示软件系统的一种特别的基本结构,以及相关的构造方法
设计模式 (Design Patterns)
构造型模式、结构型模式、行为型模式
框架 (Framework)
另一种研究和构造软件体系结构的方法,更多的是关于应用领域问题的已建立的系统结构。
软件体系结构的层次结构
软件的构成
软件的物质基础
软件的结构基础
软件的层次结构模型
软件体系结构的层次结构模型
软件体系结构的体系软件的构成
软件体系结构需要基础
软件体系结构需要层次
软件体系结构需要模式软件的物质基础软件设计的物质基础是计算机硬件,当前的计算机硬件决定了软件设计和实现的出发点,计算机硬件的发展影响着软件体系结构。
计算机硬件体系结构分类
SISD单指令流单数据流计算机控制 处理 存储指令 数据指令计算机硬件体系结构分类
SIMD单指令流多数据流计算机控制处理 2 存储 2指令 数据 2
存储 1
存储 n
处理 1
处理 n
…… ……
数据 1
数据 n
计算机硬件体系结构分类
MISD多指令流单数据流计算机控制 2 处理 2 存储 2
指令 1 存储 1
存储 n
处理 1
处理 n
…… ……
数据数据控制 1
控制 n
指令 2
指令 n
指令 1
指令 2
指令 n
……
计算机硬件体系结构分类
MIMD多指令流多数据流计算机控制 2 处理 2 存储 2
指令 1 存储 1
存储 n
处理 1
处理 n
…… ……
控制 1
控制 n
指令 2
指令 n
指令 1
指令 2
指令 n
……
数据 2
数据 1
数据 n
多处理机系统具有共享存储结构的多处理机控制处理
MAP
控制处理
MAP……
……
……
存储 存储……
互连网络通道 I/O
通道 I/O
…… ……
多处理机系统具有分布存储结构的多处理机控制处理
MAP
控制处理
MAP
……
……
……
互连网络
I/O存储 存储分布计算系统分布计算网络交换机 交换机电信网络网络软件的结构基础
结构控制流
部件连接方式
结构化连接模式
基本数据类型
抽象数据类型
进程及运行环境
分时并发计算
资源共享 /并行同步
实时系统
软件结构的四视图观软件体系结构的四视图概念视图模块视图代码视图运行视图部件连接器配置模块子系统层模块限制新模块分割部件连接器配置运行限制新模块分割模块变化成运行实体运行实体源代码硬件和操作系统体系结构软件的层次结构模型
计算机网络的体系结构
计算机操作系统的体系结构软件体系结构的层次结构模型第 6层:应用层第 5层:系统结构模式层层第 4层:资源和管理调度层第 3层:基础控制描述层第 2层:软化的硬件层第 1层:计算机硬件层软件体系结构的设计原理?
抽象
封装
信息隐蔽
模块化
注意点分散 (Separation of Concerns)
耦合和内聚
充分性和原始性
策略和实现的分离
接口和实现的分离
分而制之 (Divide-and-conquer)
层次化软件的非功能特性
可变性 /可维护性可变性包括,可维护性可扩充性可重构性可移植性
互操作性
效率
可靠性,容错性健壮性
可测试性
可重用性
4.6.1 将 OO分析模型转换到 OO设计模型用例对象 -关系模型
CRC
索引卡片子 系 统 设 计类及对象设计消息设计责任设计分析模型 设计模型对象 -行为模型将分析模型转换为软件设计数据字典数据流图
E-R图状态变迁图加工规约控制规约数据对描述象数 据 设 计体系结构设计接口设计过程设计分析模型 设计模型结构化设计的四个层次数 据 设 计体系结构设计接口设计过程设计子 系 统 设 计类及对象设计消息设计责任设计面向对象设计的四个层次由 OO分析模型转换到 OO设计模型用例图类 图交互图状态图包图方法描述,if A then
Calculate Sales Tax
Calculate Total Amount
End if
设计带方法的类图系统内部保险单包图示例客户保险单填写界面数据库界面
(abstract)
Oracle界面
Sybase界面客户支持系统客户维护子系统包图示例库存管理子系统订单输入子系统目录维护子系统订单执行子系统客户支持系统 包括设计类的包图示例客户维护子系统订单输入子系统目录维护子系统订单执行子系统客户 目录 包订单条目 订单交易订单 退货条目发运人 运输
Fichman和 Kemerer提出的 10种 设计建模成分
模块层次的表示
数据定义规约
过程逻辑的规约
端到端处理序列的指明
对象状态和变迁的表示
类及层次的定义
操作到类的赋予
详细的操作定义
消息连接的规约
排它服务的标识结构化方法所不支持的
OOD的四个层次:
子系统层,包含每个子系统的表示类和对象层,包含类层次和每个对象的设计表示消息层,包含使得每个对象能够和其协作者通信的细节,建立系统的外部和内部接口责任层,包含针对每个对象的所有属性和操作的数据结构和算法的设计目前流行的 OOA方法概述
Booch方法
Booch的 OOD微开发过程概述:
系统结构计划
战术的设计
发布计划目前流行的 OOD方法概述
Coad-Yourdon方法
Coad-Yourdon的 OOD过程概述:
问题域部分
人机交互部分
任务管理部分
数据管理部分目前流行的 OOD方法概述
Rumbaugh方法 ( 简称 OMT)
Rumbaugh的 OOD过程概述:
进行系统设计
进行对象设计
实现在系统设计中定义的控制机制
调整类结构以加强继承性
设计消息序列以实现对象关系(关联)
包装类和对象为模块统一的 OOD方法
UML被组织进两个主要的设计活动:
系统设计系统设计的主要目标是表示软件体系结构
对象设计对象设计着重于对象及其相互交互的描述软件体系结构可分为四种不同的体系:
概念结构包括部件、互连、原则和性能等
代码结构包括软件的配置管理、系统建造等
模块结构包括模块界面、模块管理、模块控制和一致性等
执行结构包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等系统设计系统设计的主要目标是表示软件体系结构。
对面向对象开发而言:?
概念体系结构 涉及静态类模型的结构和该模型的构件间的连接。
模块体系结构 描述系统被分成子系统或模块的方式以及它们如何通过移入和移出数据而通信。
代码体系结构 定义程序代码如何被组织为文件和目录以及分组为库。
执行体系结构 关注于系统的动态方面以及任务和操作执行时构件间的通信。
对象设计对象设计着重于对象及其相互交互的描述。
在对象设计期间:?
属性数据结构和所有操作的过程的详细规约被创建。
所有属性的可见性(公共的、私有的或保护的)被定义,对象间的接口被精化以定义完整的消息模型的细节。
OOA与 OOD的本质:
OOA是一个分类活动,即分析问题力图确定在开发解决方案时可应用的对象 类,
同时确定对象关系和行为。
OOD使得软件工程师能够确定从类中导出的 对象,以及这些对象的相互关联,
此外,OOD描述了,对象间的关系如何达到 ;
行为如何实现;
对象间通信如何实现。
从 OOA到 OOD
逐渐扩充模型的过程
OOD分为两个阶段,
高层设计(系统设计)
低层设计(对象设计)
OOD过程流系统设计分析对象设计
OOD导出的系统结构数据管理其它系统文件
RDBMS
OODBMS
设备系统交互界面问题论域人机交互界面
…,,…,,
…,,…,,
窗口报告子系统设计 过程中必须定义四种重要的设计结构问题域 — 直接负责实现客户需求的子系统人机交互 — 实现用户界面的子系统
(包括可复用的 GUI子系统)
任务管理 — 负责控制和协调并发任务的子系统,任务可能被包装在一个子系统中或不同的子系统间;
数据管理 — 负责对象的存储和检索的子系统在对象设计过程中将分析模型转换为设计模型分析模型类属性方法关系行为设计模型对象数据结构算法消息传递控制
4.6.2 对象模型技术 (OMT)的 OOD方法系统设计 过程:
将分析模型划分为子系统
确定并发性
将子系统分配到处理器和任务
选择实现数据管理的基本策略
标识全局资源及访问它们所需的控制机制
为系统定义合适的控制机制
考虑边界条件如何处理系统分解:
子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的内聚集合。
定义子系统遵循的标准:
子系统应有良好的接口
除少数,通信类,,子系统中的类应只和该子系统中的其它类协作
子系统数目不应太多
可在子系统内划分以降低复杂性划分 分析模型 子系统第三层数据库服务器第二层后台库服务器第一层前台客户机客户端子系统端子系统服务器端子系统端子系统请求请求请求合约 合约子系统间通信子系统间协作的模型
4.6.3 Yourdon的 OOD方法主体层类及对象层结构层属性层服务层问题域部分
(PDC)
人机交互部分
(HIC)
任务管理部分
(TMC)
数据管理部分
(DMC)
OOD阶段建立OOA阶段模型
OOD由四个活动组成:
OOD模型
4.6.3.1 问题域部分的设计
OOA的模型直接放到 OOD的问题域部,OOD阶段对 OOA结果进行改动和增补。
根据需求变化,对 OOA产生模型的类与对象、结构、属性、操作进行组合与分解,增加必要的类、属性和关系。
对 OOA结果加以增补要考虑的因素
重用设计
把问题域专用类组合在一起
通过增添一般类而建立协议
调整继承的支持级别
改进性能
增加低层的类和对象
4.6.3.2 人机交互部分的设计虽然好的人机交互部分不可能挽救一个功能很差的软件,但性能很差的人机交互部分将使一个功能很强的产品变的不可接受 !
传感器图形项目传感器控制系统人机交互部分设计举例调用项目传感器状况窗口显示菜单调用菜单活动传感器项目调用项目传感器报警窗口显示菜单调用菜单活动位置传感器报警项目调用项目传感器窗口坐标
4.6.3.3 任务管理部分的设计
1.为什么要有任务管理部分系统中有许多并发行为时,需要按照各个行为的协调和通信关系,划分各种任务 (进程 ),简化并发行为的设计和编码。
根据动态模型分析、定义并发性;
选择软件实现的控制方法。
2.怎样设计任务管理部分任务管理主要包括 任务的选择和调整
识别事件驱动任务
识别时钟驱动任务
识别优先任务和关键任务
识别协调者
审查每个任务
定义每个任务传感器控制系统任务管理部分设计举例任务协调器协调任务名字描述优先级服务协调通信初始化开始准备好结束
10,m
传感器任务描述举例任务 1
名字,传感器读出。
描述,该任务在需要脉冲调幅时负责读出传感器。
包含,传感器,样本。
优先级,中等。
协调,时钟驱动,100ms的时间间隔。
通信,从输入线(传感器)得到值,
给雷达邮箱发送值。
4.6.3.4 数据管理部分的设计数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理方案的影响 (不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式,)
如何设计数据管理部分
(1)数据存放方法设计
(2)相应服务的设计为每个需存储其对象的类增加一个属性和服务面向对象设计实例,简化的 C++类库管理系统需求描述:
管理用 C++语言定义的类
用户能够方便地向类库中添加新类,并建立新类与库中原有类的关系
用户能够通过类名从库中查询出指定的类
用户能够查看或修改与指定类有关的信息
用户能够从类中删除指定的类
用户能够在浏览窗中方便、快速地浏览当前类的父类和子类
具有,联想,浏览功能
用户能查看或修改某个类的指定的成员函数的源代码
本系统是一个简化的多用户系统,每个用户都可以建立自己的类库,不同类库之间互不干扰
对于用户误操作或错误的输入,能提示并继续稳定运行
系统易学,用户界面应是 GUID的
OOA阶段建立的类库管理系统对象模型类库库名类条目列表插入类条目删除类条目
……
1+
0,n1
类条目类名父类列表
……
设置类名添加父类
……
成员函数函数名访问权虚基类标志
……
父类名字访问权虚基类标志数据成员数据名访问权数据类型
0,n2 0,n3
0,m
用户拥有面向对象设计 ( 简化的 C++类库管理系统 )
1,设计类库结构两种可把类条目组织成类库得数据结构,
二叉树
链表,容易表示多重继承
2,设计问题域子系统 — 对对象模型做补充和细化
类条目( ClassEntry)
类库( ClassEntryLink)
父类( ClassBase)、成员函数( ClassFun)
和数据成员( ClassData)
类条目缓冲区( ClassEntryBuffer)
类条目类名父类列表成员函数列表数据成员列表类条目类名父类链表头指针成员函数链表头指针数据成员链表头指针注释指向下一类条目指针新增数据成员新增操作设置类名添加父类删除父类更改父类添加成员函数删除成员函数更改成员函数添加数据成员删除数据成员更改数据成员查找并取出指定父类信息查找并取出指定成员函数信息查找并取出指定数据成员信设置类名添加父类删除父类更改父类添加成员函数删除成员函数更改成员函数添加数据成员删除数据成员更改数据成员具体化类库库名类条目列表插入类条目删除类条目存储类库读出类库具体化为类库库名类链头指针插入类条目删除类条目把内存中类链表写到文件读文件并在内存建立链表按类名查找类条目并把内容复制到指定地点新增操作具体化父类名字访问权虚基类标志 新增数据成员父类名字访问权虚基类标志指向下一个父类的指针成员函数函数名访问权虚基类标志返回值类型参数代码 新增数据成员成员函数函数名访问权虚基类标志返回值类型参数代码指向下一个成员函数的指针数据成员数据名访问权数据类型 新增数据成员数据成员数据名访问权数据类型指向下一个数据成员的指针类库 (ClassEntryLink)示意图下一个 ClassEntry
ClassEntryLink ClassEntry
……
ClassBase
ClassData
ClassFun
下一个
ClassBase……
下一个
ClassFun ……
下一个
ClassData……
类条目缓冲区( ClassEntryBuffer)
为便于处理当前类,额外设置类条目缓冲区,它是从 ClassEntry类派生出来的类,除继承 ClassEntry中的数据成员和成员函数外,
主要增加用于域窗口或类链交换数据的成员函数 ClassEntry
ClassEntryBuffer
面向对象设计 ( 简化的 C++类库管理系统 )
3,设计人机交互子系统?
窗口
登录窗口 (用户输入账号、确认 /放弃 )
主窗口 (创建 /浏览 /存储 /退出 )
创建窗口 (输入新类名 /选择已有类名,三个分组框分别管理父类、成员函数和数据成员,每组框有:添加 /编辑 /
删除 )
选择浏览方式窗口 (按类名浏览 /按类关系浏览 )
类名浏览窗口
类关系浏览窗口?
重用,基于 VC开发环境,尽可能重用 MFC中类
4,设计其它类
ClassBase
CWinApp
ClassToolsApp
CDocument
ClassEntryLink
ClassEntry
0,M
ClassFun ClassData ClassEntryBuffer
0,n1 0,n2 0,n3
OOD得出的类库管理系统对象模型
Create_Data
CDialog
Create_Base Create_Fun Browse_Name Browse_Inherit
Login Classtools Create_Class Create_Select
消息连接软件体系结构的有关概念什么是软件体系结构
软件体系结构定义了软件局部和总体计算部件的构成,以及这些部件之间的相互作用关系。
从整体看,软件体系结构是由结构和功能各异、相互作用的部件集合,按照层次构成的。它包括了系统基础构成单元、
它们之间的作用关系、在构成系统时它们的合成方法以及对合成约束的描述。
软件体系结构的类别
概略型
需求型
设计型软件体系结构的重要性
规划阶段
需求分析阶段
设计阶段
实施阶段
评估阶段
维护升级阶段软件设计的目标
设计应该是便于维护和升级的,因而应该是模块化的
设计应该是便于移植的
设计应该具有适应性
设计过程应该受到理性化的控制
设计应该表现出概念的完整性软件设计思想
强调信息隐蔽的单元概念
应用基于操作和数据封装构成的单元设计技术
应用专门的机制可靠地处理并发控制和分布系统问题
提出基于模型的系统结构和设计方法
明确提出软件体系结构的设计思想关于软件体系结构的认识发展
1992年,Dewayne Perry和 Alex Wolf定义:
软件体系结构由具有一定形式的结构化元素组成,包括处理元素、数据元素和连接元素三类。
1993年,David Garlan和 Mary Shaw提出:
软件体系结构是设计过程的一个层次,它处理那些超越算法和数据结构的设计,研究 整体结构和描述方法。体系结构还包括大体组织结构、全局控制结构、通信和同步以及数据存取的协议、
设计元素的功能、物理分布和合成、设计方案的选择等。
关于软件体系结构的认识发展
1994年,Bass等提出:
软件体系结构可以由三个方面描述:功能划分、结构和功能到结构的分配。
1995年,Garlan和 Perry 提出:
软件体系结构包括系统构件的结构、构件的相互关系、以及控制构件设计演化的原则和指导三个方面。
1997年,Bass,Clements和 Kazman指出:
软件体系结构包括部件、部件的外部可见性以及相互关系。
普通部件及其支持的相互作用序号部件类型 部件支持的相互作用类型
1 模块 (Module) 过程调用、数据共享
2 对象 (Object) 方法调用
3 过滤器 (Filter) 数据流
4 过程 (Process) 消息传递、远程调用、
通讯协议、同步
5 数据文件 (Data file) 读写
6 数据库 (Database) 模式、查询语言
7 文档 (Document) 共享表示假设软件体系结构可分为四种不同的体系:
概念结构包括部件、互连、原则和性能等
代码结构包括软件的配置管理、系统建造等
模块结构包括模块界面、模块管理、模块控制和一致性等
执行结构包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等与软件体系结构有关的研究:
体系结构风格 (Architecture Styles)
表示软件系统的一种特别的基本结构,以及相关的构造方法
设计模式 (Design Patterns)
构造型模式、结构型模式、行为型模式
框架 (Framework)
另一种研究和构造软件体系结构的方法,更多的是关于应用领域问题的已建立的系统结构。
软件体系结构的层次结构
软件的构成
软件的物质基础
软件的结构基础
软件的层次结构模型
软件体系结构的层次结构模型
软件体系结构的体系软件的构成
软件体系结构需要基础
软件体系结构需要层次
软件体系结构需要模式软件的物质基础软件设计的物质基础是计算机硬件,当前的计算机硬件决定了软件设计和实现的出发点,计算机硬件的发展影响着软件体系结构。
计算机硬件体系结构分类
SISD单指令流单数据流计算机控制 处理 存储指令 数据指令计算机硬件体系结构分类
SIMD单指令流多数据流计算机控制处理 2 存储 2指令 数据 2
存储 1
存储 n
处理 1
处理 n
…… ……
数据 1
数据 n
计算机硬件体系结构分类
MISD多指令流单数据流计算机控制 2 处理 2 存储 2
指令 1 存储 1
存储 n
处理 1
处理 n
…… ……
数据数据控制 1
控制 n
指令 2
指令 n
指令 1
指令 2
指令 n
……
计算机硬件体系结构分类
MIMD多指令流多数据流计算机控制 2 处理 2 存储 2
指令 1 存储 1
存储 n
处理 1
处理 n
…… ……
控制 1
控制 n
指令 2
指令 n
指令 1
指令 2
指令 n
……
数据 2
数据 1
数据 n
多处理机系统具有共享存储结构的多处理机控制处理
MAP
控制处理
MAP……
……
……
存储 存储……
互连网络通道 I/O
通道 I/O
…… ……
多处理机系统具有分布存储结构的多处理机控制处理
MAP
控制处理
MAP
……
……
……
互连网络
I/O存储 存储分布计算系统分布计算网络交换机 交换机电信网络网络软件的结构基础
结构控制流
部件连接方式
结构化连接模式
基本数据类型
抽象数据类型
进程及运行环境
分时并发计算
资源共享 /并行同步
实时系统
软件结构的四视图观软件体系结构的四视图概念视图模块视图代码视图运行视图部件连接器配置模块子系统层模块限制新模块分割部件连接器配置运行限制新模块分割模块变化成运行实体运行实体源代码硬件和操作系统体系结构软件的层次结构模型
计算机网络的体系结构
计算机操作系统的体系结构软件体系结构的层次结构模型第 6层:应用层第 5层:系统结构模式层层第 4层:资源和管理调度层第 3层:基础控制描述层第 2层:软化的硬件层第 1层:计算机硬件层软件体系结构的设计原理?
抽象
封装
信息隐蔽
模块化
注意点分散 (Separation of Concerns)
耦合和内聚
充分性和原始性
策略和实现的分离
接口和实现的分离
分而制之 (Divide-and-conquer)
层次化软件的非功能特性
可变性 /可维护性可变性包括,可维护性可扩充性可重构性可移植性
互操作性
效率
可靠性,容错性健壮性
可测试性
可重用性