王 超,顧 剛,林智明,趙衎衎,劉小明,牟 艷
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院,常州213022)
球類競賽賽事中,需要及時(shí)進(jìn)行競賽編排、實(shí)時(shí)反映比分變化、跟隨競賽進(jìn)程進(jìn)行技術(shù)統(tǒng)計(jì),并將這些競賽信息展示給觀眾。而這些競賽信息如何進(jìn)行采集、傳輸、處理、監(jiān)控和展示,是球類競賽監(jiān)控系統(tǒng)要解決的問題。
雖然球類競賽賽事各不相同,但同屬于對抗類項(xiàng)目,對于競賽信息采集和監(jiān)控的解決方案有著諸多共同點(diǎn)?;谶@樣的考慮,開發(fā)出一款球類競賽成績監(jiān)控系統(tǒng)的通用平臺,再針對不同項(xiàng)目的具體競賽業(yè)務(wù)進(jìn)行移植,不僅能夠滿足球類競賽賽事中各個(gè)方面的需求,還能夠有效地提高開發(fā)效率和軟件產(chǎn)品質(zhì)量,提高軟件的復(fù)用性,加強(qiáng)軟件項(xiàng)目管理。
筆者參與設(shè)計(jì)與開發(fā)的基于局域網(wǎng)的球類競賽成績監(jiān)控系統(tǒng)通用平臺,運(yùn)用分層結(jié)構(gòu)模式和軟件工廠的思想進(jìn)行設(shè)計(jì)和開發(fā),很好的滿足了球類競賽賽事的需求,具有較高的復(fù)用性和可移植性[1]。
球類競賽信息系統(tǒng)是為球類競賽賽事服務(wù)的系統(tǒng),主要完成球類競賽賽事中信息數(shù)據(jù)的管理、傳輸、監(jiān)控、處理、顯示等。球類競賽信息系統(tǒng)分為多個(gè)子系統(tǒng):球類競賽成績監(jiān)控系統(tǒng)、報(bào)表打印系統(tǒng)、評論員系統(tǒng)、電視字幕系統(tǒng)和網(wǎng)上信息發(fā)布系統(tǒng)等。
球類競賽成績監(jiān)控系統(tǒng)處于球類競賽信息系統(tǒng)的最前端,在比賽過程中,通過電子設(shè)備對比賽過程中的競賽信息(比分、技術(shù)統(tǒng)計(jì)等)進(jìn)行采集,并將采集到的競賽信息進(jìn)行傳輸、處理、監(jiān)控和展示。電視字幕系統(tǒng)TVG、評論員系統(tǒng)CIS、打印分發(fā)系統(tǒng)PRDS都將從球類競賽信息系統(tǒng)中獲取競賽信息,保證自身系統(tǒng)在比賽過程中運(yùn)行良好[2]。
球類競賽成績監(jiān)控系統(tǒng)分為競賽信息采集、競賽信息監(jiān)控、競賽信息傳輸、競賽信息處理、競賽信息顯示幾大部分,如圖1所示。
圖1 球類競賽成績監(jiān)控系統(tǒng)架構(gòu)圖
球類競賽成績監(jiān)控系統(tǒng)通用平臺并不針對某一特定球類競賽的開發(fā),而是根據(jù)球類競賽特點(diǎn)設(shè)計(jì)開發(fā)球類競賽成績監(jiān)控系統(tǒng)的通用框架,并完成通用部分,在此基礎(chǔ)上,根據(jù)不同球類項(xiàng)目的需求以接口的形式提供服務(wù),最大限度的實(shí)現(xiàn)軟件復(fù)用。
球類競賽成績監(jiān)控系統(tǒng)主要完成的工作有:競賽信息的采集、競賽信息的監(jiān)控、競賽信息的傳輸、競賽信息的處理和競賽信息顯示。系統(tǒng)工作原理可從這幾個(gè)方面進(jìn)行一一闡述。系統(tǒng)的工作流程如圖2所示。
圖2 球類競賽成績監(jiān)控系統(tǒng)的工作流程圖
球類競賽項(xiàng)目是一類以對陣雙方的勝負(fù)關(guān)系決定比賽結(jié)果的項(xiàng)目,其競賽成績信息主要為裁判根據(jù)場上對陣雙方的勝負(fù)關(guān)系來記錄比分及相關(guān)技術(shù)統(tǒng)計(jì)數(shù)據(jù)。在比賽過程中,當(dāng)裁判對比賽進(jìn)行判分或?qū)δ骋患夹g(shù)統(tǒng)計(jì)進(jìn)行確認(rèn)后,本系統(tǒng)通過筆記本電腦或臺式機(jī),對競賽信息進(jìn)行采集錄入。該部分完成的功能包括比分記錄;比賽相關(guān)項(xiàng)記錄,如暫停次數(shù)、發(fā)球權(quán)等;比賽技術(shù)統(tǒng)計(jì)信息記錄;數(shù)據(jù)庫連接或更換等[3]。
競賽信息系統(tǒng)的監(jiān)控是指對競賽信息采集和傳輸設(shè)備的監(jiān)控以及整個(gè)競賽進(jìn)行狀態(tài)的監(jiān)控。
對于競賽采集設(shè)備的監(jiān)控,主要關(guān)注于網(wǎng)絡(luò)通信及設(shè)備運(yùn)行狀態(tài),前者包括在線狀態(tài)、數(shù)據(jù)采集、數(shù)據(jù)發(fā)送和接收成功或失敗等,后者包括設(shè)備是否出現(xiàn)故障等。而競賽進(jìn)行狀態(tài)的監(jiān)控,用于監(jiān)視當(dāng)前各場地比賽是否按照競賽編排中規(guī)定的順序進(jìn)行,以及各比賽所處的狀態(tài),如未開始、進(jìn)行中和已完成等。在系統(tǒng)運(yùn)行的過程中,一方面解析網(wǎng)絡(luò)消息中包含的數(shù)據(jù)與狀態(tài)信息,并按需要反映在相應(yīng)的顯示界面上以實(shí)現(xiàn)實(shí)時(shí)監(jiān)測,另一方面在必要時(shí)采用相應(yīng)的控制手段,包括控制命令消息和人為直接干預(yù)兩種。該部分完成的功能包括監(jiān)控競賽信息的傳輸情況,監(jiān)控競賽信息采集是否出錯,監(jiān)控網(wǎng)絡(luò)狀況是否良好,監(jiān)控?cái)?shù)據(jù)庫連接是否良好。
競賽信息的處理是指在競賽信息采集和傳輸后,對競賽信息進(jìn)行匯總和進(jìn)一步處理,如:在一個(gè)階段比賽結(jié)束后,統(tǒng)計(jì)各隊(duì)的成績,進(jìn)行晉級處理;在全部比賽結(jié)束后,根據(jù)各隊(duì)的排名,生成獎牌榜等。該部分完成的功能包括管理場館場地信息,管理代表團(tuán)信息,管理運(yùn)動員及裁判信息,編排比賽,對比賽結(jié)果進(jìn)行處理如比賽晉級、生成獎牌榜,比賽成績發(fā)布等。
競賽信息的傳輸分為兩部分:一是競賽信息采集后,通過局域網(wǎng)傳輸?shù)焦矓?shù)據(jù)庫進(jìn)行存儲;二是網(wǎng)絡(luò)消息的傳輸,在競賽信息采集后,通過局域網(wǎng)發(fā)送網(wǎng)絡(luò)消息通知監(jiān)控系統(tǒng),競賽信息已采集。該部分完成的功能包括傳輸已采集的競賽信息,傳輸各子系統(tǒng)間的通信數(shù)據(jù)包。
競賽信息的顯示分為兩部分,一是在比賽過程中,每個(gè)場地實(shí)時(shí)進(jìn)行比分采集的顯示,二是通過現(xiàn)場大屏幕,同時(shí)顯示多場地的比賽信息。該部分完成的功能包括選擇不同的顯示模式,顯示比賽信息,顯示運(yùn)動員與裁判信息,顯示比賽比分和技術(shù)統(tǒng)計(jì)信息,顯示獎牌榜信息等。
球類競賽成績監(jiān)控系統(tǒng)需要保證競賽信息采集的穩(wěn)定性,并且能夠?qū)⒏傎愋畔⒓皶r(shí)傳輸。作為通用平臺,必須保證系統(tǒng)的可移植性和軟件復(fù)用性,因此,系統(tǒng)開發(fā)必須遵循以下原則[4]:
穩(wěn)定性:系統(tǒng)在運(yùn)行過程中能夠保證競賽信息采集和傳輸?shù)姆€(wěn)定。
可靠性:系統(tǒng)在運(yùn)行時(shí)能夠保證競賽信息采集的準(zhǔn)確性,傳輸過程中的完整性。
實(shí)時(shí)性:系統(tǒng)能夠即時(shí)的對競賽信息進(jìn)行采集,并能夠及時(shí)地將競賽信息傳輸。
靈活性:系統(tǒng)有不同的采集、監(jiān)控、傳輸方案可供選擇,以更好完成球類賽事的需求。
通用性:系統(tǒng)不僅僅能夠完成一種球類賽事需求,還要具有球類賽事通用功能。
可移植性:不同球類競賽成績監(jiān)控系統(tǒng)可以快速的在系統(tǒng)平臺上進(jìn)行移植開發(fā)。
球類競賽中需要及時(shí)進(jìn)行競賽編排、實(shí)時(shí)反映比分變化、跟隨競賽進(jìn)程,實(shí)時(shí)進(jìn)行技術(shù)統(tǒng)計(jì),隨時(shí)將這些信息顯示在現(xiàn)場電子計(jì)分牌和場館大屏幕上,并傳送到需要這些數(shù)據(jù)的其他相關(guān)系統(tǒng),如場館成績處理系統(tǒng)、現(xiàn)場評論員系統(tǒng)、電視字幕系統(tǒng)和信息發(fā)布網(wǎng)站等。并將比賽進(jìn)況和比分信息及時(shí)的展示給觀眾。
為了實(shí)現(xiàn)系統(tǒng)的穩(wěn)定性和可靠性,在選取系統(tǒng)組網(wǎng)模式時(shí),考慮采用有線局域網(wǎng)的方式,并以TCP/IP協(xié)議作為通信協(xié)議。TCP/IP的三次握手協(xié)議可以保證數(shù)據(jù)在局域網(wǎng)間通信的穩(wěn)定性和可靠性。
為了實(shí)現(xiàn)系統(tǒng)的實(shí)時(shí)性,本設(shè)計(jì)采用消息通知模型。當(dāng)競賽信息采集到比賽數(shù)據(jù),存入到數(shù)據(jù)庫的同時(shí),向相應(yīng)的子系統(tǒng)發(fā)送數(shù)據(jù)包消息,通知競賽信息已采集。
為了實(shí)現(xiàn)系統(tǒng)的通用性和可移植性,系統(tǒng)設(shè)計(jì)為一個(gè)通用平臺。如何將不同球類競賽成績監(jiān)控系統(tǒng)的公用部分進(jìn)行整合,并為不同需求的部分以接口的方式進(jìn)行組合,是本系統(tǒng)的設(shè)計(jì)和開發(fā)亟需解決的一個(gè)問題。本設(shè)計(jì)將使用分層模式和工廠方法模式,最大限度的完成系統(tǒng)通用需求。
本系統(tǒng)分為五個(gè)模塊,競賽信息采集、競賽信息監(jiān)控、競賽信息處理、競賽信息傳輸、競賽信息顯示。其中,競賽信息采集由裁判記分子系統(tǒng)和技術(shù)統(tǒng)計(jì)子系統(tǒng)組成,在球類競賽賽事的最前沿進(jìn)行信息采集。采集到的競賽信息都存儲到系統(tǒng)公共數(shù)據(jù)庫中。競賽信息的顯示由電子記分牌子系統(tǒng)和現(xiàn)場大屏幕子系統(tǒng)組成,電子記分牌實(shí)時(shí)顯示裁判記分子系統(tǒng)的比分信息,現(xiàn)場大屏幕顯示比賽的詳細(xì)信息和綜合信息。系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 球類競賽成績監(jiān)控系統(tǒng)結(jié)構(gòu)圖
在系統(tǒng)內(nèi)的各個(gè)子系統(tǒng)間,采用有線局域網(wǎng)組網(wǎng)。并采用TCP/IP協(xié)議作為通信協(xié)議。組網(wǎng)如圖4所示。
由于球類競賽賽事的需求,競賽信息在采集后必須盡快、及時(shí)地傳送給運(yùn)動會相關(guān)的系統(tǒng),以便對競賽信息進(jìn)行及時(shí)匯總和處理,讓觀眾在第一時(shí)間了解賽事的狀況。為了滿足球類競賽賽事的這些需求,本系統(tǒng)在各個(gè)子系統(tǒng)間,采用消息通知模型進(jìn)行通信。
圖4 球類競賽成績監(jiān)控系統(tǒng)組網(wǎng)圖
信息系統(tǒng)各子系統(tǒng)的通信是通過發(fā)送數(shù)據(jù)包消息來完成的:
(1)在比賽過程中,競賽信息采集系統(tǒng)采集競賽信息,將競賽信息存入公共數(shù)據(jù)庫中,同時(shí),向監(jiān)控系統(tǒng)發(fā)送數(shù)據(jù)包消息,通知監(jiān)控系統(tǒng)競賽信息已采集;
(2)監(jiān)控系統(tǒng)接收到數(shù)據(jù)包消息后,從公共數(shù)據(jù)庫中讀取采集到的競賽信息,進(jìn)行監(jiān)控和匯總。同時(shí),向顯示系統(tǒng)發(fā)送數(shù)據(jù)包消息,通知競賽信息已有更新。
(3)顯示系統(tǒng)接收到數(shù)據(jù)包消息后,從公共數(shù)據(jù)庫中讀取競賽信息,更新顯示信息。
(5)在一場比賽或一個(gè)階段比賽結(jié)束后,監(jiān)控系統(tǒng)通知處理系統(tǒng)對比賽成績信息進(jìn)行處理,生成下一階段的比賽對陣信息或獎牌榜排名信息。
由于系統(tǒng)是球類競賽成績監(jiān)控系統(tǒng)通用平臺,必須最大限度的歸結(jié)出系統(tǒng)在不同球類間的共性和差異,將共性的部分進(jìn)行整合,封裝成組件;差異的部分以接口的形式向不同球類系統(tǒng)提供銜接,以完成系統(tǒng)的移植開發(fā)和軟件復(fù)用[5]。
系統(tǒng)分為三層結(jié)構(gòu):數(shù)據(jù)層、邏輯層和表現(xiàn)層。其中數(shù)據(jù)層和邏輯層對不同球類系統(tǒng)來說,是共性所在,而差異主要體現(xiàn)在表現(xiàn)層。
(1)數(shù)據(jù)層
數(shù)據(jù)層處理與數(shù)據(jù)庫交互的業(yè)務(wù)。信息系統(tǒng)將使用一個(gè)或多個(gè)公用數(shù)據(jù)庫,各個(gè)子系統(tǒng)都將采集和處理的競賽信息存儲到數(shù)據(jù)庫中,也從數(shù)據(jù)庫中讀取子系統(tǒng)需要的競賽信息。這一層中所完成的業(yè)務(wù)是所有球類競賽信息系統(tǒng)所共有的。
(2)邏輯層
邏輯層主要處理三大業(yè)務(wù):信息系統(tǒng)各個(gè)子系統(tǒng)間的通信業(yè)務(wù)、基礎(chǔ)信息管理業(yè)務(wù)以及賽事的編排。
各個(gè)子系統(tǒng)間的通信業(yè)務(wù)為比賽過程中,各個(gè)子系統(tǒng)之間發(fā)送數(shù)據(jù)包消息進(jìn)行通信。通信業(yè)務(wù)對于不同的球類競賽信息系統(tǒng)來說,大體相同,可以進(jìn)行模塊化。唯一不同的是發(fā)送數(shù)據(jù)包消息的內(nèi)容不同,因此,將數(shù)據(jù)包的內(nèi)容生成數(shù)據(jù)字典,存入數(shù)據(jù)庫中,在比賽過程中,直接從數(shù)據(jù)庫中讀取數(shù)據(jù)包的內(nèi)容進(jìn)行發(fā)送。
基礎(chǔ)信息的管理業(yè)務(wù)主要為對運(yùn)動員、裁判、代表團(tuán)等信息的管理,其功能主要為對存在數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢、添加、刪除和修改。
賽事編排業(yè)務(wù)主要完成對比賽進(jìn)行編排,生成對陣信息。在進(jìn)行編排時(shí),需要依照球類項(xiàng)目的規(guī)則和賽制進(jìn)行編排??梢詫⑶蝾愴?xiàng)目的規(guī)則和賽制生成數(shù)據(jù)字典,存入數(shù)據(jù)庫中,可以對其進(jìn)行編輯,在比賽編排時(shí),信息系統(tǒng)從數(shù)據(jù)庫中讀取,進(jìn)行比賽編排。
(3)表現(xiàn)層
表現(xiàn)層主要為信息系統(tǒng)的界面設(shè)計(jì),以完成不同球類不同競賽信息的采集。不同球類競賽信息系統(tǒng)在界面上肯定不盡相同,所要采集的競賽信息也不相同。但可以將界面設(shè)計(jì)成模板和母版頁的形式,不同的球類競賽信息系統(tǒng)只需設(shè)計(jì)好子頁嵌入到母版頁中即可。
對于不同的球類競賽的競賽信息采集和監(jiān)控系統(tǒng),所需完成的功能在細(xì)節(jié)上是不盡相同的,這一點(diǎn)在表現(xiàn)層體現(xiàn)的尤為明顯。如果每一個(gè)球類競賽信息采集和監(jiān)控系統(tǒng)都進(jìn)行單獨(dú)開發(fā),效率會非常低。本系統(tǒng)是球類競賽信息采集和監(jiān)控系統(tǒng)通用平臺,必須解決這一難題,而工廠方法模式為解決這一難題提供了思路和途徑。
工廠方法模式提供了一種巧妙的解決方法:工廠方法模式是類的創(chuàng)建模式,其用意是定義一個(gè)創(chuàng)建產(chǎn)品對象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類中。在工廠方法模式中,核心的工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建工作交給子類去做。這個(gè)核心類僅僅負(fù)責(zé)給出具體工廠必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類被實(shí)例化這種細(xì)節(jié)。
具體到球類競賽信息采集和監(jiān)控系統(tǒng)通用平臺上來說,以球類競賽信息采集子系統(tǒng)的界面設(shè)計(jì)為例,不同球類的競賽信息采集子系統(tǒng)的界面設(shè)計(jì)肯定不盡相同,但所要完成的功能是相同的,即完成對競賽信息的采集。不同之處在于競賽信息采集的規(guī)則不同。因此,將競賽信息采集子系統(tǒng)抽象為一個(gè)工廠,完成對競賽信息的采集,在具體開發(fā)不同球類項(xiàng)目的競賽信息采集系統(tǒng)時(shí),由具體的工廠類實(shí)現(xiàn)工廠的實(shí)例。具體示意如圖5所示。
作為球類競賽成績監(jiān)控系統(tǒng)的應(yīng)用,開發(fā)了籃球競賽成績監(jiān)控系統(tǒng)?;@球競賽成績監(jiān)控系統(tǒng)由籃球競賽信息采集、籃球競賽信息監(jiān)控、籃球競賽信息處理、籃球競賽信息傳輸、籃球競賽信息顯示五個(gè)子系統(tǒng)組合。其中的籃球競賽信息采集子系統(tǒng)包括裁判計(jì)時(shí)記分模塊和技術(shù)統(tǒng)計(jì)模塊;籃球競賽信息監(jiān)控子系統(tǒng)包括控制臺模塊;籃球競賽信息處理子系統(tǒng)包括成績處理模塊;籃球競賽信息顯示子系統(tǒng)包括PDP屏幕顯示模塊和現(xiàn)場LED顯示模塊。其部署圖如圖6。它不光可以為一場比賽打分,還可以為多場比賽同時(shí)打分。
圖5 球類競賽成績監(jiān)控系統(tǒng)工廠方法模式的運(yùn)用
圖6 籃球競賽成績監(jiān)控系統(tǒng)部署圖
通過對不同球類競賽信息系統(tǒng)分析獲取其共同點(diǎn),了解其工作原理(流程)、設(shè)計(jì)思想,從而完成平臺的設(shè)計(jì)與實(shí)現(xiàn)。利用軟件復(fù)用技術(shù)和設(shè)計(jì)模式思想,提高了軟件的通用性和復(fù)用性,為今后開發(fā)特定球類競賽信息系統(tǒng)平臺提供了基礎(chǔ)。
[1]Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides.Design Patterns:Elements of Reusable Object- Oriented(設(shè)計(jì)模式-可復(fù)用面向?qū)ο筌浖幕A(chǔ))[M].北京:機(jī)械工業(yè)出版社,2009.
[2]Zhu LIJIN.The design of GIS-based information database of sports competition[J].Environmental Science and Information Application Technology,2010(2):715 -718.
[3][美]James R.Groff,Paul N.Weinberg,Andrew J.Oppel,著.SQL完全手冊[M].王麗敏,譯.北京:電子工業(yè)出版社,2010.
[4][美]Terry Winograd,著.軟件設(shè)計(jì)的藝術(shù)[M].韓柯,譯.北京:機(jī)械工業(yè)出版社,2005.
[5]Yang Qiuxiang.Application research on software reuse technology[J].2010 3rd International Congress on Image and Signal Processing,2010(8):3712 -3714.