41体系结构视图
4+1模型案例

案例教学1:4+1视图方法进行软件体系结构设计要开发出用户满意的软件并不是件容易的事,软件体系结构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。
本文从理解需求种类的复杂性谈起,通过具体案例的分析,展示了如何通过RUP的4+1视图方法,针对不同需求进行体系结构设计,从而确保重要的需求一一被满足。
1、呼唤体系结构设计的多重视图方法灵感一闪,就想出了把大象放进冰箱的办法,这自然好。
但希望每个体系结构设计策略都依靠灵感是不现实的--我们需要系统方法的指导。
需要体系结构设计的多重视图方法,从根本上来说是因为需求种类的复杂性所致。
以工程领域的例子开道吧。
比如设计一座跨江大桥:我们会考虑"连接南北的公路交通"这个"功能需求",从而初步设计出理想化的桥墩支撑的公路桥方案;然后还要考虑造桥要面临的"约束条件",这个约束条件可能是"不能影响万吨轮从桥下通过",于是细化设计方案,规定桥墩的高度和桥墩之间的间距;另外还要顾及"大桥的使用期质量属性",比如为了"能在湍急的江流中保持稳固",可以把大桥桥墩深深地建在岩石层之上,和大地浑然一体;其实,"建造期间的质量属性"也很值得考虑,比如在大桥的设计过程中考虑"施工方便性"的一些措施。
和工程领域的功能需求、约束条件、使用期质量属性、建造期间的质量属性等类似,软件系统的需求种类也相当复杂,具体分类如图1所示。
图1 软件需求分类的复杂性2、超市系统案例:理解需求种类的复杂性例子是最好的老师。
为了更好地理解软件需求种类的复杂性,我们来分析一个实际的例子。
在表1中,我们列举了一个典型的超市系统的需求子集,从这个例子中可以清晰地看到需求可以分为两大类:功能需求和非功能需求。
表1 超市系统案例:理解需求种类的复杂性简单而言,功能需求就是"软件有什么用,软件需要做什么"。
Kruchten的4+1模型描述软件体系结构2

2013-7-9
25
对体系结构进行的描述是围绕着以上4个视图展开的。然后,通 过选择出的一些用例对体系结构加以说明。这些用例被称作场景 (scenarios),它们构成了第5个视图。实际上,体系结构在某种 程度上是由场景演化而来的。
2013-7-9
26
体系结构的概念在每个视图里面都可以独立应用。这就是说,可以在每个视图 里面定义体系结构的各种组成元素,如构件、连接件等。对于不同的视图,还 可以选择不同的体系结构风格,因此在同一个系统结构中可以使用多种风格。 此外,在每一种视图里,我们使用该视图特定的符号。这避免了符号用法和意 义的混乱。“4十1”视图模型是一个十分通用的模型:可以便用其他的符号表示 法,也可以使用其他的设计方法,尤其是逻辑视图和过程视图的分解。
终端
连接服务
控制器
编号计划
2013-7-9
32
进程视图的体系结构:过程分解
过程体系结构考虑的是一些非功能性的需求,诸如性能、可用性等。 它所要面对的问题有并发,分布,系统的完整性,容错能力等。它还 要考虑怎样把过程体系结构与逻辑视图体系结构的要点相适应——对 某个对象的某个操作实际上是在哪个控制线程上发生的。
2013-7-9
33
过程视图的体系结构:过程分解
软件被分为独立的任务的集合。每个任务是一个独立的控制线程,可 以在一个处理节点上独立单独调度。因此可以将任务分为主任务和辅 任务。主任务是需要单独解决的体系结构元素。辅任务是由于实现原 因而在本地加入的附加任务(缓冲,超时,等等),例如可以将它们实 现为轻量级的线程。主任务通过一套完善定义的任务间通信机制进行 通信:同步的或异步的基于消息的通信服务、远程过程调用、时间广 播等。不应当假设通信中的主任务处于同一个过程中或处在同一个处 理节点上。辅任务的通信可以采用共享内存的方式或其他双方约定的 方式。 基于过程体系结构设计图,可以估计出消息流和过程负荷。
如何写概要设计

概说概要设计怎么做来源:希赛网作者:厦门巨龙软件工程有限公司卢琳生 [2003/12/22] 摘要:本文是在概要设计实践和学习中的一些心得与学习笔记,希望与大家分享,如有不妥之处欢迎指正。
关键字:概要设计,结构化,OOD正文:在需求明确、准备开始编码之前,要做概要设计,而详细设计可能大部分公司没有做,有做的也大部分是和编码同步进行,或者在编码之后。
因此,对大部分的公司来说,概要设计文档是唯一的设计文档,对后面的开发、测试、实施、维护工作起到关键性的影响。
一、问题的提出概要设计写什么?概要设计怎么做?如何判断设计的模块是完整的?为什么说设计阶段过于重视业务流程是个误区?以需求分析文档还是以概要设计文档来评估开发工作量、指导开发计划准确?结构化好还是面向对象好?以上问题的答案请在文章中找。
二、概要设计的目的将软件系统需求转换为未来系统的设计;逐步开发强壮的系统构架;使设计适合于实施环境,为提高性能而进行设计;结构应该被分解为模块和库。
三、概要设计的任务制定规范:代码体系、接口规约、命名规则。
这是项目小组今后共同作战的基础,有了开发规范和程序模块之间和项目成员彼此之间的接口规则、方式方法,大家就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。
总体结构设计:功能(加工)->模块:每个功能用那些模块实现,保证每个功能都有相应的模块来实现;模块层次结构:某个角度的软件框架视图;模块间的调用关系:模块间的接口的总体描述;模块间的接口:传递的信息及其结构;处理方式设计:满足功能和性能的算法用户界面设计;数据结构设计:详细的数据结构:表、索引、文件;算法相关逻辑数据结构及其操作;上述操作的程序模块说明(在前台?在后台?用视图?用过程?······)接口控制表的数据结构和使用规则其他性能设计。
四、概要设计写什么结构化软件设计说明书结构(因篇幅有限和过时嫌疑,在此不作过多解释)任务:目标、环境、需求、局限;总体设计:处理流程、总体结构与模块、功能与模块的关系;接口设计:总体说明外部用户、软、硬件接口;内部模块间接口(注:接口≈系统界面)数据结构:逻辑结构、物理结构,与程序结构的关系;模块设计:每个模块“做什么”、简要说明“怎么做”(输入、输出、处理逻辑、与其它模块的接口,与其它系统或硬件的接口),处在什么逻辑位置、物理位置;运行设计:运行模块组合、控制、时间;出错设计:出错信息、处错处理;其他设计:保密、维护;OO软件设计说明书结构1 概述系统简述、软件设计目标、参考资料、修订版本记录这部分论述整个系统的设计目标,明确地说明哪些功能是系统决定实现而哪些时不准备实现的。
体系结构蓝图—软件体系结构的4 1视图(中文版)

本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型。
使用多重视图允许独立地处理各"风险承担人":最终用户、开发人员、系统工程师、项目经理等所关注的问题,并且能够独立地处理功能性和非功能性需求。
本文分别对五种视图进行了描述,并同时给出了捕获每种视图的表示方法。
这些视图使用以架构为中心的、场景驱动以及迭代开发过程来进行设计。
引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。
通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。
方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。
是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。
有时架构并不能解决所有"客户"(或者说"风险承担人",USC 的命名)所关注的问题。
许多作者都提及了这个问题:Garlan & Shaw 1、CMU 的Abowd & Allen、SEI 的Clements。
作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合。
架构模型软件架构用来处理软件高层次结构的设计和实施。
它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。
Perry 和Wolfe 使用一个精确的公式来表达,该公式由Boehm 做了进一步修改:软件架构={元素,形式,关系/约束}软件架构涉及到抽象、分解和组合、风格和美学。
我们用由多个视图或视角组成的模型来描述它。
为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图(请对照图1):∙逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。
体系结构蓝图—软件体系结构的+视图(中文版)

体系结构蓝图—软件体系结构的+视图(中文版)————————————————————————————————作者:————————————————————————————————日期:本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型。
使用多重视图允许独立地处理各"风险承担人":最终用户、开发人员、系统工程师、项目经理等所关注的问题,并且能够独立地处理功能性和非功能性需求。
本文分别对五种视图进行了描述,并同时给出了捕获每种视图的表示方法。
这些视图使用以架构为中心的、场景驱动以及迭代开发过程来进行设计。
引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。
通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。
方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。
是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。
有时架构并不能解决所有"客户"(或者说"风险承担人",USC 的命名)所关注的问题。
许多作者都提及了这个问题:Garlan & Shaw 1、CMU 的Abowd & Allen、SEI 的Clements。
作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合。
架构模型软件架构用来处理软件高层次结构的设计和实施。
它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。
Perry 和Wolfe 使用一个精确的公式来表达,该公式由Boehm 做了进一步修改:软件架构={元素,形式,关系/约束}软件架构涉及到抽象、分解和组合、风格和美学。
体系结构蓝图—软件体系结构的41视图(中文版)

本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型。
使用多重视图允许独立地处理各"风险承担人":最终用户、开发人员、系统工程师、项目经理等所关注的问题,并且能够独立地处理功能性和非功能性需求。
本文分别对五种视图进行了描述,并同时给出了捕获每种视图的表示方法。
这些视图使用以架构为中心的、场景驱动以及迭代开发过程来进行设计。
引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。
通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。
方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。
是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。
有时架构并不能解决所有"客户"(或者说"风险承担人",USC 的命名)所关注的问题。
许多作者都提及了这个问题:Garlan & Shaw 1、CMU 的 Abowd& Allen、SEI 的Clemen ts。
作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合。
架构模型软件架构用来处理软件高层次结构的设计和实施。
它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。
Perry和 Wolfe使用一个精确的公式来表达,该公式由 Boehm做了进一步修改:软件架构={元素,形式,关系/约束}软件架构涉及到抽象、分解和组合、风格和美学。
最新4 1体系结构视图

……
…… …… ……
……
步骤3:定义结构与连接
• 初步确定关联
•对应于描述性动词或动词短语 •需求陈述中隐含 •根据问题域知识得出
• 筛选
• 完善
• 分析标识对象之间的关系
•对象之间的分类关系:一般-特殊结构 •对象之间的组成关系:整体-部分结构 •对象之间的静态联系:实例连接 •对象之间的动态关系:消息连接
转帐
帐户
出纳员
存入
有三个子系统的分析模型,在影射到设计模型 之前需要把分析类型分解到各个分析子系统中
举例:用例模型中添加通信关联的指向 执行者启动用例
订货
客户
系统启动用例
客户
获得订单的状态
由客户或者系统 启动用例
客户
获得订单的状态
Yourdon的OOA方法
以类与对象图及对象状态图为辅助工 具,建立问题域的五层模型.
@消息发送
查帐 报帐 价格更新 种类增删
供货员
缺货登记表 缺货登记 供货
建立数据字典
为所有模型实体准备一个数 据字典, 精确描述每一个对象 类,包括:
•成员 •约束 •关联、属性、操作
对象字典举例:
类名 父类 提供的服务 需要的服务
帐户 …… ……
……
ATM …… ……
……
银行 …… ……
……
出纳员 …… ……
实例连接 消息连接
主题
分析阶段由五个活动组成: (1) 标识类及对象 (2) 标识结构 (3) 标识主题 (4) 定义属性及实例连接 (5) 定义服务及消息连接
五个步骤常根据需要交叉进行
步骤1:识别类与对象
(1)发现对象
主要策略:
软件体系结构 4+1模型案例

案例教学1:4+1视图方法进行软件体系结构设计要开发出用户满意的软件并不是件容易的事,软件体系结构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。
本文从理解需求种类的复杂性谈起,通过具体案例的分析,展示了如何通过RUP的4+1视图方法,针对不同需求进行体系结构设计,从而确保重要的需求一一被满足。
1、呼唤体系结构设计的多重视图方法灵感一闪,就想出了把大象放进冰箱的办法,这自然好。
但希望每个体系结构设计策略都依靠灵感是不现实的--我们需要系统方法的指导。
需要体系结构设计的多重视图方法,从根本上来说是因为需求种类的复杂性所致。
以工程领域的例子开道吧。
比如设计一座跨江大桥:我们会考虑"连接南北的公路交通"这个"功能需求",从而初步设计出理想化的桥墩支撑的公路桥方案;然后还要考虑造桥要面临的"约束条件",这个约束条件可能是"不能影响万吨轮从桥下通过",于是细化设计方案,规定桥墩的高度和桥墩之间的间距;另外还要顾及"大桥的使用期质量属性",比如为了"能在湍急的江流中保持稳固",可以把大桥桥墩深深地建在岩石层之上,和大地浑然一体;其实,"建造期间的质量属性"也很值得考虑,比如在大桥的设计过程中考虑"施工方便性"的一些措施。
和工程领域的功能需求、约束条件、使用期质量属性、建造期间的质量属性等类似,软件系统的需求种类也相当复杂,具体分类如图1所示。
图1 软件需求分类的复杂性2、超市系统案例:理解需求种类的复杂性例子是最好的老师。
为了更好地理解软件需求种类的复杂性,我们来分析一个实际的例子。
在表1中,我们列举了一个典型的超市系统的需求子集,从这个例子中可以清晰地看到需求可以分为两大类:功能需求和非功能需求。
表1 超市系统案例:理解需求种类的复杂性简单而言,功能需求就是"软件有什么用,软件需要做什么"。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)审查和筛选, 舍弃无用的类 对象的精简
•只有一个属性的对象 •只有一个服务的对象
推迟到OOD考虑的对象
@收款机
销售事 件
帐册
商品一览表 商品
@上级系统接口
超市销 售管理 系 统 (对象层)
供货员 特价商 品
计量商品
步骤2: 定义属性与服务 •定义属性 •定义服务
4+1体系结构视图
最终用户
功能
程序员
逻辑视图
设计人员 /测试人员 行为
实现视图
软件管理
用例视图 过程视图 展开视图
系统工程师 系统拓扑结构 交付、安装 通信
系统集成人员 性能 可扩展性 吞吐量
举例:自动取款机(ATM)系统的用例模型
用例模型捕获、表示系统的功能性需求
取款
存款
银行储户
在不同帐户间转帐
(关系层, 完整的类图)
*售出 *补充 *价格更新
步骤4:标识主题(主体)
Coad/Yourdon方法中主题的概念: 主题是把一组具有较强联系的类组 织在一起而得到的类的集合。
•主题层是在OOA基本模型(类图)之上建立
•主题一种比类和对象抽象层次更高、粒度
一个能帮助人们从不同的认识层次来理解 系统的补充模型;
:控制对象执行与特定用例有关的行为,
建立系统与参与者间的交互模型
帐户
出纳员接口
提取
分析类型之间的关系
用例模型 分析模型
取款
出纳员接口
提取
吐钞器
帐户
每个用例都有一个说明如何执行用例的协作图
描述对象如何执行用例的顺序图
银行储户 出纳员接口 吐钞器
银行储户标识自己
提取
帐户
检验标识符
提取
银行储户说明帐户 和要提取的钱数. 系统从帐户中提取 并给付此笔钱款
ATM ATM系统的初始对象图
进入
远程业务
步骤4:定义服务及消息连接
分析和认识对象之间在行为上的往 来关系。
顺序系统中的消息传递
运行开始 主动对象A
被动对象C
c
被动对象B
a
b
被动对象D
运行结束 服务执行 消息发送
d1
d2
控制点返回示意
任务Task1 任务Task2 线程Ta 线程Tb 主动对象A 主动对象B
举例:用例模型中添加通信关联的指向
执行者启动用例
订货
客户
系统启动用例
获得订单的状态
客户
由客户或者系统 启动用例
客户
获得订单的状态
Yourdon的OOA方法
以类与对象图及对象状态图为辅助工 具,建立问题域的五层模型.
OOA模型被划分为五个层次 (五个视图)
OOA的结构
Class &object layer (类及对象层)
对每个控制线程考虑:
(3)对象分布问题及对消息的影响
•每台处理机上分布的一组对象中至少应有一
个主动对象;
•同一台处理机上的对象之间的消息通信既可
能是一个控制线程内部的,也可能是不同控 制线程之间的。
@收款机
本班出纳员 开始时间 结束时间
销售事 收款人 件
帐册
@登录 售货 结帐
购物清单 应收款 …… 销售计划 入帐
ቤተ መጻሕፍቲ ባይዱ
超市销 售管理 系 统 (特征层)
售出 补充 价格更新
计量商品
供货员 特价商 开始日期 品
结束日期 *单价 计量单位 计价方式 缺货登记表 缺货登记 供货
*售出 *补充 *价格更新
建立数据字典
为所有模型实体准备一个数 据字典, 精确描述每一个对象 类,包括:
•成员 •约束 •关联、属性、操作
对象字典举例:
设备)
•主题的划分有一定的灵活性和随意性
•解决系统中某一方面的问题(如输入输出)
主题的表示法
三种表示方式:压缩方式 半展开方式 全展开方式 半展开方式: 压缩方式
编号 主题名
编号 主题名 类名 类名 …… 类名 主题名 ……
主题名
下层 主题
主题的表示法
全展开方式:
编号 编号
编号
编号
类图上原有的全部内容
如:柜员、储户等
这些人所属的组织单位,可作为候选
的类及对象;
如:总行、分行等
系统必须记忆、且不在问题域约束中
的顺序操作过程(为了指导人机交互) 可作为候选的类及对象;
如:柜员事务、远程事务等。 其中属性是操作过程名,操作特权及操作 步骤的描述;
系统需了解掌握的物理位置、办公
地点等可作为候选的类及对象;
(2)建立控制线程之间的消息连接
• 它在执行时是否需要请求其它控制线程中的对
象为它提供服务?由哪个对象发出?由哪个对 象中的服务处理? • 它在执行时是否要向其它控制线程中的对象提 供或索取数据? • 它在执行时是否将产生对其它控制线程的执行 有影响的事件? • 各个控制线程的并发执行是否要传递同步控制 信号 • 一个控制线程在何种条件下中止执行? 中止后在何种条件下由其它控制线程用何法唤醒?
用例的分析、设计和实现
用例模型 分析模型
取款
设计模型
取款
实现模型
取款
取款
用例的分析、设计和实现
用例模型 分析模型
取款
出纳员接口
吐钞器
帐户
提取
三种不同构造型的分析类
≪实体类≫ ≪边界类≫ ≪控制类≫ :实体对象一般是系统中长效且持久
的对象
:边界对象处理系统与环境之间的通信,
建立系统与参与者间的交互模型
类名 帐户 ATM 银行 出纳员 …… 父类 …… …… …… …… …… 提供的服务 需要的服务 …… …… …… …… …… …… …… …… …… ……
步骤3:定义结构与连接
• 初步确定关联
• 对应于描述性动词或动词短语 • 需求陈述中隐含 • 根据问题域知识得出
• 筛选 • 完善 • 分析标识对象之间的关系
• 对象之间的分类关系:一般-特殊结构 • 对象之间的组成关系:整体-部分结构 • 对象之间的静态联系:实例连接 • 对象之间的动态关系:消息连接
从一般类发现特殊类
姓名 身分证号码 股份 工资 ……
公司职员
姓名 身分证号码 …… ……
公司职员
?
……
股东 股份 ……
……
……
职员 工资 ……
?
从特殊类发现一般类 ?
姓名 身分证号码 …… ……
公司职员
股东 姓名
身分证号码
职员 姓名
身分证号码
股东 股份 ……
……
……
职员 工资 ……
股份 ……
……
工资 ……
……
收款机
A B C X Y
现钞收款机
A B C D E F X Y Z
收款机类成为 可供本领域其 它系统复用的 领域构件
现钞收款机 D E F
Z
为支持复用建立结构
五个步骤常根据需要交叉进行
步骤1:识别类与对象
(1)发现对象 主要策略:
• 人员 • 组织 • 物品 • 设备 • 事件
考虑问题域
•表格结构 考虑系统边界
考虑系统责任
• 人员 • 设备 • 外系统
问题域描述中的名词,往往是候选的
及对象;根据问题域结构可提取候选 的类及对象;
例: 银行储蓄管理系统
……
……
电动机 … … ……
筛选:删除下列关联 •已删去的类间的关联 •无关或实现关联 •瞬时事件 •三元关联 •派生关联
总行
拥有
组成
银行代码
分行
持有 雇佣
拥有
帐户 储户
拥有 存取
修改
拥有 通信
修改
中央 计算机
通信
分行 计算机
拥有
出纳员
被进入
出纳
进入
工作站
出纳业务 授权 现金卡
如何划分主题
•把每个结构作为一个主题;
(选取结构中最上层的类作为一主题)
•通过实例连接互相联系的类可划分到
一个主题;
•把不属于任何结构,也没有实例连接
的类作为一个主题。
如何精练主题
从问题域和接口复杂性两方面入手: •使用问题域精练主题,即用整体/部分结 构对问题域进行划分,而不是按功能分解 方法划分.
(2)消息的同步与异步
(3)接收者对消息的不同响应方式 (4)发送者对消息处理结果的不同期待方式 (5)消息的接收者是否唯一
•定向消息 •广播消息
OOA对消息的表示—消息连接
消息连接是OOA(或OOD)模型中对对象 之间行为依赖关系的表示 识别和表示的主要问题:
•对象之间是否存在消息? •消息是同一线程内部的还是不同线程之间的? •每一种消息是从发送者哪个服务发出的?
并发系统中 的消息传递
被动对象D
控制线程内部 的消息连接 控制线程之间 的消息连接
被动对象C
被动对象E
控制点返回示意
多个控制线程之间的消息与顺序系统中消息的不同之处
(1)并发执行的控制线程之间传送的消息的不同用途: • 向接收者发出访问请求
•向接收者提交数据 •向接收者发布通知或事件信息 •向接收者传递同步控制信号
由接收者哪个服务响应处理的?
•消息是同步还是异步? •发送者是否等待消息的处理结果?
如何建立消息连接
(1)建立控制线程内部的消息连接 基本策略:“服务模拟”
“执行路线追踪”
具体做法: