Geant4 的軟件開發(fā)過程
Gabriele Cosmo(歐洲核子研究中心,瑞士日內(nèi)瓦)用于 Geant4 協(xié)作。
摘要:
自其最早的研發(fā) [1] 以來,Geant4 仿真工具包已經(jīng)遵循決定項(xiàng)目整體發(fā)展的軟件過程標(biāo)準(zhǔn)進(jìn)行開發(fā)。所涉及軟件的復(fù)雜性包括,軟件產(chǎn)品的廣泛應(yīng)用領(lǐng)域、龐大的代碼量和類別的復(fù)雜性、規(guī)模和分布式性質(zhì)合作本身的所有要素都涉及并關(guān)聯(lián)了廣泛的各種軟件過程。
雖然在“生產(chǎn)”中并從1998 年 12 月向公眾開放,Geant4 軟件產(chǎn)品 [2] 包括所應(yīng)用的類別領(lǐng)域,它們?nèi)栽诜e極開發(fā)中。因此,關(guān)于改進(jìn)開發(fā)周期、系統(tǒng)測(cè)試和用戶支持,他們也需要不同的對(duì)待。這篇文章是旨在描述一些在 Geant4 中應(yīng)用的軟件過程,涵蓋了軟件的開發(fā)、測(cè)試和維護(hù)。關(guān)鍵詞:Geant4、PSS-05、SPICE、Booch、UML
簡(jiǎn)介(Introduction):
許多軟件過程在 Geant4 中得到解決,這些過程來自不同的過程類別:
軟件開發(fā)的主要生命周期
支持生命周期
管理過程
或組織生命周期
和用戶-供應(yīng)商流程。
由于質(zhì)量、穩(wěn)定性要求或特定領(lǐng)域的進(jìn)化階段,或者為了使過程適應(yīng)人們的習(xí)慣,有時(shí)需要定制流程。 軟件過程改進(jìn) (SPI,Software Process Improvement ) 是一個(gè)必須在有關(guān)各方的全力支持下逐步實(shí)施,并確定正確的優(yōu)先事項(xiàng)和目標(biāo) [8]的過程。 在本文中我們將提到一組與 Geant4 相關(guān)的軟件流程; 大多數(shù)相關(guān)的程序和應(yīng)用方法是在項(xiàng)目的開發(fā)階段已經(jīng)有效實(shí)施[1]。
主生命周期過程(Primary life-cycle processes)
Geant4 中大多數(shù)領(lǐng)域采用的生命周期模型是迭代和增量的(也稱為螺旋方法)[9]。 需求分析、設(shè)計(jì)、實(shí)施和測(cè)試之間的步驟是重復(fù)的。根據(jù)新要求或性能問題,對(duì)設(shè)計(jì)的改進(jìn)和擴(kuò)展。 在目前的生產(chǎn)和維護(hù)階段,生命周期模型對(duì)大多數(shù)領(lǐng)域都是迭代的。
需求獲取過程(Requirements elicitation process)
在項(xiàng)目的初始階段,領(lǐng)域問題和用例分析導(dǎo)致了用戶需求的引出 [10]。用戶需求已系統(tǒng)化地按照 ESA PSS-05 軟件工程標(biāo)準(zhǔn)進(jìn)行審查和更新 [11]。 用戶需求文檔 (URD) 現(xiàn)在保存在源代碼存儲(chǔ)倉庫中,能進(jìn)行自動(dòng)版本控制; 它將在 2001 年進(jìn)行修訂。特定項(xiàng)目領(lǐng)域的 URD 也在存儲(chǔ)庫中保存和維護(hù),并且對(duì)協(xié)作組成員可用。
軟件設(shè)計(jì)(Software Design)
Booch (Unified) [9] 方法已被用于面向?qū)ο蟮姆治?和軟件的設(shè)計(jì)。 Booch/UML 表示法被選為通用的設(shè)計(jì)文檔和內(nèi)部設(shè)計(jì)審查的語言。 Rational RoseCASE 工具 [12] 已廣泛用于設(shè)計(jì)文檔的初始生成。并在需要時(shí)用于逆向工程。 正確的域分解和一組經(jīng)過深思熟慮的依賴關(guān)系(避免循環(huán)使用關(guān)系),允許工作在每個(gè)類別域相關(guān)聯(lián)的組在很大程度上并行工作,同時(shí)建立交付的層次結(jié)構(gòu)。 為架構(gòu)和詳細(xì)設(shè)計(jì)提供的標(biāo)準(zhǔn)文件有:類類別圖(Category Diagram)、類圖(Class Diagrams)、場(chǎng)景圖(Scenario Diagrams )和類規(guī)格(Class Specifications)。
軟件創(chuàng)建(Software Construction)
從一開始就采用了編程和編碼指南 [13]。 感覺是——重要的是不要強(qiáng)加太固定的規(guī)則或風(fēng)格慣例,而只是靈活和足夠的指導(dǎo)方針,基本上能處理面向?qū)ο蠓妒降恼掣剑〝?shù)據(jù)隱藏,封裝等)、軟件的性能和可移植性。軟件的打包嚴(yán)格按照領(lǐng)域分解為類別和子類別,這是設(shè)計(jì)過程的結(jié)果。 在適用的情況下,定義接口的類與實(shí)現(xiàn)此類的具體類分開打包在子類別接口中。 通過這種方式,屬于一個(gè)類別的類協(xié)作以可重用的方式提供一組服務(wù)。
軟件集成和單元測(cè)試(Software Integration and Unit Testing)
可以一起測(cè)試的系統(tǒng)聚合體根據(jù)依賴關(guān)系確定類別的結(jié)構(gòu)。 作為例行程序的一部分,定期監(jiān)測(cè)相關(guān)測(cè)試測(cè)試程序[17]。 單元測(cè)試在每個(gè)類別或子類別獨(dú)立執(zhí)行,盡量最大化覆蓋范圍。
系統(tǒng)測(cè)試、驗(yàn)收和發(fā)布(System Testing, Acceptance and Releasing)
系統(tǒng)測(cè)試活動(dòng)由專業(yè)團(tuán)隊(duì)部署,系統(tǒng)測(cè)試團(tuán)隊(duì)(STT)。 測(cè)試 [17] 和發(fā)布 [18] 的程序被定義并嚴(yán)格應(yīng)用。發(fā)布程序預(yù)見到各種類別的標(biāo)簽提交順序遵循每個(gè)類別領(lǐng)域的類圖(Class Diagrams)定義的依賴結(jié)構(gòu)圖表。 驗(yàn)收測(cè)試也包含在常規(guī)系統(tǒng)測(cè)試中并在發(fā)布階段由發(fā)布經(jīng)理單獨(dú)運(yùn)行。 公開發(fā)布每年在固定日期安排兩次。 收集并定期進(jìn)行錯(cuò)誤修復(fù)可作為公共補(bǔ)丁或次要版本使用。
軟件維護(hù)(Software Maintenance)
為了實(shí)現(xiàn)軟件的可維護(hù)性并保證其質(zhì)量,在可能的情況下,都采用標(biāo)準(zhǔn)。 組件的封裝最大化,相互依賴性和單元復(fù)雜性被最小化。 我們努力確保軟件的可移植性主要是通過不斷監(jiān)控編譯器在不同系統(tǒng)架構(gòu)上的演變來實(shí)現(xiàn),并避免采用依賴于系統(tǒng)的解決方案或不可移植的語言特征。 代碼的更新、擴(kuò)展和錯(cuò)誤修復(fù)的可追溯性通過以下方式得到保證。維護(hù)臨時(shí)歷史文件的方法,定期標(biāo)記代碼并嘗試將常規(guī)開發(fā)與錯(cuò)誤修復(fù)更新分開 [18]。
用戶支持,分發(fā)(User Support, Distribution)
Geant4 中的用戶支持條款在備忘錄的諒解 (MoU) [3] 文件第 2 條中定義。每個(gè)工作組的聯(lián)系人是提名的,負(fù)責(zé)管理和解決報(bào)告用戶通過 WWW 使用 Geant4 問題跟蹤系統(tǒng) [24]提交的問題,問題跟蹤系統(tǒng)是基于 Bugzilla [26] 的定制版本。 Geant4 WWW 站點(diǎn) [2] 還提供在線文檔、常見問題解答頁面和每個(gè)工作組域的聯(lián)系人列表。 最近建立了一個(gè)基于 Hypernews [25] 的公共用戶論壇。
支持生命周期過程(Supporting life-cycle processes)
文檔(Documentation)
作為用戶文檔 [19],Geant4 提供了六個(gè)文檔(可從WWW) 解決固有的不同主題和專業(yè)知識(shí)水平的問題。用戶示例隨工具包分發(fā)的文檔以自學(xué)教程的形式引用,具有從“新手”到“高級(jí)”應(yīng)用程序的不同詳細(xì)程度。 訓(xùn)練套件教程、文檔、論文、出版物等也可從Geant4 WWW 站點(diǎn) [2]獲得。
配置和變更管理(Configuration and Change Management)
軟件配置管理:軟件和文檔的服務(wù)器存儲(chǔ)庫已就位; 它基于 CVS [20] 作為并發(fā)版本管理的基本工具。 存儲(chǔ)庫中的代碼和文檔可供通過歐洲核子研究中心的成員通過 AFS [21] 以及“pserver”讀/寫訪問。
標(biāo)記和版本控制:類別工作組協(xié)調(diào)員負(fù)責(zé)管理其類別內(nèi)的開發(fā)并提供遵循明確規(guī)定的規(guī)則 [18]的標(biāo)簽,用于測(cè)試和發(fā)布。然后 STT 將運(yùn)行系統(tǒng)支持的架構(gòu)的測(cè)試。 Bonsai [26] 工具用作數(shù)據(jù)庫以自動(dòng)檢測(cè)引入 CVS 的任何新標(biāo)簽。 全局引用標(biāo)記是每月提供,包括所有通過系統(tǒng)驗(yàn)證測(cè)試的標(biāo)簽。 這標(biāo)簽已公布并提供給開發(fā)人員和合作機(jī)構(gòu)繼續(xù)開發(fā)。 用戶文檔根據(jù)公開發(fā)行版本進(jìn)行標(biāo)記。
質(zhì)量保證和測(cè)量(Quality Assurance and Measurement)
通過專門的監(jiān)控工具定期執(zhí)行代碼演練,監(jiān)控違反既定的編碼規(guī)則。使用了 CodeWizard 工具 [14]; 一個(gè)單元類別提交代碼過濾的自動(dòng)機(jī)制已被引入,可供 Geant4 開發(fā)人員使用。 檢查運(yùn)行時(shí)內(nèi)存管理在每次公開發(fā)行前定期進(jìn)行; Insure++ [15] 和 SUN Workshop 等工具[16] 用于選定的試驗(yàn)臺(tái)應(yīng)用程序。定期執(zhí)行 檢查是否違反宏觀層面的類別依賴結(jié)構(gòu),并在與主類 Category Diagram 的 相關(guān)性被監(jiān)控。 性能監(jiān)控在選定的測(cè)試臺(tái)應(yīng)用程序上應(yīng)用在其中性能很關(guān)鍵的單元級(jí)別的類別上加以應(yīng)用。
雙V驗(yàn)證(Verification and Validation)
在宏觀層面,根據(jù)主類驗(yàn)證 Categories 的依賴結(jié)構(gòu)分類圖作為參考。 驗(yàn)證工具包在 URD [10] 的每個(gè)新修訂版中的一般功能。 功能和覆蓋范圍的單元級(jí)別驗(yàn)證以及單元測(cè)試和驗(yàn)證新的開發(fā)或修復(fù)由每個(gè)類別協(xié)調(diào)員負(fù)責(zé)。 一旦所有系統(tǒng)集成測(cè)試都成功執(zhí)行,新開發(fā)由 STT 驗(yàn)證,前提是,在與類別協(xié)調(diào)員合作,系統(tǒng)測(cè)試已擴(kuò)展到涵蓋新引入的功能。
補(bǔ)充雙V
雙V是系統(tǒng)工程最核心的思想,這種思想也可以用來解釋我們?nèi)粘I钪忻鎸?duì)的各種各樣的事情。
簡(jiǎn)單的說:Verification,中文翻譯叫“驗(yàn)證”,就是把事情做對(duì)(do things right);Validation,中文翻譯叫“確認(rèn)”,就是做對(duì)的事情(do right things)
提供一副簡(jiǎn)圖,供大家揣摩其中的奧秘
組織生命周期流程
項(xiàng)目任務(wù)管理
項(xiàng)目的管理在指定的 Geant4 Collaboration 的控制之下并在 Geant4 補(bǔ)充備忘錄 [3] 中有所規(guī)定。 Geant 4 通過工作組組織起來; 每個(gè)工作組負(fù)責(zé)工具包的一個(gè)特定領(lǐng)域,其中明確指定的任務(wù)與其相關(guān)聯(lián)。 每個(gè)工作組在TSB都由其協(xié)調(diào)員代表。 每年都會(huì)確定目標(biāo),并在 TSB 會(huì)議內(nèi)進(jìn)行討論并提交給 CB。 在 TSB 會(huì)議期間對(duì)它們進(jìn)行一般性審查,聯(lián)合審查或在每年組織一次的合作研討會(huì)上進(jìn)行。
改進(jìn)過程
SPI [4] 計(jì)劃在 TSB 會(huì)議上正式提出并被批準(zhǔn)為2000-2001 年的里程碑。 確定了優(yōu)先事項(xiàng)和目標(biāo)并批準(zhǔn)了目前正在申請(qǐng)SPI程序。基于范例的正式評(píng)估執(zhí)行模型 ISO-15504 (SPICE) [6]。 SPI 被認(rèn)為是生命周期驅(qū)動(dòng)的,因此既定方案的進(jìn)展不斷得到監(jiān)測(cè)。 達(dá)到項(xiàng)目中既定流程 [5] 的能力級(jí)別是 Geant4 的關(guān)鍵目標(biāo)。
編輯:jq
-
仿真
+關(guān)注
關(guān)注
50文章
4070瀏覽量
133552 -
編程
+關(guān)注
關(guān)注
88文章
3614瀏覽量
93686 -
編碼
+關(guān)注
關(guān)注
6文章
940瀏覽量
54814
原文標(biāo)題:Geant4 的軟件開發(fā)過程
文章出處:【微信號(hào):RedHeartRobot,微信公眾號(hào):紅心機(jī)器人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論