SCADA系統(tǒng)簡介
城市照明監(jiān)控系統(tǒng)是一種SCADA(Supervisory Control and Data Acquisition)系統(tǒng),即監(jiān)視控制與數(shù)據(jù)采集系統(tǒng),是以計(jì)算機(jī)為基礎(chǔ)的監(jiān)測控制與調(diào)度管理自動化系統(tǒng),能實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)采集、故障診斷,設(shè)備控制、測量、參數(shù)調(diào)節(jié)以及信號報(bào)警等各項(xiàng)功能。
SCADA系統(tǒng)自誕生之日起就與計(jì)算機(jī)技術(shù)的發(fā)展緊密相關(guān),至今已發(fā)展了三代。
第一代是基于計(jì)算機(jī)和專用操作系統(tǒng)的SCADA系統(tǒng),70年代~80年代初主要采用第一代SCADA系統(tǒng)。
第二代是基于通用計(jì)算機(jī)的SCADA系統(tǒng),廣泛采用VAX小型計(jì)算機(jī)以及其它通用工作站,操作系統(tǒng)一般是采用通用UNIX操作系統(tǒng)。
第三代SCADA系統(tǒng)開始采用PC機(jī)和網(wǎng)絡(luò)技術(shù),同時(shí)系統(tǒng)逐步從集中式結(jié)構(gòu)轉(zhuǎn)向客戶機(jī)/服務(wù)器結(jié)構(gòu)。
第四代S CA DA系統(tǒng)的雛形已經(jīng)出現(xiàn),它以智能化、網(wǎng)絡(luò)化為標(biāo)志。主要特征是采用因特網(wǎng)技術(shù)、面向?qū)ο蠹夹g(shù)、模糊控制及數(shù)據(jù)挖掘等技術(shù),實(shí)現(xiàn)了SCADA系統(tǒng)與其它信息系統(tǒng)的增值集成,實(shí)現(xiàn)控制和管理過程的現(xiàn)代化和自動化。
SCADA系統(tǒng)一般采用分散式測控、集中式管理的方式,整個(gè)系統(tǒng)由監(jiān)控中心、若干個(gè)分散的遠(yuǎn)程測控終端RTU(Remote Terminal Unit)和通信介質(zhì)三部分組成。監(jiān)控中心又稱主站,是SCADA系統(tǒng)的核心,負(fù)責(zé)控制管理整個(gè)系統(tǒng)的運(yùn)行。本文針對監(jiān)控中心實(shí)時(shí)監(jiān)控軟件的開發(fā)方法進(jìn)行論述。
幾種軟件開發(fā)方法在項(xiàng)目中的應(yīng)用
照明監(jiān)控領(lǐng)域的軟件開發(fā)從九十年代初期至今尚未完全擺脫手工藝的開發(fā)方式,很大程度上還依靠單兵作戰(zhàn)。由于應(yīng)用的城市多,用戶水平有高有低,在軟件版本上也是種類繁多,完全沒有適應(yīng)軟件工程的開發(fā)需要。
隨著客戶需求的越來越多、越來越高,造成現(xiàn)有的軟件開發(fā)難度越來越大,特別是軟件版本的統(tǒng)一問題、軟件編程的重復(fù)性勞動問題、軟件開發(fā)團(tuán)隊(duì)的協(xié)調(diào)工作問題等等,在許多方面都無法適應(yīng)現(xiàn)有的需求和形式。
增量開發(fā)
由于增量模型特別適用于需求經(jīng)常變化的軟件開發(fā),以及市場急需而開發(fā)人員和資金不能在設(shè)定的市場期限前實(shí)現(xiàn)一個(gè)完善的軟件。這種情況在軟件開發(fā)中經(jīng)常發(fā)生。其原則:盡量采用軟件重用技術(shù)、算法的時(shí)/空開銷方面可以讓步、充分展示軟件的可見部分等,也經(jīng)常在現(xiàn)有團(tuán)隊(duì)已有的軟件開發(fā)方法中有一定的應(yīng)用。
然而,由于從事的軟件屬于實(shí)時(shí)監(jiān)控軟件,在可靠性、穩(wěn)定性、健壯性、運(yùn)行效率和可維護(hù)性上要求又較高,而增量模型的一些固有缺點(diǎn),如缺少項(xiàng)目標(biāo)準(zhǔn),有點(diǎn)像編碼修正;缺少控制,由于用戶可能不斷提出新要求,因而迭代的周期很難控制;運(yùn)行效率可能會受影響等等。這些缺點(diǎn)使得這種開發(fā)模型并不適用于團(tuán)隊(duì)現(xiàn)有的軟件開發(fā)模式。
面向?qū)ο箝_發(fā)
面向?qū)ο蠓椒M人類思維習(xí)慣,即問題域與求解域在結(jié)構(gòu)上一致,以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體:對象。使得程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合,是相互協(xié)作又彼此獨(dú)立的對象集合。
很明顯,面向?qū)ο蟮拈_發(fā)方法能夠有效地利用自身具有的多種屬性,如繼承、多態(tài)、封裝以及消息機(jī)制,最大程度地減少了系統(tǒng)的重復(fù)性工作、提高了系統(tǒng)可維護(hù)性和可讀性。
面向?qū)ο箝_發(fā)方法優(yōu)點(diǎn)很多,但由于現(xiàn)有人員還不具備相關(guān)知識能力,原有系統(tǒng)如果推翻重來,涉及到的用戶以及軟件較多,故只能作為下一步努力的方向。
基于構(gòu)件的開發(fā)模型
基于構(gòu)件的軟件開發(fā)方法通過軟件復(fù)用,利用預(yù)先包裝好的軟件構(gòu)件來構(gòu)造應(yīng)用系統(tǒng),從而減少重復(fù)工作量、減少軟件現(xiàn)場工作量。通過可復(fù)用的軟組件(稱為構(gòu)件),復(fù)用這些軟構(gòu)件,組裝應(yīng)用系統(tǒng),從而降低軟件開發(fā)和維護(hù)費(fèi)用,提高軟件生產(chǎn)率,同時(shí)也提高軟件質(zhì)量。
基于構(gòu)件的開發(fā)從客戶處導(dǎo)出需求,選擇合適的體系結(jié)構(gòu)風(fēng)格來滿足待建造系統(tǒng)的目標(biāo),然后選擇潛在的可復(fù)用構(gòu)件,認(rèn)證這些構(gòu)件以確信它們能夠合適地符合系統(tǒng)的體系結(jié)構(gòu),為了更好地集成,對構(gòu)件進(jìn)行適應(yīng)性修改,集成構(gòu)件以形成子系統(tǒng)和完整的應(yīng)用。此外,對系統(tǒng)中不能被現(xiàn)存構(gòu)件實(shí)現(xiàn)的那些方面,還需開發(fā)定制的構(gòu)件。
通過以上一些步驟, 實(shí)現(xiàn)軟件開發(fā)??梢姡绾芜x擇合適的部分構(gòu)造構(gòu)件、構(gòu)件編制工作由誰來完成、如何測試等等,都是很重要的環(huán)節(jié)。而恰恰在這幾個(gè)重要環(huán)節(jié)上,對于現(xiàn)有團(tuán)隊(duì)而言,正是缺少相應(yīng)支持的環(huán)節(jié),如在整體上能夠把握系統(tǒng)關(guān)鍵環(huán)節(jié)的團(tuán)隊(duì)、軟件的質(zhì)量監(jiān)督與管理等等。所以,基于構(gòu)件的開發(fā)模型對于現(xiàn)有軟件開發(fā)團(tuán)隊(duì)(軟件編程人員6~8人,4人為具有實(shí)踐經(jīng)驗(yàn)的編程人員,2~4人為尚無實(shí)踐經(jīng)驗(yàn)的新進(jìn)人員),同樣需要通過人員調(diào)整、制定合適的嚴(yán)格的軟件質(zhì)量監(jiān)督機(jī)制,才能逐步實(shí)現(xiàn)。適合于團(tuán)隊(duì)現(xiàn)有軟件開發(fā)機(jī)制的構(gòu)想這種機(jī)制不完全是以上任何一種,而更多地像多種軟件開發(fā)方法的綜合體。
首先,追溯以前的軟件開發(fā)工作,通過結(jié)構(gòu)化思想、采用構(gòu)件開發(fā)模型,完成現(xiàn)有構(gòu)件庫,并逐步應(yīng)用到已有系統(tǒng)中。對于一些較難的構(gòu)件構(gòu)造與測試,應(yīng)有多人共同參加。
第二,構(gòu)件的開發(fā)由實(shí)踐經(jīng)驗(yàn)豐富的編程人員實(shí)施,每一個(gè)構(gòu)件應(yīng)具有面向?qū)ο蟮囊恍傩?,如封裝特性、接口與信息等。
第三,構(gòu)件的組裝由多人協(xié)同參與,組裝的目的主要是逐步替代現(xiàn)已應(yīng)用的軟件系統(tǒng),完成軟件系統(tǒng)的逐步歸一化。
第四, 對于用戶經(jīng)常提出的新需求,盡量不在現(xiàn)場完成,而是在了解需求、上報(bào)構(gòu)件庫后再視情況完成。若情況緊急,可先在軟件現(xiàn)場的可視部分與基本部分完成基礎(chǔ)功能,如界面交互上、基本運(yùn)行條件上等,而詳細(xì)的最終解決方案還是應(yīng)由構(gòu)件組成員結(jié)合現(xiàn)有構(gòu)件情況后制定。
VB中構(gòu)件的開發(fā)與應(yīng)用
由于現(xiàn)有團(tuán)隊(duì)的編程語言基本使用VB6.0,而VB中最關(guān)鍵的就是對控件的應(yīng)用。除了使用開發(fā)系統(tǒng)自帶的控件以外,還可以自己開發(fā)控件,作為構(gòu)件庫的一部分,向軟件系統(tǒng)集成提供支持。對于控件的選用與開發(fā),必須注意以下幾點(diǎn):
第一,要考慮控件的實(shí)際功能。功能強(qiáng)、接口多的控件可以增強(qiáng)應(yīng)用軟件的質(zhì)量,也可減少編程工作量,當(dāng)然,這要結(jié)合應(yīng)用需求來定,并不是功能越多越好。提供的功能多了,控件本身就很大,占好幾兆空間,增加了程序的冗余代碼。另外,一些功能閑置、靈活性太強(qiáng)也可能導(dǎo)致最終用戶不易掌握使用。
第二,控件的穩(wěn)定性要強(qiáng)。作為應(yīng)用程序的基石,不應(yīng)選用那些控件本身容易出錯,補(bǔ)丁太多的版本。
第三,控件的易用性要高。選用那些屬性配置合理,事件觸發(fā)機(jī)制明晰流暢,易于設(shè)計(jì)和使用,項(xiàng)目組中的程序員都容易接受掌握的控件。
如同樣是網(wǎng)格控件,Grid和DBGrid就有許多不同。Grid只是提供了一個(gè)預(yù)覽的功能,便于數(shù)據(jù)的修改,在需要對數(shù)據(jù)庫進(jìn)行大量數(shù)據(jù)的操作時(shí),為了減少對數(shù)據(jù)庫的直接操作,提高數(shù)據(jù)庫的安全性,使用Grid控件,非常方便。Grid是VB在早期版本中就帶有的控件,但現(xiàn)在與其它控件比較起來功能有些不足。
DBGrid控件是專用來操作數(shù)據(jù)庫的網(wǎng)格控件,可以綁定到Data控件,幾乎不用寫代碼就可方便地對數(shù)據(jù)進(jìn)行顯示,增加、刪除或修改記錄,DBGrid具有OnAddNew、BeforeDelete等事件,可在增加新記錄或刪除修改時(shí)對數(shù)據(jù)進(jìn)行有效性檢驗(yàn),來實(shí)現(xiàn)事務(wù)處理功能。DBGrid也可以在設(shè)計(jì)時(shí)編輯網(wǎng)格格式,指定顯示字段等,增強(qiáng)了顯示和操作數(shù)據(jù)的能力。
綜上所述,在軟件工程實(shí)際運(yùn)行過程中,應(yīng)該通過軟件工程知識,靈活應(yīng)用各種方法與開發(fā)模型,制定適合自己開發(fā)團(tuán)隊(duì)的有效方法,只要緊密圍繞可維護(hù)性、健壯性、可靠性、高效性等方面,就可逐步適應(yīng)軟件工程的發(fā)展需要。
(本文作者盧強(qiáng)系中國電子科技集團(tuán)公司第五十研究所工程師,蔣琦系中國電子科技集團(tuán)公司第五十研究所高級工程師)