摘要:隨著我國工業(yè)信息化的發(fā)展,建立工業(yè)控制系統(tǒng)已成為大型工業(yè)企業(yè)進行產(chǎn)業(yè)管理的必然選擇。開發(fā)工業(yè)控制設(shè)備軟件是建立工業(yè)控制系統(tǒng)的前提,而傳統(tǒng)的軟件開發(fā)成本高、周期長,難以滿足工業(yè)產(chǎn)業(yè)的軟件開發(fā)需求。對軟件復(fù)用技術(shù)進行分析,探討了軟件復(fù)用技術(shù)在工業(yè)控制設(shè)備軟件開發(fā)中的應(yīng)用。提出了一個三層軟件系統(tǒng)分層構(gòu)造,分析了該構(gòu)造對于開發(fā)可復(fù)用工程控制設(shè)備軟件的作用。
關(guān)鍵詞關(guān)鍵詞:軟件復(fù)用技術(shù);工業(yè)控制系統(tǒng);軟件開發(fā)
DOIDOI:10.11907/rjdk.143905
中圖分類號:TP319
文獻標(biāo)識碼:A文章編號
文章編號:16727800(2015)002011103
作者簡介作者簡介:林明濤(1970-),男,海南瓊海人,海南軟件職業(yè)技術(shù)學(xué)院軟件工程系講師,研究方向為計算機軟件。
0引言
我國已經(jīng)進入了信息時代,社會信息化程度不斷提高,軟件在人們的生活、生產(chǎn)中發(fā)揮的作用越來越明顯。作為我國的經(jīng)濟支柱之一,工業(yè)產(chǎn)業(yè)管理業(yè)也進入了信息化階段。隨著工業(yè)產(chǎn)業(yè)管理信息化的進一步推進,工業(yè)控制設(shè)備軟件的需求量急劇增加。利用傳統(tǒng)方式開發(fā)的軟件成本高、工作量大、開發(fā)周期長。隨著軟件產(chǎn)業(yè)的發(fā)展,傳統(tǒng)軟件開發(fā)方式已明顯不能適用于當(dāng)前的軟件需求。另外,傳統(tǒng)方式開發(fā)出來的軟件系統(tǒng)龐大復(fù)雜,許多功能之間相互聯(lián)系,不能進行單獨升級或者拆卸,靈活度不高。軟件復(fù)用技術(shù)的出現(xiàn)改變了這一狀況,它可以有效提高軟件的開發(fā)效率,提高軟件的開發(fā)質(zhì)量,增強軟件的可維護性\[1\]。因此,將軟件復(fù)用技術(shù)應(yīng)用于工業(yè)控制設(shè)備軟件開發(fā)中,有利于滿足我國工業(yè)對控制設(shè)備軟件開發(fā)的需求。
1軟件復(fù)用技術(shù)概述
軟件復(fù)用是指在軟件開發(fā)時不需要重新編寫軟件的全部內(nèi)容,而是通過事先構(gòu)造好的軟件成果來實現(xiàn)軟件開發(fā)。這里“已構(gòu)造好的軟件成果”不僅包括軟件程序,還包括軟件的項目計劃書、可行性報告、需求分析、概要分析等軟件開發(fā)不同階段的實現(xiàn)制品。軟件復(fù)用技術(shù)的設(shè)計理念就是將各軟件元素視為獨立的組件。在軟件開發(fā)過程中只要將對應(yīng)的組件連接上,就可以實現(xiàn)所需要的功能,不必重新編寫軟件程序。因此,軟件復(fù)用可以發(fā)生在軟件開發(fā)的任何一個階段。
軟件復(fù)用的關(guān)鍵在于實現(xiàn)軟件構(gòu)件的提取\[23\]。軟件構(gòu)件是將相關(guān)聯(lián)的函數(shù)及有關(guān)數(shù)據(jù)封存在其中的、功能相對獨立的、可支持復(fù)用的軟件單元。軟件構(gòu)件提取是指在基于構(gòu)件的軟件開發(fā)中提取可復(fù)用的軟件構(gòu)件的過程。
軟件構(gòu)件提取是軟件復(fù)用的前提。軟件提取的方式主要有以下幾種:
(1)從現(xiàn)有軟件中提取合適的構(gòu)件,通過適當(dāng)?shù)匦薷暮筮M行使用。這種方式的成本最低,但是適用范圍不大。因為在現(xiàn)有的軟件中提取符合條件的構(gòu)件的條件比較苛刻,而且后續(xù)的修改工作量也比較大。
(2)直接購買現(xiàn)成的商業(yè)構(gòu)件。目前,市面上已經(jīng)出現(xiàn)了現(xiàn)成的可用于軟件復(fù)用的構(gòu)件,商業(yè)構(gòu)件的使用難度比第一種方式中提取的構(gòu)件低。軟件開發(fā)商根據(jù)市場的需求開發(fā)出的商業(yè)構(gòu)件在使用時不需要再進行修改就可以直接使用,可以省去許多繁瑣的工作。不過這種方式的成本較高,而且缺乏針對性,而且商業(yè)構(gòu)件還可能受到版權(quán)、后期維護等因素的影響。
(3)重新開發(fā)一種新的軟件構(gòu)件。這種方式的成本較低,而且開發(fā)出來的構(gòu)件比較有針對性,不會存在版權(quán)等問題,集合了第一、第二種構(gòu)件的優(yōu)點。但這種方式對技術(shù)開發(fā)人員的要求比較高,如果技術(shù)人員的技術(shù)水平不足,開發(fā)出來的軟件構(gòu)件可能會出現(xiàn)性能不佳、不兼容等問題。受開發(fā)水平限制,一般是在第一、第二種方式無法實施的情況下,才實施第三種方式。考慮到開發(fā)軟件與其它設(shè)備的匹配問題,本文開發(fā)的工業(yè)控制設(shè)備軟件選擇了第三種方式。
常見的軟件復(fù)用技術(shù)主要包括軟件組合技術(shù)、軟件生成技術(shù)和面向?qū)ο蠹夹g(shù)等\[4\]。軟件組合技術(shù)是將可復(fù)用軟件成果組合在一起。軟件生成技術(shù)是利用可復(fù)用的軟件模式生成一個新的程序或程序段??蓮?fù)用的軟件模式包括代碼模式和規(guī)則模式。面向?qū)ο蠹夹g(shù)是將技術(shù)中的對象作為軟件復(fù)用的構(gòu)件。在這3種方法中,面向?qū)ο蠹夹g(shù)是最適合軟件復(fù)用的方法。面向?qū)ο蠹夹g(shù)與軟件復(fù)用技術(shù)有異曲同工之處。面向?qū)ο蠹夹g(shù)是將相關(guān)聯(lián)的函數(shù)和代碼封存在一個對象內(nèi),再將對象作為構(gòu)建系統(tǒng)的基礎(chǔ)單位。可復(fù)用構(gòu)件也是將相關(guān)函數(shù)和代碼封存在一個構(gòu)件內(nèi),通過構(gòu)件的連接形成一個新的軟件。對象與構(gòu)件的相似之處使得面向?qū)ο蠹夹g(shù)可以更加適合實現(xiàn)軟件復(fù)用。本文采取面向?qū)ο蠹夹g(shù)來實現(xiàn)軟件復(fù)用。
2軟件復(fù)用技術(shù)應(yīng)用于工業(yè)控制設(shè)備軟件開發(fā)的必要性
隨著我國的經(jīng)濟不斷發(fā)展,我國工業(yè)發(fā)展規(guī)模逐漸擴大。為了適應(yīng)日益激烈的市場競爭,許多大型企業(yè)都開始投入資金,建立起或者準(zhǔn)備建立工業(yè)控制系統(tǒng),實現(xiàn)工業(yè)生產(chǎn)管理信息化。工業(yè)控制系統(tǒng)的出現(xiàn),可以加強技術(shù)人員對工業(yè)機器設(shè)備運行情況的監(jiān)控,減少人員工作量,也可以降低工廠的人工成本,提高工廠的生產(chǎn)效率。建立工業(yè)控制系統(tǒng)需要開發(fā)工業(yè)控制設(shè)備軟件。與其它軟件相比,工業(yè)控制設(shè)備軟件需要與多臺設(shè)備接口相連接,運行環(huán)境較復(fù)雜,功能要求較高。由于軟件要求比較高,所以工業(yè)控制設(shè)備軟件開發(fā)的工作量較大。而隨著我國工業(yè)生產(chǎn)管理信息化的深入和推廣,對工業(yè)控制設(shè)備軟件的需求量會越來越高。如果軟件開發(fā)人員對每個軟件進行單獨開發(fā),整個行業(yè)的工作量將很大,工作效率也非常低。如果可以開發(fā)出一個可復(fù)用的工業(yè)控制設(shè)備軟件,軟件開發(fā)人員在設(shè)計新軟件時只需要在該工業(yè)控制設(shè)備軟件上補充或修改內(nèi)容,無需從頭開始,從而大大減少軟件開發(fā)的工作量。另外,運用軟件復(fù)用技術(shù)可以實現(xiàn)行業(yè)內(nèi)軟件標(biāo)準(zhǔn)化,有利于統(tǒng)一行業(yè)標(biāo)準(zhǔn),提高軟件質(zhì)量,減少軟件運行時出現(xiàn)的問題。
軟件復(fù)用是提高軟件開發(fā)效率和質(zhì)量的有效方法。與傳統(tǒng)工業(yè)相比,軟件開發(fā)無法通過簡單的復(fù)制來完成,這是由軟件的物理性質(zhì)和客戶需求而決定。
(1)軟件的物理性質(zhì)決定了軟件無法通過簡單的復(fù)制程序來完成開發(fā)工作。軟件是一種數(shù)字化產(chǎn)品,包含了大量數(shù)據(jù)和函數(shù),內(nèi)在構(gòu)造比較復(fù)雜。另外,不同的運行環(huán)境對軟件的要求不同。目前,開發(fā)軟件的編程語言種類非常多,軟件開發(fā)平臺也各不相同。軟件編程師往往掌握一種以上的編程語言,根據(jù)運行環(huán)境選擇合適的編程語言和開發(fā)平臺。因此,每一個軟件都具有其獨特性,無法簡單通過復(fù)制來完成開發(fā)工作。
(2)軟件的開發(fā)需求具有多樣性特點。軟件開發(fā)都是有針對性的,需要根據(jù)對象客戶的需求進行開發(fā)。而不同客戶的需求都不相同,因此無法像傳統(tǒng)工業(yè)產(chǎn)業(yè)那樣大量地復(fù)制和生產(chǎn)。
在軟件開發(fā)過程中,軟件開發(fā)人員往往花費很多時間和精力去完成軟件的框架和每一個組成部分。而通過觀察可以發(fā)現(xiàn),在需求相似的情況下,軟件內(nèi)容存在一定的共通性。隨著軟件的應(yīng)用范圍不斷擴大,社會上對軟件開發(fā)的需求急劇增加,傳統(tǒng)的軟件開發(fā)方式已不能滿足軟件產(chǎn)業(yè)發(fā)展的客觀需求,因此有必要對軟件開發(fā)方式進行改革。軟件復(fù)用技術(shù)就是提高軟件開發(fā)效率和質(zhì)量目的的有效途徑。
3工業(yè)控制設(shè)備軟件開發(fā)中的軟件復(fù)用技術(shù)應(yīng)用
本文采用C++作為開發(fā)語言,使用Microsoft Visual Studio2010作為軟件開發(fā)平臺,運用面向?qū)ο蟮姆椒ǎㄟ^軟件復(fù)用技術(shù)的應(yīng)用來完成工業(yè)控制設(shè)備軟件的開發(fā),提高軟件開發(fā)的質(zhì)量和效率。
3.1工業(yè)控制設(shè)備軟件設(shè)計
工業(yè)控制設(shè)備軟件連接了需要控制的各項機器設(shè)備。在接通電源,采集系統(tǒng)通電后,系統(tǒng)自動完成初始化工作,軟件進行初始化設(shè)置,用戶登錄信息驗證無誤后進入系統(tǒng)主界面。工業(yè)控制設(shè)備軟件的程序模塊主要包括用戶管理、通信管理、信息記錄管理和數(shù)據(jù)庫信息設(shè)置管理等模塊。用戶的登錄信息傳到數(shù)據(jù)庫后,與數(shù)據(jù)庫的信息進行核對,數(shù)據(jù)庫再將核對后的信息反饋到系統(tǒng),系統(tǒng)根據(jù)數(shù)據(jù)庫的反饋信息確定登錄用戶的權(quán)限。用戶在權(quán)限范圍內(nèi)訪問相關(guān)模塊,進行操作。該工業(yè)控制設(shè)備軟件連接到各臺設(shè)備的串口,收集各串口的信息,及時反饋到軟件的顯示界面上。當(dāng)設(shè)備運行情況超過軟件設(shè)置數(shù)值時會向軟件系統(tǒng)發(fā)出警告,系統(tǒng)可以及時反饋出現(xiàn)異常設(shè)備的運行情況,并將該情況進行記錄并發(fā)送到數(shù)據(jù)庫,形成歷史記錄。通過工業(yè)控制設(shè)備軟件,可以實現(xiàn)技術(shù)人員對機器設(shè)備的實時監(jiān)管,并且可以運用計算機處理并存儲機器運行過程中的大量數(shù)據(jù),避免人工處理數(shù)據(jù)時出現(xiàn)的失誤,減少員工的工作量。
3.2軟件復(fù)用技術(shù)應(yīng)用
軟件復(fù)用技術(shù)在工業(yè)控制設(shè)備軟件開發(fā)中的應(yīng)用主要體現(xiàn)在通過設(shè)計一個面向復(fù)用的工業(yè)控制設(shè)備軟件,使得在以后的工業(yè)控制設(shè)備軟件開發(fā)中,可以直接將復(fù)用軟件中的構(gòu)件用于軟件中形成一個新的軟件,減少工業(yè)控制設(shè)備軟件開發(fā)的工作量。而要實現(xiàn)這一目的,就要運用分層次的體系結(jié)構(gòu)模式,來搭建一個可重用的軟件構(gòu)架。
軟件分層次體系結(jié)構(gòu)是軟件設(shè)計的發(fā)展趨勢\[5\]。在軟件分層次體系結(jié)構(gòu)中,每一層軟件都建立在下層軟件之上,下層對上層提供服務(wù)。軟件分層次體系結(jié)構(gòu)允許每一層軟件用不同的方法來實現(xiàn)。每一層軟件只會對上下兩層軟件產(chǎn)生影響,并且只對相鄰層提供相同的接口。由于軟件分層次體系結(jié)構(gòu)的上述特點,運用分層次軟件體系結(jié)構(gòu)開發(fā)的軟件可以支持?jǐn)U充和重用。
從軟件開發(fā)的角度而言,簡單地重復(fù)軟件分層次結(jié)構(gòu)中的下層軟件并無意義。因此,在開發(fā)復(fù)用工業(yè)控制設(shè)備軟件時應(yīng)該考慮上層的服務(wù)接口設(shè)計\[6\]。具體設(shè)計為,在軟件的數(shù)據(jù)抽象層上建立業(yè)務(wù)對象層,將業(yè)務(wù)邏輯編入業(yè)務(wù)對象層。業(yè)務(wù)邏輯層中一般包含有確認(rèn)用戶登錄信息、記錄系統(tǒng)日志和數(shù)據(jù)庫存取權(quán)限等功能,與數(shù)據(jù)庫引擎相分離。在進行其它相關(guān)軟件設(shè)計時直接將這一層連入軟件結(jié)構(gòu)的相應(yīng)位置就可發(fā)揮業(yè)務(wù)對象層的作用。
根據(jù)軟件分層次結(jié)構(gòu)的有關(guān)原則,將工業(yè)控制設(shè)備軟件的分層次結(jié)構(gòu)設(shè)計為用戶界面表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層的三層結(jié)構(gòu)。為了保證分層次結(jié)構(gòu)軟件的可重用性,軟件的層次功能傳遞是單向性的,即每一層軟件可以命令下一層軟件,但是每一層軟件只能服務(wù)于上一層軟件而不能調(diào)用上一層軟件。因此,這三層軟件由下到上的順序為:用戶界面表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。
用戶界面表示層是最下層的軟件層,負(fù)有連接用戶與各接口之間數(shù)據(jù)來往的功能。當(dāng)用戶需要更改界面內(nèi)容時,只需要修改相關(guān)數(shù)據(jù),界面內(nèi)容就會自動發(fā)生改變。用戶界面表示層是最下層的軟件層,其更改不會影響到上面兩層軟件的功能。業(yè)務(wù)邏輯層在用戶界面表示層之上,負(fù)責(zé)對用戶界面表示層傳來的數(shù)據(jù)進行處理,具有確認(rèn)登錄信息、記錄系統(tǒng)日志等業(yè)務(wù)功能。數(shù)據(jù)訪問層是最高軟件層,負(fù)責(zé)完成業(yè)務(wù)邏輯層傳來數(shù)據(jù)后的數(shù)據(jù)庫操作。這三層結(jié)構(gòu)之間呈現(xiàn)單向依賴關(guān)系,即用戶界面表示層依賴于業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層依賴于數(shù)據(jù)訪問層。
根據(jù)該三層軟件結(jié)構(gòu)設(shè)計出的工業(yè)控制設(shè)備軟件,在其它工業(yè)領(lǐng)域的控制設(shè)備軟件設(shè)計工作中同樣適用。該框架是由一系列的對象和對象之間的相互聯(lián)系組成,程序設(shè)計人員只要將這些對象內(nèi)的函數(shù)和大量數(shù)據(jù)進行補充,就可以得到一個復(fù)用的工業(yè)控制設(shè)備軟件。而在后續(xù)開發(fā)類似軟件時,程序員在該復(fù)用軟件的基礎(chǔ)上根據(jù)軟件運行需要對內(nèi)容進行擴充就可以設(shè)計開發(fā)出一個新的軟件。
4結(jié)語
隨著軟件行業(yè)的不斷發(fā)展,軟件復(fù)用技術(shù)應(yīng)用是軟件開發(fā)的必然趨勢。軟件復(fù)用技術(shù)除了可以有效地提高軟件開發(fā)效率,縮短軟件開發(fā)周期和提高軟件開發(fā)質(zhì)量外,還有利于統(tǒng)一行業(yè)軟件的開發(fā)標(biāo)準(zhǔn)。在工業(yè)控制設(shè)備軟件開發(fā)中引入軟件復(fù)用技術(shù),可以有效提高軟件開發(fā)效率和質(zhì)量,避免開發(fā)過程中的重復(fù)勞動。另外,基于可復(fù)用技術(shù)開發(fā)的工業(yè)控制設(shè)備軟件的構(gòu)件可以進行單獨拆卸和升級,使得系統(tǒng)的維護和升級工作簡易化。因此,利用軟件復(fù)用技術(shù)開發(fā)工業(yè)控制設(shè)備軟件對提高整個行業(yè)的管理水平具有重要意義。
參考文獻參考文獻:
\[1\]李曉勇,薛飛,魯素芬,等.軟件復(fù)用技術(shù)在科學(xué)計算軟件中的應(yīng)用研究\[J\].航空計算技術(shù),2007,37(1):9195.
\[2\]左曉軍,劉鶴靈.軟件復(fù)用技術(shù)在電力企業(yè)信息系統(tǒng)開發(fā)中的應(yīng)用\[J\].河北電力技術(shù),2013,32(1):45.
\[3\]肖劍青,黃風(fēng)華.計算機軟件復(fù)用技術(shù)探究\[J\].長江大學(xué)學(xué)報,2011,8(12):8587.
\[4\]張偉,梅宏.面向特征的軟件復(fù)用技術(shù)——發(fā)展與現(xiàn)狀\[J\].中國科學(xué),2014,59(1):2242.
\[5\]張永,李其申,江澤濤.可復(fù)用技術(shù)在工業(yè)控制系統(tǒng)開發(fā)中的研究\[J\].微計算機信息,2007,23(19):7678.
\[6\]劉鳳龍.關(guān)于軟件復(fù)用技術(shù)若干問題的研究與分析\[J\].長沙鐵道學(xué)院學(xué)報:社會科學(xué)版,2008,9(2):208209.
責(zé)任編輯(責(zé)任編輯:孫娟)