用UML模型实现大型实时监控应用软件

UML模型实现大型实时监控应用软件

□姬孟洛 彭利文

(北京跟踪与通信技术研究所·100094

 

1、概述

    实时监控应用软件(CTS)开发过去采用的是结构化方法,采用的编程语言也是汇编语言、FortranCAda等结构化编程语言。也曾有过分析和设计阶段采用结构化方法,编程实现采用面向对象语言的尝试。采用面向对象方法(UML)完整的实现监控实时应用软件是首次尝试,收到了较好的成效。

    UML(统一建模语言)是美国Rational公司创造的面向对象开发中一种通用的、统一的图形化模型语言。它于199711月被美国OMG小组批准成为面向对象开发的行业标准语言。UML标准的树立统一了面向对象的建模方法,消除了对象建模差别。Rational公司的旗舰产品之一Rational Rose提供了对这一行业标准语言的充分支持。Rose是一个面向对象的软件分析设计建模工具,可以创建基于UML标准的模型,图形化地对软件系统结构加以描述和定义,并且通过建立的模型直接生成代码框架。同时,还可以从开发者编的应用系统中直接逆向生成模型。下面将就实时监控应用软件的分析设计是如何使用Rational Rose来实现的作一简要介绍:

 

2UML模型

    CTS是监控系统的中心,它主要用来控制测量设备实时跟踪和测量飞行目标,实时处理测量结果,并兼有显示、打印、记录等功能。它和测量设备的关系如图1所示。

wpe5.jpg (10965 bytes)

    实时应用软件通过数据包和测量设备交换信息。软件实时性要求较高,在每个采样周期内,必须完成该周期的数据处理工作,也要有一定的人工干预能力。

    实时应用软件模型用来描述软件各层次的各个方面,它包括Use Case图、类图、序列图、状态图、分布图和组件图。

2.1 Use Case

    Use Case也称为用例、使用情况,它是系统分析人员从用户使用的观点来看系统功能、功能之间的关系以及用户与功能之间的关系。它是系统功能以及用户与功能之间的关联,利用Use Case系统分析人员对系统的功能和行为加以描述。CTSUse Case图如图2所示。

 

wpe7.jpg (14509 bytes)

 

CCP为前端通信处理机,Operator为操作员,Interrupt为操作台命令产生的中断。

Simulation:模拟状态,用于软件调试和操作员训练。

Task:实战状态,用于实战任务。

Abnomity:异常处理,应急状态。

SimpleServer:打印、记盘等服务。

CommuniciateProcess:从CCP接收测量设备传来的数据包之后解包,然后按要求将多帧数据重新组织成一帧转发到CCP

DataProcess:将CommuniciateProcess接收的数据依据处理要求进行挑点处理,利用CommuniciateProcess解包后的数据计算轨道、平滑外推和预报等。

DisplayProcess:将挑点后的数据按指定的要求在不同的显示服务器上以文字、数字或图象形式显示。将DataProcess的处理结果在指定的显示服务器显示。

所有Use Case的工作都必须在指定的时间周期内完成。

 

22 类图

    类图是系统的逻辑结构,是模型的核心部分。它描述了系统中的类及类之间的关系,类图描述系统的静态结构。类包是子系统中相关类的集合,包类似于Peter/Coord方法中的主题词(subject)。图3描述了CTS的类包。

wpe8.jpg (14024 bytes)

 

 

    类包DisplayProcessDataProcessCAbnormityCommunicateProcess是我们自己开发的,是系统的核心,其余的类包是由Microsoft提供的。DisplayProcess类包包含了显示所需要的所有和MFC有关的类,DisplayProcess类包中的类都是从MFC派生的,一般都增加了CTS系统所需要的特性。DisplayProcess类包中的类及类之间的关系如图4所示。

wpe9.jpg (14907 bytes)

 

 图4 DisplayProcess类包中的类及类之间的关系

    CommunicateProcess类包包含了通信处理所需要的类及类之间的关系,如图5所示。图中CFrameFormat类为数据帧格式类是所有帧格式类的父类,它有两个子类:CRecvFrameFormatCSendFrameFormatCRecvFrame- Format类(从CCP接收的帧格式)是CRecvHead类(接收帧头)和CDevice- Format类(设备数据格式)的聚集。CSendFrameFormat类(向CCP发送的帧格式)的数据区包括Device1Device3帧格式中的内容。CReceive类为接收类,CSendTo类为向CCP发送数据类。

wpeA.jpg (17083 bytes)

 

图5 CommunicateProcess类包中的类及类之间的关系

 

    DataProcess类包是CTS类包中的核心部分包括了数据处理所需的所有类,这个类包较复杂这里只给出部分类图,如图6所示。CGdFeature类是数据处理部分的类它有两个最主要的操作:轨道积分和坐标转换,CTheoryGd(理论轨道),CPracticeGd(实际轨道),CCoordinatePoint(轨道坐标),CRate(目标速度)。

wpeB.jpg (15115 bytes)

 

6 DataProcess类包中的部分类及其关系,CAbnormity类包包含异常处理以及操作台应急处理所需要的类,类图略。

 

2.3 序列图

    CTS的动态特性用序列图表示,序列图用来描述一个软件的运作顺序(场景),一个Use Case包含多个软件的运作场景。序列图用来刻画Use Case图,一个Use Case可以有多个序列图,每个场景用一个序列图刻画。合作图与序列图等价,可以由序列图转化得到,两者各有优缺点。序列图对于实时系统的时间要求刻画的很好,但结构不明显;合作图的对象间关系明显但它用消息顺序号表示时间,时间表示不清楚,不太适用于实时系统。CommuniciateProcess的序列图如图7所示。

wpeC.jpg (15689 bytes)

 

7 CommuniciateProcess的序列图

 

2.4 状态图

    CTS的动态结构主要用来描述活类的动态特性,使用Rational Rose的状态图StateDiagram来描述。行为导致了状态的迁移,状态图用来显示一个给定类、给定事件的状态。每个状态图都与一个类或一个Use Case相关联。状态图刻画软件系统的行为视点,它基于有穷状态自动机的图示机制。一个状态图包括一个类在生命周期内的状态转换和描述。限于篇幅只给出CTSCGdFeature类的状态图,如图8所示。

 

 

8 CGdFeature类状态图

 

2.5 组件图

    逻辑模型表示了系统的逻辑结构,每个逻辑模型都应有一个或多个到物理实现-组件图的映射。组件图显示了物理上组件(主程序、包和任务)之间的依赖关系以及和逻辑模型之间的映射关系。组件的设计和系统的运行环境以及逻辑模型的结构有关。如果是分阶段开发的话,组件设计应属于详细设计。

 

2.6 软件分布图

    软件系统需要和硬件环境一起工作,软件分布图也表示了硬件设备和它们的界面,以及硬、软件的协同工作。CTS的软件分布图表示了执行程序、计算机节点以及设备的布局。CTS的分布图如图9所示。图中MainBackup分别表示主用和备用计算机,只有主用计算机向CCP输出,但主备机均接收CCP来的数据。

9 CTS软件分布图

 

3 实现

    在系统的逻辑设计(模型)和组件设计(模型)完成之后,便可以进入编程。CTS的编程实现采用Microsoft VC++语言,Rational Rose C++VC++有专门的支持。编程实现主要是利用Rose的生成和反向生成工具根据系统的设计模型来完成的。它包括三大步骤,每个步骤又包括多个过程。

 

3.1 系统设置

系统设置主要用来设置Rose的特性和目录,它包括四步,这里就不详述了。

 

3.2 开始一个新的VC++项目

    在开始VC++编程时,首先创建VC++应用程序,此时应遵循以下步骤:

使用VC++Application Wizards为应用生成框架
创建Rose分析器Analyzer下的项目,加入VC++创建的文件
定位头文件,关闭不含类也不能由分析器生成和反向重新生成的文件的Regenerate属性,并向Rose输出初始模型。
Rose下打开.red文件
反向生成的模型不带特性,选rosevcpp.pty文件作为新的特性文件,最后把模型保存为.mdl文件。

 

3.3 增加类、数据成员和成员函数

    把Rose模型中的类增加到VC++应用程序中可分为两种情况:一种是不使用VC++Class Wizard支持机制的类(如信息映射),一种是使用此机制的类。前一种情况比较简单,它正是在Rose中生成代码,然后把这些文件加入VC++项目中即可。对于后一种情况,其步骤大致如下:

VC++中创建新类,然后将新类的文件加入RoseAnalyzer对应

的项目中。

在分析器Analyzer中进行特性设置以反映项目当前的变化。
在分析器Analyzer中输出文件。

    向已经存在的文件中添加数据成员和成员函数的方法与添加类的方法相同。

 

4、结束语

    从应用的结果看,总的来说,使用UML进行监控实时应用软件开发取得了比较好的效果,与以前使用的结构法方法相比有明显的优势。我们体会,这主要表现在以下几个方面:

1.Use Case是系统分析人员从用户的视角出发、从功能边界描述目标软件系统,这从模型上规范了对需求的描述,也能够和后面的设计较好地衔接,比以前纯粹的文字描述要好一些。用UML描述需求对于用户有很好的可理解性,便于软件开发人员与用户的交互,用户可以尽可能早的介入目标软件系统的开发工作。

2.逻辑设计代替功能模块设计和实体-关系设计,解决了以前的功能和数据分离的问题,以及模块中数据的组织问题。

3. 用状态图在较高的层次上描述了系统的动态结构。

4. 由于同时使用了文档生成工具,使得系统设计和文档、程序代码保持一致,较好的解决了极易造成的文档和实现不一致的现象。这一点非常重要。

  
 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
第一部分 概览 第1章 引言 1.1 软件建模 1.2 面向对象方法与统一建模语言 1.3 软件体系结构设计 1.4 方法和表示法 1.5 COMET:一种基于UML的软件应建模和设计方法 1.6 UML标准 1.7 软件体系结构的多视图 1.8 软件建模和设计方法的发展 1.9 面向对象分析和设计方法的发展 1.10 并发、分布式和实时设计方法 1.11 总结 练习 第2章 UML表示法概述 2.1 UML图 2.2 例图 2.3 类和对象 2.4 类图 2.4.1 关联 2.4.2 聚合和组合层次 2.4.3 泛化和特化层次 2.4.4 可见性 2.5 交互图 2.5.1 通信图 2.5.2 顺序图 2.6 状态机图 2.7 包 2.8 并发通信图 2.9 部署图 2.10 UML扩展机制 2.10.1 构造型 2.10.2 标记值 2.10.3 约束 2.11 本书的约定 2.11.1 需求建模 2.11.2 分析建模 2.11.3 设计建模 2.12 总结 练习 第3章 软件生存周期模型和过程 3.1 软件生存周期模型 3.1.1 瀑布生存周期模型 3.1.2 瀑布模型的局限性 3.1.3 抛弃型原型 3.1.4 通过增量开发的演化式原型 3.1.5 抛弃型原型和增量开发的结合 3.1.6 螺旋模型 3.1.7 统一软件开发过程 3.2 设计验证和确认 3.2.1 软件质量保证 3.2.2 软件设计的性能分析 3.3 软件生存周期的活动 3.3.1 需求分析和规约 3.3.2 体系结构设计 3.3.3 详细设计 3.3.4 编码 3.4 软件测试 3.4.1 单元测试 3.4.2 集成测试 3.4.3 系统测试 3.4.4 验收测试 3.5 总结 练习 第4章 软件设计和体系结构概念 4.1 面向对象概念 4.2 信息隐藏 4.2.1 面向对象设计中的信息隐藏 4.2.2 信息隐藏示例 4.2.3 设计信息隐藏对象 4.3 继承和泛化/特化 4.4 并发处理 4.4.1 顺序应与并发应 4.4.2 并发对象 4.4.3 并发对象间的协作 4.4.4 同步问题 4.4.5 生产者/消费者问题 4.4.6 异步消息通信 4.4.7 带回复的同步消息通信 4.5 设计模式 4.6 软件体系结构和构件 4.6.1 构件和构件接口 4.6.2 连接器 4.7 软件质量属性 4.8 总结 练习 第5章 软件建模和设计方法概览 5.1 COMET基于例的软件生存周期 5.1.1 需求建模 5.1.2 分析建模 5.1.3 设计建模 5.1.4 增量软件构建 5.1.5 增量软件集成 5.1.6 系统测试 5.2 COMET生存周期与其他软件过程的比较 5.2.1 COMET生存周期与统一软件开发过程对比 5.2.2 COMET生存周期与螺旋模型对比 5.3 需求、分析和设计建模 5.3.1 需求建模中的活动 5.3.2 分析建模中的活动 5.3.3 设计建模中的活动 5.4 设计软件体系结构 5.5 总结 练习 第二部分 软件建模 第6章 例建模 6.1 需求建模 6.1.1 需求分析 6.1.2 需求规约 6.1.3 软件需求规约的质量属性 6.2 例 6.3 参与者 6.3.1 参与者、角色和户 6.3.2 主要和次要参与者 6.3.3 对参与者建模 6.3.4 谁是参与者 6.4 标识例 6.5 模型中文档化例 6.6 例描述示例 6.7 例关系 6.8 包含关系 6.8.1 包含关系和包含例示例 6.8.2 结构化冗长的例 6.9 扩展关系 6.9.1 扩展点 6.9.2 扩展点和扩展例示例 6.10 例组织指南 6.11 规定非功能性需求 6.12 例包 6.13 活动图 6.14 总结 练习 第7章 静态建模 7.1 类之间的关联 7.1.1 类图描述关联 7.1.2 关联的多重性 7.1.3 三元关联 7.1.4 一元关联 7.1.5 关联类 7.2 组合和聚合层次 7.3 泛化/特化层次 7.4 约束 7.5 静态建模和UML 7.6 系统上下文的静态建模 7.7 使UML构造型对类分类 7.8 外部类建模 7.8.1 从外部类开发软件系统上下文类图示例 7.8.2 参与者和外部类 7.8.3 从参与者开发软件系统上下文类图示例 7.9 实体类的静态建模 7.10 总结 练习 第8章 对象和类组织 8.1 对象和类的组织准则 8.2 对应类和对象建模 8.3 对象和类的组织分类 8.4 外部类与软件边界类 8.5 边界类和对象 8.5.1 户交互对象 8.5.2 代理对象 8.5.3 设备I/O边界对象 8.5.4 描述外部类和边界类 8.6 实体类和对象 8.7 控制类和
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值