首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

實戰每夜構建(六):構建信息顯示系統與構建系統詳細設計

     編輯:Java 程式設計入門

一、構建信息顯示系統設計

本系統為典型 Web 應用,遵循《面向對象的系統分析與設計》方法,從問題域細化、人機介面、存儲設計、系統介面四個維度展開。

1.1 分析模型細化

引入 Velocity 模板引擎後,調整類圖如下:

  • 因 Java 不支援多重繼承,將 BuildInfoLog 改為介面。
  • NightlyBuild 實作該介面,並繼承 java.util.Hashtable,以專案名為 Key、構建標籤列表為 Value。
  • 依 MVC 模式,將格式化邏輯移至 buildinfo_list.vm 模板,NightlyBuild 專注業務邏輯。
  • 新增 NightlyBuildServlet 繼承 VelocityServlet,擔任控制器角色。

顯示系統設計類圖
顯示系統 MVC 視圖

1.2 人機介面設計

瀏覽者輸入系統 URL 後,首頁顯示構建信息目錄表格,各欄位超鏈接指向具體資源:

資源類型超鏈接 URL 格式
管理日誌${logTopDir}/
構建日誌${projectLogTopDir}/${nightly_build_tag}.txt
度量信息${logTopDir}/${nightly_build_tag}
測試記錄${testTopDir}/${nightly_build_tag}
覆蓋率${testCoverTopDir}/${nightly_build_tag}
產品${distTopDir}/${nightly_build_tag}

頁面以專案名(${key})分組,每組列出構建序號及對應資源鏈接。

1.3 存儲設計

採用檔案系統儲存,核心為 BuildInfoDir 介面,定義各類資源的根目錄與命名規則:

變量名說明預設值
webAppDir應用伺服器 Web 應用根目錄依安裝環境而定
nightlyWebAppName本系統 Web 應用名稱"nightlybuild"
nightly_Build_Tags所有構建標籤列表檔案名"nightBuildLog"
logTopDir構建管理服務日誌目錄"adminLogs"
statCVSTopDir專案度量結果頂層路徑"statCVSes"
projectLogTopDir項目構建服務日誌頂層路徑"projectLogs"
testCoverTopDir測試覆蓋率結果頂層路徑"testCovers"
distTopDir發布版產出物頂層路徑同 webAppDir
testTopDir測試結果頂層路徑"tests"

nightly_Build_Tags 檔案每行一個標籤,格式:專案名-yyyymmdd_HHMMSS,例:nightlybuild-20030312_080100。

1.4 系統介面設計

與構建系統介面即為上述 BuildInfoDir;與作業系統無直接介面。

二、構建系統設計

2.1 分析模型調整

考慮 Ant 腳本限制,引入 LogAdmin 類記錄 BuildAdmin 運行日誌,並透過 <ant> 任務鏈式調用 ProjectBuild。三類別(LogAdmin、BuildAdmin、ProjectBuild)均須可執行。

構建系統調整後類圖

2.2 模板方法模式應用

將構建流程劃分為固定腳本與專案相關腳本,符合模板方法模式:

  • ProjectBuild.test_project 模板方法:準備測試環境(編譯、打包、安裝)→ 執行測試 → 生成測試報告 → 生成覆蓋率信息。其中編譯、打包、測試為子類實作的抽象方法。
  • ProjectBuild.dist_project 模板方法:編譯 → 打包 → 安裝。編譯、打包為抽象方法。

構建系統設計類圖二
模板方法調用序列圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved