论软件架构风格及其应用
在準備架構師考試過程中發現可供參考的論文范圍非常少且內容陳舊給學習帶來很大煩惱,通過考試后把我準備的論文共享出來水平有限但內容格式迎合考試,希望給大家一個參考。范文以“論軟件架構風格及其應用”為題書寫,希望對大家有所幫助。
【摘要】
2017年5月,我參加了某省質量技術監督局“生產制造一體化監管平臺”項目(以下簡稱一體化平臺),擔任架構師職務負責整體架構設計與中間件選型。該系統以監管企業生產制造為主線,旨在幫助各級監督部門解決監管企業生產、報審、送檢、勘驗、巡檢和執法等問題。本文以一體化平臺為例,論述了軟件架構風格在項目中的應用,并闡述了選擇層次結構、獨立構件、管道/過濾器和數據庫系統四種架構風格在項目中組合應用的原因和效果。最后總結了在開發過程中遇到的問題及解決方式。實踐證明通過適當的架構風格選擇和組合應用使開發工作取得了成功,一體化平臺于2018年10月驗收上線,目前已穩定運行1年時間得到了監管部門和企業的一致認可和好評。
【背景】
質量技術監督在生產領域、市場流通領域等方面都起到至關重要的作用,關乎到企業生產和人民日常生活。某省質量技術監督局在信息化方面起步較早,先后建設了數套專項系統,但缺乏對業務的統一監管,為貫徹落實國家市場監督總局《關于加快推進質量體系監管信息化建設要求》,一體化平臺的建設工作受到各級領導的關注。項目建設目標覆蓋省、市、縣區三級質量監管部門及全省三十多萬家企業,為工業生產、報審、送檢、勘驗、巡檢和執法工作提供支持。我所在公司長期從事相關行業的軟件開發,對質量監督領域有著豐富經驗,因此順利中標承建了該項目,初期投入15名技術人員和5名測試人員,由我擔任架構師職務,負責軟件架構設計和中間件選型。
項目啟動后通過對業務的梳理,初步將一體化平臺劃分為四大模塊,其中政務服務模塊針對的是通過互聯網訪問系統的企業用戶,在功能上主要包括報審、送檢、公示和政策法規宣傳等功能;而其它三個模塊針對的是通過電子政務外網訪問系統的監管部門和事業單位用戶,其中運行管理模塊主要功能包括審批、勘驗、頒證、建檔;企業監管模塊主要功能包括巡檢、執法;電子監察模塊主要功能包括實時監控、預警糾錯和效能評估。
【論點】
在架構設計開始階段,我意識到選擇合適的架構風格對架構設計的重要性,因此在基本需求確定后,首先對常用的經典架構風格進行了分析。
1.數據流風格:數據以流的形式進行處理,構件之間相對獨立,包括管道過濾器和批處理程序兩種架構風格。其中管道/過濾器架構風格是本次重點考慮的架構風格,它的特點是每個構件都有一組輸入和輸出,構件讀輸入的數據流,經過內部處理,產生輸出數據流。優點是構件具有良好的隱蔽性、高內聚低耦合、維護簡單支持重用;缺點是不適合處理交互的應用、性能下降。
2.獨立構件風格:每個構件都是獨立的個體,構件之間不能直接通信,有效降低耦合。包括進程通信和事件驅動系統兩種架構風格,其中事件驅動系統是本次重點考慮的架構風格,它的特點是構件不直接調用過程,而是觸發一個或多個事件后自動調用。優點是支持并發執行和實時/增量響應;缺點是放棄了對系統計算的控制。
3.數據倉儲風格,由中央共享數據結構和獨立構件構成。包括數據庫系統、黑板風格和超文本系統三種架構風格,其中數據庫系統是本次重點考慮的架構風格,它的特點由中央數據源來保持當前數據狀態,由獨立構件對數據進行操作,優點是支持多種數據格式、擴展方便。缺點是測試困難
4.調用返回風格:利用分治法思想,將大問題拆分為小問題解決。包括主程序/子程序、面向對象和層次結構三種架構風格。其中層次結構風格是本次重點考慮的架構風格,它的特點是劃分多個層組成一個層次結構,每一層為上層服務,并作為下層客戶,優點是支持功能增強和軟件重用,缺點是分層困難。
結合一體化平臺本身業務特點以及對常用架構風格的分析,我意識到單個架構風格的應用只能解決某一類問題,對于大型復雜業務系統往往需要多種架構風格混合并用,因此在本項目中我選擇了層次結構、管道過濾器風格、事件驅動系統和數據庫系統四種架構混合使用來滿足系統要求。下面說明采用各架構風格的原因和具體應用。
分層架構風格,本項目系統采用J2EE技術開發,其本身就具有N層架構的特點,且業務本身需要覆蓋省、市、縣區三個級別的監督部門和全省企業,考慮到安裝部署和用戶使用,分析后決定采用三層B/S架構風格來構建系統,其層次劃分為表現層、功能層和數據層。表現層,運行在客戶機瀏覽器上,是應用的用戶接口擔負著用戶與應用間的對話功能。為了保障瀏覽兼容性,在前端使用了技術成熟的JQuery框架開發頁面。功能層,運行在Web服務器上,負責響表示層的用戶請求,執行業務邏輯并調用數據層持久化數據。考慮到系統需要長期在高并發、大負載環境下運行,因此在部署策略上使用了Nginx做反響代理集群解決負載均衡問題。數據層,就是數據庫管理系統,它運行在數據庫服務器上負責管理數據讀寫和執行事務。在數據層我使用Oracle RAC集群,來保障并發性和穩定性。
管道過濾器架構風格,由于運行管理模塊核心功能是審批企業辦件,每一個審批活動均有一個開始點和結束點,辦件在審批活動中順序流轉,只有上一個環節結束下一環節才能開始,每一步的處理結果會帶入到下一環節中,經過分析以上業務符合管道過濾器架構風格。在此基礎上客戶又提出可以根據不同報審類型,可以通過可視化界面預先定義處理流程,并在運行中基于角色分配待辦任務。因此在具體實現上,我決定采用Activity開源工作流組件做二次開發來滿足架構需求。
事件驅動系統,由于績效監察模塊核心功能是監督審批過程,一旦出現違規事件,將給予對應的處分。經過分析以上業務符合事件驅動系統架構,在具體實現上該架構由事件、事件消費者、事件產生者和注冊中心組成。事件消費者向注冊中心訂閱事件,事件產生者向注冊中心發布事件。根據業務在系統中預先定義了不予受理、辦理超時和作廢辦結三種異常事件。在運行時一旦產生異常注冊中心會通知事件消費者進行處理(黃牌、紅牌)。
數據庫系統,由于各模塊(報審、送檢、巡檢、決策)為了保證業務處理的準確和及時彼此需要共享數據,中央數據結構維護當前狀態,獨立構件在存儲上執行操作,經過分析以上業務符合數據庫系統風格。因該系統中各模塊間數據存在大量的邏輯關系,因此在具體實現上我使用了關系型數據庫,考慮到該層I/O負載,我使用了三臺Oracle數據庫服務器和一臺磁盤存儲陣列搭建RAC集群作為中央庫,在滿足業務需求基礎上,還可保證系統的負載和高可用。
【結尾】
實踐證明多種架構風格的成功應用,使系統模塊間耦合度降低,提升了程序的穩定性和可靠性。但開發過程中也遇到過問題,因客戶單位部分用戶派駐到辦事大廳工作,窗口辦公需要配合高拍儀、讀卡器等硬件設備,而瀏覽器出于安全考慮隔離了web程序調取本地資源僅提供有限支持,給系統推廣帶來了困難。對此我采用了富客戶端技術,使用Electron框架封裝了一個客戶端專門負責調取硬件資源及時解決了該問題,沒有對項目造成實質影響。通過項目組全體成員的共同努力,一體化平臺于2018年10月完成驗收工作正式上線,截至目前系統運行穩定運維工作量可控,得到了用戶的一致認可和好評。在今后的工作中我將不斷總結和提升專業技術能力,爭取為我國信息化事業貢獻一份力量。
總結
以上是生活随笔為你收集整理的论软件架构风格及其应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏王java_Java2D+3D游戏王
- 下一篇: 魔塔之拯救白娘子~我的第一个VB6+DX