1. 程式人生 > >論基於DSSA的軟體架構設計與應用

論基於DSSA的軟體架構設計與應用

【摘要】
  去年三月份,我所在的公司啟動國網電力使用者用電資訊採集系統專案,我被任命為專案負責人。國網電力使用者用電資訊採集系統是國家電網公司堅強智慧電網建設的一部分。由於公司之前為南網(主要是廣東省)開發過類似用電資訊採集系統,且公司準備在電力行業做強做大,我提出了採用DSSA技術來研發國網用電資訊採集系統,得到公司領導層的一致贊同。
  由於專案功能實現上具有明顯的階段性,我決定採用演化方式來實現DSSA及完成應用產品開發。一是對原有系統、文件及國網用電資訊系統功能規範進行分析,完成DSSA;二是對原有系統進行部件提取,做為核心資源的公共部件;三是加強對核心資源的管理,方便研發工程師查詢部件及擴充套件部件。 
  經過近一年的努力,終於完成了公司用電資訊採集系統核心資源的建立,也完成了國網電力使用者用電資訊採集系統專案。
【正文】 
  去年三月份,我所在的公司啟動國網電力使用者用電資訊採集系統專案,我被任命為專案負責人。國網電力使用者用電資訊採集系統是國家電網公司堅強智慧電網建設的一部分。公司之前開發過廣東電網公司計量營銷一體化系統,類似於用電資訊採集系統。
  我對廣東電網公司計量營銷一體化系統的功能規範和國網電力使用者用電資訊採集系統的功能規範進行分析,發現除了系統內各自的通訊協議不同外,其它的功能需求大體上相同。整個採集系統都是分三層實現,主站層,採集終端層和電能表層。由於電能表已經規範化了,有專門的表計生產廠家,這一層不需要投入資源進行研發。從公司目前現狀來看,主站層投入研發工作量較少,一是主站的開發中模組化做得比較好;二是使用者的需求基本一致。國網用電資訊採集系統僅需要在廣東電網公司計量營銷一體化系統主站進行介面調整和支援國網用電資訊採集系統通訊協議即可達到要求。
  根據之前開發的經驗,用電資訊採集系統開發的重點是採集終端的開發。因為採集終端需要安裝到現場,而現場的用電環境各異,能夠到達的遠端通道也不同。採集終端可維護性低或可靠性低,則會產生大量的維護工作,影響公司品牌及利潤。根據用電資訊採集系統的要求,採集終端分為集中抄表終端、專變採集終端和公變採集終端。廣東電網公司計量營銷一體化系統的採集終端大體上也分為上述三類:低壓集抄終端、負荷管理終端、配變監測終端。通過對採集終端的功能要求進行分析,可以看出它們歸屬於一個產品家族。我在專案組啟動會議上提議採用DSSA技術進行採集終端產品的研發,建立公司用電資訊採集系統核心資源,同時將計量營銷一體化系統的採集終端也歸結到產品家族中。
  眾所周知,DSSA(特定領域軟體架構)就是在一個特定的問題領域中支援一組應用的開發,這些應用形成產品家族。DSSA是軟體重用的一種手段,它由領域模型、參考需求、參考架構組成重用元素。
  用電資訊採集系統各終端基本需求都是對外接的電能表或測量點的讀數進行採集,稍做處理後通過GPRS/CDMA通道遠端傳輸給採集系統主站端。採集終端的功能模組一般包括測量點採集模組,表計規約模組,現場匯流排模組,PPP撥號模組,主站命令模組,本地維護模組,程序升級模組,資料儲存模組,交流取樣模組,負荷控制模組等等。
  由於採集終端在現場使用的特殊性,它的非功能性要求主要集中在可靠性、可修改性和易用性。現場用電環境複雜,通道各異,要求採集終端具有高可靠性。由於市場上的電能表支援的規約各異及現場匯流排發展快速,要求採集終端可擴充套件性強,能快速支援新的表計規約和現場匯流排,且支援遠端升級操作。由於在現場施工時多是由工程隊進行安裝,工程隊人員的素質高低不齊,要求採集終端在本地操作具有一定的智慧化,且要求除錯簡單。 
  根據以上分析,採集終端軟體架構採用分層設計比較合適。分層設計的軟體可修改性和可擴充套件性比較好。由於分層開發,將關注點分離到各層,將系統的複雜度分到各層中,相應可靠性也可以得到提高。
在用電資訊採集系統研發中,我決定採用演化方式進行開發。 
  首先對原有系統、文件及國網用電資訊系統功能規範進行分析,完成DSSA。在專案啟始階段,我對計量營銷一體化系統及使用者需求文件及設計文件進行分析,將使用者需求用EXCEL表格列出來。然後再對國網用電資訊採集系統的功能規範進行分析,用同樣的方式列出使用者需求,需求比對後發現它們之間的功能要求大體上是一樣的。但由於通訊協議不同,會導致一些功能在實現上有差別,如主從終端連線功能,用電資訊採集系統採用一條命令完成主從終端的所有通訊,而計量營銷一體化系統分成建鏈、傳輸、斷鏈三條命令來實現。於是我決定將基礎業務模組做成通用的模組,根據不同的引數來初始化模組,或各具體產品自己適配模組。按照這個需求,我對核心資源進行分層設計。
  總體上,核心資源分成三層,由低到高依次是:基礎資源層,基礎業務層,擴充套件業務層。基礎資源層包括多程序框架,GUI系統,系統API和驅動封裝,虛擬通道模組等等。由於採集終端的作業系統是LINUX,而且通訊口資源比較多,採用一個程序管理一個通訊口,單一管理便於維護,因此提供多程序框架,方便應用開發時的程序增加。對系統API和驅動進行封裝,方便以後程式碼的移植。基礎業務層主要包括用電資訊採集系統的各個基礎功能模組,有現場匯流排模組、表計規約模組、測量點採集模組、交流取樣模組、負荷控制模組等等。擴充套件業務層主要對基礎業務層中的各個模組進行引數化和適配,以適應本系統的需要。根據目前的情況,擴充套件業務層主要有計量營銷一體化系統部件包和國網用電資訊採集系統部件包。
  其次對原有系統進行部件提取,做為核心資源的公共部件。計量營銷一體化系統的採集終端在研發時由於沒有采用元件開發技術,各功能模組和應用層耦合較強,在提取公共部件時需要對應用層解耦。各個具體的功能都有相應的控制引數,而控制引數可以由主站命令模組進行讀寫,將控制引數管理模組做成中介者模式,很好地實現了各功能模組的解耦。如PPP撥號模組,和應用層的撥號引數讀寫命令耦合在一起,通過引數管理模組將主站命令模組和PPP撥號模組解耦。
  在對計量營銷一體化系統的採集終端進行部件提取過程中,每完成一個部件的提取,則對原採集終端軟體系統進行重構,並完成整合測試和確認測試。這樣可以始終端保持原採集終端軟體系統可行,成為第一個驗證部件的產品。
  最後加強對核心資源的管理,方便研發工程師查詢部件及擴充套件部件。到了開發的後期,核心資源庫的公共元件慢慢多起來了,同時由於在擴充套件業務層對很多基礎部件進行了引數化和功能擴充套件,很多部件在標識和功能上都差異不大,出現了有點混淆的問題。為了更好地管理,我建立了WIKI伺服器,採用WIKI伺服器進行元件管理,在WIKI伺服器上對元件的標識、功能、介面及與相關元件的差別等等進行了描述。研發工程師輸入相關的關鍵字就能找到匹配的元件及每個元件詳細的說明,方便研發工程師使用。
  隨著用電資訊採集系統核心資源庫的建立,國網用電資訊採集系統專案的功能也逐漸完善起來。採集終端軟體系統在今年8月份通過了國家電網電力科學研究院的全功能測試,這對全體專案組成員是一個振奮人心的好訊息,說明我們的努力得到了認可。