• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      借助Git實施醫(yī)療設備軟件版本控制

      2016-02-11 09:25:31韓華華潤萬東醫(yī)療裝備股份有限公司北京100015
      中國醫(yī)療器械信息 2016年14期
      關鍵詞:分支X射線代碼

      韓華 華潤萬東醫(yī)療裝備股份有限公司 (北京 100015)

      借助Git實施醫(yī)療設備軟件版本控制

      韓華 華潤萬東醫(yī)療裝備股份有限公司 (北京 100015)

      由于醫(yī)療軟件系統(tǒng)及其開發(fā)環(huán)境的復雜性日益增加,結合軟件配置管理的軟件開發(fā)過程已然成為保證醫(yī)療軟件質量的基礎,而版本控制是軟件配置管理最基本的任務。本文介紹了萬東醫(yī)療裝備股份有限公司(下文簡稱萬東)的醫(yī)用X射線影像設備的軟件(影銳2.0)的基于Git的版本控制技術,并闡述了如何利用Git達到多分支管理、可視化易操作的版本標記的要求。本文介紹的方法和技巧是具有通用性的,可供大家參考。

      軟件配置管理 醫(yī)用X射線影像設備 基于Git的版本控制

      萬東在醫(yī)用X射線影像設備領域是個知名的老企業(yè),成立60多年來,早已擁有完整的自主研發(fā)的數(shù)字化醫(yī)學X線影像產品線,包括X線胃腸機和數(shù)字DR,近幾年又增加了MRI磁共振成像設備。萬東的產品目前已經(jīng)廣泛運用于國內和國外多個國家的醫(yī)療單位。

      萬東醫(yī)用X射線影像設備所采用的軟件經(jīng)歷了外包到自主研發(fā)的發(fā)展歷史。最初采用的軟件幾乎都是外包的,成本很高,也無法靈活地滿足客戶多樣化的需求,后來經(jīng)過不懈努力,逐步實現(xiàn)了軟件的自主研發(fā)。目前萬東已注冊登記的醫(yī)用X射線影像設備的軟件是“InvaRay 2.0”(影銳2.0),其不僅有采集圖像功能,還具有圖像后處理、與DICOM系統(tǒng)(例如醫(yī)院PACS系統(tǒng))通信、出診斷報告、打印膠片和圖像發(fā)送存儲功能。

      醫(yī)療信息化、數(shù)字化的發(fā)展離不開醫(yī)療軟件的支持,所以開發(fā)出高質量的醫(yī)療軟件對于醫(yī)療行業(yè)的發(fā)展至關重要。萬東在影銳2.0軟件質量管理過程中,采用了Scrum模式的開發(fā)過程管理、流程化的變更管理和基于Git的版本控制技術。

      版本控制是軟件質量管理的一個重要環(huán)節(jié)。版本控制之所以重要,是因為軟件開發(fā)是一個長時間的工作,而且多人參與,極易出現(xiàn)版本混亂的情況,尤其是后期維護,沒有一個好的版本管理,簡直就是一場噩夢。

      實現(xiàn)版本控制,除了要配置專門的版本管理人員,還要考慮使用何種工具。萬東以前用過微軟的Visual Sourcesafe軟件做版本管理,發(fā)現(xiàn)其具有很多問題,不能滿足要求。影銳2.0軟件是給多個機型(數(shù)字X線機DR、胃腸X線機、乳腺機)使用的綜合平臺,每種機型的功能要求不同,卻使用同一套代碼,而且多人開發(fā),如此復雜的情況,用Git軟件比用Visual Sourcesafe做版本管理要好很多。

      Git是一款免費、開源的分布式版本控制系統(tǒng)[1],用于敏捷高效地處理任何或小或大的項目,我們對其分支功能最感興趣。

      如圖1所示,程序員在主分支上做開發(fā)(簽入簽出),在某個時刻,需要做指定版本的補丁,此時從主分支上找到指定版本對應的代碼,生成一個新的分支,例如取名為分支1,在分支1上,程序員修改代碼完成補丁,同時,主分支上的開發(fā)工作也在同步地持續(xù)進行(主分支代碼與分支1上的不同),等分支1上的修改完成而且發(fā)布后,把分支1合并到主分支上,并做好版本標記(第一個黃色的圓圈,標記為V1.05.X-X為數(shù)字1、2、3…)。類似的,另外一個分支-分支2上的修改完成后,也合并到主分支上,并做好版本標記(第三個黃色的圓圈,標記為V2.05.Y-Y為數(shù)字1、2、3…)。還有一個版本標記(第二個黃色的圓圈,標記為,例如DR產品,版本V2.06),表示此時發(fā)布了一個新的DR版本。后期要得到指定版本或者補丁,就是去Git上找指定版本標記,然后獲取代碼。Visual Sourcesafe沒有這種多分支和分支合并的功能,而且歷史記錄不如Git強大,所以被淘汰掉了。

      圖1.Git分支邏輯示意圖

      圖2.Git存儲庫里影銳2.0的各個分支

      圖3.Git日志歷史中的標記

      圖4.版本標記記錄表的截圖

      圖5.程序屬性中的SHA-1值

      上面分析的只是一種情況,其實,各種分支之間是可以相互合并的,并不一定就是要子分支并入主分支。其實,子分支形成后,就是一個獨立的分支,功能上和原來的主分支是一樣的。如圖2所示,Git存儲庫里可以為一個庫創(chuàng)建若干個分支[2]。

      除了多分支的功能,我們用Git做版本標記感覺操作容易,且一目了然。例如圖3所示,黃色的是標記,發(fā)布版本或補丁后由軟件版本管理員添加上去,Message列里的黑色

      文字是備注,由程序員遷入數(shù)據(jù)(各種文件,包括代碼、文檔、圖片,以及文件夾目錄結構)時寫入或者分支合并時Git自動添加的信息。新的版本標記一旦遷入了Git庫,每個更新了Git庫的人都可以在本地看到新的版本標記。

      此外,軟件版本管理員對黃色的版本標記信息也要單獨做記錄。因為Git日志歷史會隨著時間增長變長(例如十頁以上),導致翻頁尋找標記很困難,而通過記錄表可以更快找到標記的時間信息,然后再去Git日志歷史里尋找標記和代碼,就會縮短時間。記錄表就是起個存檔和輔助作用,看起來會像圖4所示。

      圖表中的外部版版號是硬件產品團隊命名的版本號,內部版本號是軟件團隊命名的階段性版本號,系列表示的是設備的類型(數(shù)字X線機為DR、胃腸為RF、乳腺機為MG)。

      除此之外,我們在軟件的執(zhí)行程序文件屬性中,也寫入了文件版本和Git庫里的SHA-1值(哈希值,代碼的唯一標識值,共40位,取前7位即可)。此小技巧能輔助我們更精準地在日志記錄里找到代碼版本。

      萬東的影銳2.0軟件是用VC++開發(fā)的,VC++實現(xiàn)此技巧的方法如下:先在項目.rc文件的宏定義VS_ VERSION_INFO VERSIONINFO中使用一個占位符_ GIT_VERSION_,然后在軟件項目的預生成事件中,執(zhí)行一段腳本,讓它調用Git命令將SHA-1值賦值給_GIT_ VERSION_,最后軟件編譯的時候,版本有關的信息就被寫入執(zhí)行程序屬性中。腳本內容如下所示:

      腳本內容被保存在批處理文件(例如取名為get-gitversion.bat)中,在項目的預生成事件設置中,調用命令行執(zhí)行此.bat:

      上面的腳本中用到了GeneratedVersion.h文件,此文件就是干一件事情:定義_GIT_VERSION_。軟件項目編譯之時,該占位符會被賦值,GeneratedVersion.h文件的內容,看起來會像這樣:

      注:此處的“bd9ab37”就是從Git日志歷史讀出來的某個SHA-1值的前7位。

      在軟件的執(zhí)行程序Invaray.exe的屬性中,我們不希望動用文件版本和產品版本信息(已經(jīng)設置成內部版本號),所以選擇將SHA-1的值存在原始文件名后面,當然,大家也可以根據(jù)自己的要求放在其他屬性值中,這個沒有多大影響。要修改原始文件名屬性,大家可用文本編輯軟件打開項目.rc文件,找到VS_VERSION_INFO VERSIONINFO后面的BLOCK "StringFileInfo",然后添加占位符__GIT_ VERSION__:

      結果如圖5所示。

      如果軟件不是用VC++而是用的其他語言開發(fā)的,那么實現(xiàn)方法會不一樣了,但是結果是一樣的就行。

      Git還有一些其他的功能,例如Git bash可以通過命令行來操作Git庫,效率甚至比通過可視化界面操作還要好;還有TortoiseGit工具可以更加方便的操作Git庫等等……感興趣的讀者可以在網(wǎng)上查找到大量資料,Git安裝程序也可以從網(wǎng)上下載,本文對此不做贅述。

      [1] Git的下載:https://git-scm. com/

      [2] 開源中國社區(qū) https://www. oschina. net/search?scope=project&q=git

      1006-6586(2016)07-0116-03

      TP311.5

      A

      韓華,現(xiàn)任萬東醫(yī)療裝備有限股份公司的測試主任工程師,負責軟件質量保證工作。

      猜你喜歡
      分支X射線代碼
      “X射線”的那些事兒
      實驗室X射線管安全改造
      機電安全(2022年5期)2022-12-13 09:22:26
      虛擬古生物學:當化石遇到X射線成像
      科學(2020年1期)2020-01-06 12:21:34
      巧分支與枝
      學生天地(2019年28期)2019-08-25 08:50:54
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      一類擬齊次多項式中心的極限環(huán)分支
      基于DirectShow的便攜式X射線數(shù)字圖像采集的實現(xiàn)
      河曲县| 平武县| 吴旗县| 濉溪县| 富民县| 沙坪坝区| 台中县| 临江市| 肥城市| 监利县| 辰溪县| 纳雍县| 东方市| 江安县| 普格县| 肇源县| 阿尔山市| 日土县| 德庆县| 青州市| 靖远县| 通道| 那坡县| 嵊泗县| 页游| 镇巴县| 永川市| 新平| 泰和县| 文成县| 农安县| 公安县| 伽师县| 和林格尔县| 岱山县| 彭山县| 吉水县| 磐石市| 江北区| 沁水县| 塔城市|