基于UML时序图的网络视频监控系统
 
2009-04-20 作者:孔军 蒋敏 来源:eccn.com
 

UML是Unified ModelingLanguage 的简称,是00P(Object-Oriented programming面向对象编程)技术及至所成,可用于确定、展示和记录软件系统,是一种便于软件系统规约化、可视化的构造及建模标识。而其中的图形标记,尤其适用与面向对象的软件设计。

视频监控是楼宇安全防范系统的一个重要组成部分。随着计算机网络布线已深入到各种楼宇建设之中,如果通过计算机网络(包括LAN和WAN)连接位于不同地点的多个监控小系统,这样无需敷设专门线路,仅凭借已有的LAN和WAN,使得任意一台赋予权限的主机都可以游刃有余地在网上采集现场的监控画面,从而实现了远程网络视频监控。

运用UML的软件开发技术,我们可以把模块与实际应用功能紧密联系起来。对于视频监控这样的具体设计,我们可以用UML特有的图形标识将其中的各个功能模块化,形成相应的结构型语言,以便通过设计出的功能模块与代码之间的映射关系描述出最终的软件代码框架,同时确保代码改进时模块也可以随之更新。

UML的基本原理

UML建模机制描述

UML有静态和动态两种分析方法和建模机制。静态建模分析主要通过类图、对象图、用例图等来描述,一般用于系统的核心模块设计;动态建模通过合作图、状态图、活动图、时序图来表述,可以用来描述系统对象间的关系模式。 动态建模机制中的时序图

现在让我们着重谈谈动态建模机制中的时序图(sequencediagram)。时序图是一种交互图,时序图的重点是标记出某个行为的对象类和这些对象类之间所传递的消息及其时间顺序。另外时序图允许直观地表示出对象的生存期,在生存期内,对象可以对输入消息做出响应,并且可以发送消息。正是对象生存期的引入,时序图具备了时间顺序的概念,从而可以清晰地表示出对象在其生存期的某一个时刻的动态行为。这种时间概念的精确性使时序图在描述对象动态行为的时间特性方面具备了卓越的能力。

时序图是一个二维图形。一维处于水平方向表示对象;另一维处于垂直方向表示对象的生存期,因而可看成是时间轴。在一个对象图中,所有的对象将从左到右排开,而每个对象的生存期就犹如一条生命线。只要对象没有被撤消,这条生命线就可以从上至下延伸,如图1所示。
 

视频监控设计

视频监控网络框架

凭借已有的计算机网络,我们设计一个基于组播技术的刚络视频监控系统方案原理图,如图2所示。从系统结构上看,该系统主要有两大部分:视频服务器和客户机端,他们之间依靠IP组播网络连接。在网络上任何一个客户机端都能看见视频服务器上视频信号(一点对多点的组播模式。当然采用多点对多点的组播传输模式,还可以看见其他站点的视频信号)。客户机端还必须接受具有上控机房的控制命令,执行相关的监控动作。该临控系统中还要设计出对现场监控能主动做出预先或滞后处理的模块。
 

在通信阶段,视频服务器与客户机端可以采用简单而可靠的通信方式如TCP,进行登录并认证身份,一旦确认客户端PC的有效身份后,视频服务器与客户机端之间通信进人初始化阶段;在初始化阶段,视频服务器将依据安全策略和通信策略动态产生决策,去影响客户机端;在这些一系列的动态交互结束后,系统进入组播通信阶段,主控机房通过组播通信线程来接受和发送视频信号。

软件平台的建模

根据客户端PC和主控机房的视频服务器直接通信的特点,可对网络视频监控系统作动态建模。网3就是以时序图来描述此系统的软件需求。本视频监控网络采用的是客户机/服务器(C/S)刚络通信模式,由客户机端向服务器提出请求,服务器对请求做出确认并执行相应的任务。例如向客户机端发送组播地址,建立连接后计算机用户就可以在客户终端监控各个远程监测点,客户终端接受远程监控点传来的视频数据,并可以向视频服务器传送控制命令,视频服务器根据用户要求向当前设备发出控制命令,从而实现网络远程监控。

在各对象相互通信时,个人首先登录到客户机端(当然登录本身包含诸多时序事件,例如用户与客广机端之间输入户名、问口令、输入口令,客户机端与服务器之间查证口令、判断口令等。由于篇幅所限,图3没标出);个人登录事件的后续事件是,客户机向视频服务器发送连接请求,得到服务器允许后,客户机开始发送相关数据,服务器将该数据转交后台处理,并发给服务器下一个事件动作的指令,例如发送组播地址;调用WSASendTo()函数使得服务器向客户机端通过IP组播网络发送视频数据;最后调用 SARecvFrom()函数使得客户机开始接受视频数据;启动播放线程。
 

软件实现

在实际应用中,编程人员就可以根据上文的时序图所捕述的需求来编制底层网络应用程序,去实现监控系统网络的底层通信。编制底层网络应用程序通常要借助于网络数据通信编程接口,而在不同的操作系统中所提供的网络编程接口是有所不同的,如在MicrosoftWindows环境下的网络编程接口就是Windows套接字(Windows Socket,简称Winsock)。Winsock提供了包括TCP/IP、IPX等多种通信协议下的编程接口。除支持WinsockAPI外,还定义了一套可支持IP组播的与协议无关的API。

现在以Winsock 2.0(由Windows 2000操作系统所支持)为例,来实现IP组播的编程的一般步骤:
 



凭借Windows操作系统平台,利用Visual Studio开发工具,我们可以完成一个实用的应用程序设计。基于Windows的消息驱动机制,实现了异步化的网络I/O操作,为各类普通的视频监控网络的Winsock应用程序的开发提供了一般性的算法。

本文以UML时序图为标识,以IP组播技术为基础,描述了一个网络视频监控系统。作者旨在表明UML作为一种面向对象软件设计方法,如何利用其中的时序图去描述一个"随时间变换而变换的对象间交互"的动态过程,并将这一动态过程更好地体现在网络视频监控系统软件的设计中。另外值得强调的是UML可以支持几乎所有的高级语言,它的正确使用有助于在OOP软件工程环境中,提高软件开发效率和可移植性等。本系统已在国家兵器总公司某所的所区安防监控系统中得到应用


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织