[摘要] 體檢排隊系統(tǒng)的開發(fā)經(jīng)歷了一個完整的軟件生命周期。在軟件定義、軟件開發(fā)和軟件維護3個階段,出現(xiàn)了很多問題,如體檢的預(yù)約、修改、刪除;體檢排隊與分組的沖突;軟件的可操作性、維護的穩(wěn)定性等。經(jīng)反復(fù)測試與試用后,最終完成了軟件的各個模塊,實現(xiàn)了軟件的功能,為體檢排隊軟件的制作積累了豐富的經(jīng)驗和教訓(xùn),給軟件的進一步完善提供了有利條件,極大的提高了醫(yī)院各方面的效率,也減少了體檢人員的等待時間。
[關(guān)鍵詞] 體檢排隊;軟件生命周期;軟件定義;軟件開發(fā);軟件維護
[中圖分類號] R195.1 [文獻標識碼] B [文章編號] 2095-0616(2013)13-157-03
Experience and lessons of physical examination queuing system production
HE Yaqing1 XIE Yinglang1 SONG Qin2 WU Ye2 QIU Xiong1 JIANG Yi1
1. Health Check Centre, Ya'an City People's Hospital, Ya'an 625000, China; 2.Department of Computer, Engineering and Technology College, Sichuan Agricultural University, Ya'an 625014, China
[Abstract] The development of physical examination queuing system had gone through a complete software life cycle. In three stages, including software definition, software development and software maintenance, there were a lot of problems, such as physical examination appointment, modify, delete; conflict between medical queue and packet; software operability, maintenance stability. After repeated testing and trial, finally each module of software was completed and the function of software was realized. A wealth of experience and lessons had been accumulated for examination queuing software production. Further improved software will provide favorable conditions, greatly improve the efficiency of various aspects of hospitals and reduce the waiting time of medical personnel.
[Key words] Medical queue; Software life cycle; Software definition; Software development; Software maintenance
體檢排隊系統(tǒng)的設(shè)計、開發(fā)和維護是一個復(fù)雜的問題,它經(jīng)歷完整的軟件生命周期。期間,我們遇到了很多的問題,解決了很多的困難,也積累豐富的經(jīng)驗和教訓(xùn)。軟件生命周期由軟件定義、軟件開發(fā)和運行維護3個時期組成,每個時期又進一步分成若干階段。軟件定義時期通常進一步劃分為3個階段,即問題定義、可行性研究和需求分析。開發(fā)時期具體設(shè)計和實現(xiàn)在前一個時期定義的軟件,它通常由下述4個階段組成:總體設(shè)計,詳細設(shè)計,編碼和單元測試,綜合測試。維護時期的主要任務(wù)是使軟件持久地滿足用戶的需要,通常對維護時期不再進一步劃分階段,但是每一次維護活動的本質(zhì)上都是一次壓縮和簡化了定義和開發(fā)過程[1]。
1 軟件定義時期
1.1 問題定義
現(xiàn)有的問題定義方法一般可以分為形式化和非形式化定義兩種[2]。問題定義是問題求解的邏輯起點,也是后續(xù)環(huán)節(jié)的行為參考依據(jù)。因此,有針對性地對問題定義環(huán)節(jié)所涉及的理論基礎(chǔ)和技術(shù)手段進行分析和研究,具有很強的理論價值和應(yīng)用前景[3]。問題定義,其主要任務(wù)是對復(fù)雜問題本身進行仔細研究,并用復(fù)雜問題定義模型從不同的側(cè)面描述問題。具體執(zhí)行時,要按照由表及里、由現(xiàn)象到本質(zhì)的原則,循序漸進地分析復(fù)雜問題的內(nèi)在邏輯[3]。問題定義階段必須回答的關(guān)鍵問題是:“要解決的問題是什么?”如果不知道問題是什么就試圖解決這個問題,顯然是盲目的,只會白白浪費時間和金錢,最終得出的結(jié)果很可能是毫無意義的。體檢排隊系統(tǒng)在一開始就確定了軟件的功能,為系統(tǒng)樹立了明確的方向,指導(dǎo)著軟件的各項工作,系統(tǒng)由體檢預(yù)約、體檢排隊、體檢預(yù)約管理等功能組成,這些功能又由一些子功能組成。在第一步就回答了系統(tǒng)要解決的問題是體檢預(yù)約和體檢排隊。
1.2 可行性定義
可行性定義要回答的關(guān)鍵問題是:“對于上一個階段所定義的問題有行得通的解決辦法嗎?”體檢排隊系統(tǒng)確立了軟件的功能后,遇到的最大的問題就是這些功能能實現(xiàn)嗎?怎么實現(xiàn)這些功能?首先體檢預(yù)約功能怎么預(yù)約?預(yù)約需要哪些要素?體檢排隊功能,怎么進行分組,怎么進行體檢排隊?體檢預(yù)約管理,怎么進行預(yù)約的增加、刪除修改?怎么查看預(yù)約?這些問題提醒我們:體檢排隊系統(tǒng)能不能實現(xiàn)?能不能最終完成各個功能?為了解決這些問題,我們查閱了很多的文獻,做了許多嘗試,也犯了許多錯誤。最終我們確定了可以通過體檢單位、體檢人數(shù)及體檢時間實現(xiàn)體檢預(yù)約;通過體檢人數(shù)、體檢分組和體檢排隊可以實現(xiàn)體檢的自動排隊,通過體檢預(yù)約修改、體檢預(yù)約刪除和體檢預(yù)約查看可以實現(xiàn)體檢預(yù)約的管理。
1.3 需求分析
軟件需求分析(software requirement analysis)是指研究用戶需求得到的東西,完全理解用戶對軟件需求的完整功能,確認用戶軟件功能需求,建立可確認的、可驗證的一個基本依據(jù)[4]。在軟件工程中,軟件需求分析是軟件定義時期的最后一個階段,它是軟件生存期中極其重要的一步,需求分析的結(jié)果是整個軟件系統(tǒng)開發(fā)的基礎(chǔ).關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量,是軟件成敗的決定因素之一[5]。這個階段的任務(wù)仍然不是具體地解決問題,而是準確地確定“為了解決這個問題,目標系統(tǒng)必須做什么”,主要是確定目標系統(tǒng)必須具有哪些功能。就要求我們明確客戶的需求。課題組軟件制作者與體檢中心人員進行了多次交流和溝通,明確了他們需要什么。經(jīng)過討論,確定目標系統(tǒng)必須要實現(xiàn)的自動排隊功能,而要實現(xiàn)這個功能必須要進行體檢預(yù)約。經(jīng)過需求分析,進一步明確了體檢排隊系統(tǒng)的功能。
1.4 總體設(shè)計
這個階段必須回答的問題是:“概括的說,應(yīng)該怎樣實現(xiàn)目標系統(tǒng)?”總體設(shè)計又稱為概要設(shè)計。需求分析和概要設(shè)計是兩個極其重要的階段。需求分析,完成的是找到軟件“做什么”的問題.概要設(shè)計要完成的是整體項目“怎么做”的問題。需求分析是概要設(shè)計的依據(jù)。而概要設(shè)計則是需求分析自然的邏輯延續(xù)。從需求分析走向概要設(shè)計,就是從待解決問題的領(lǐng)域走向解決方案的領(lǐng)域.也就是從客觀的現(xiàn)實世界走向主觀的計算機待建系統(tǒng)世界的過程。概要設(shè)計階段我們要明確該階段的基本任務(wù)。清楚設(shè)計的基本過程,這樣才能得到高質(zhì)量的設(shè)計制品[6]。
首先,課題組設(shè)計出了體檢排隊系統(tǒng)低成本、中成本和高成本的3種方案。在與雅安市人民醫(yī)院體檢中心進行討論后,綜合時間因素和金錢因素,確定采用中成本方案進行設(shè)計、開發(fā)和維護。確定方案后,我們進行了詳細的計劃,通過什么開發(fā)平臺、什么語言、什么數(shù)據(jù)庫進行設(shè)計開發(fā)和維護。設(shè)計程序是什么體系結(jié)構(gòu)?程序由哪些模塊組成以及模塊間的關(guān)系,我們都進行了磋商和詳細設(shè)計,最終確定一套較完美的解決方案。
1.5 詳細設(shè)計
詳細設(shè)計階段的任務(wù)就是要把解法具體化,也就是回答下面這個關(guān)鍵的問題:“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”這個階段的任務(wù)非常的繁重,體檢排隊系統(tǒng)包括許多的模塊,我們要確定的是設(shè)計出程序的詳細規(guī)格說明,包括系統(tǒng)藍圖,以及必要的細節(jié),方便我們下一步進行實際的程序編碼,也就是我們需要設(shè)計模塊的每個模塊,確定實現(xiàn)模塊功能的算法和數(shù)據(jù)結(jié)構(gòu)。體檢排隊系統(tǒng)在windows 7開發(fā)環(huán)境下,采用C++開發(fā)語言、其開發(fā)工具主要包括Visual Studio 2010開發(fā)平臺、Microsoft Access 2010數(shù)據(jù)庫軟件、Photoshop CS5圖形合成軟件等。體檢排隊系統(tǒng)通過體檢預(yù)約、體檢排隊、預(yù)約管理進行信息化管理和自動化管理。此系統(tǒng)以動態(tài)規(guī)劃算法、不完全數(shù)獨算法、排隊論、體檢分組原理、以及時間唯一理論作為理論基礎(chǔ),進行設(shè)計、開發(fā)和維護。為了更準確的理解和分析體檢排隊問題,并實現(xiàn)體檢排隊問題,我們可以建立數(shù)學(xué)模型。當體檢人數(shù)較多時,需要排隊進行體檢,數(shù)學(xué)模型的建立,有助于解決多人多服務(wù)臺體檢時的排隊情況。體檢分組模型和體檢排隊模型的建立,指導(dǎo)著系統(tǒng)的設(shè)計、開發(fā)和維護。體檢排隊系統(tǒng)具有極強的應(yīng)用價值,其體檢預(yù)約和體檢預(yù)約管理實現(xiàn)了體檢的信息化管理,其體檢排隊改變了以往經(jīng)驗分配排隊以及叫號排隊的模式,實現(xiàn)了體檢人員的自動化管理。極大的提高了醫(yī)院各方面的效率,也減少了體檢人員的等待時間。
2 軟件開發(fā)時期
2.1 編碼和單元測試
除了設(shè)計錯誤外,編碼是唯一引入軟件缺陷的地方。編碼階段的質(zhì)量保證正是為了減少編寫代碼過程中引入的軟件缺陷。如果等到功能測試或者系統(tǒng)測試來捕獲并修復(fù)缺陷,那么軟件開發(fā)成本就會高得多[7]。一般認為單元測試應(yīng)緊接在編碼之后,當源程序編制完成并通過復(fù)審和編譯檢查,便可開始單元測試,進行動態(tài)的單元測試前先要對程序進行靜態(tài)分析和代碼審查,這樣會發(fā)現(xiàn)一些代碼的邏輯表達錯誤,且一旦發(fā)現(xiàn)錯誤,就會同時對錯誤的性質(zhì)和其位置定位,從而降低調(diào)試的代價[8]。這個階段額關(guān)鍵任務(wù)是寫出正確的容易維護的程序模塊。體檢排隊系統(tǒng)在寫代碼階段遇到了很多的問題,如:函數(shù)的一個變量問題,引發(fā)了整個系統(tǒng)的錯誤,“=”和“= =”的誤寫導(dǎo)致程序出現(xiàn)致命錯誤,類的定義出錯,引導(dǎo)程序向錯誤方向發(fā)展等等。經(jīng)過幾個月的艱苦努力,我們解決了上述問題,終于完成了程序的各個模塊,實現(xiàn)了程序的各個功能。當然在細節(jié)的處理問題上,還有些做的不當?shù)牡胤剑行栉覀冏屑毜臏y試和進一步完善。
2.2 綜合測試
這個階段的關(guān)鍵任務(wù)是通過各種類型的測試(及相應(yīng)的調(diào)試)使軟件達到預(yù)定的要求。最基本的測試是集成測試和驗收測試。對于軟件開發(fā)者而言,集成測試極為平常,有些工程甚至要求每天都要進行集成測試,以求盡早找出軟件缺陷。在集成層,軟件的整體安全屬性變得可見和可測試[9]。驗收測試是軟件產(chǎn)品交付客戶之前的最后一個階段,是在真實的測試環(huán)境中,利用基于惡意事件的安全檢測模板,測試在典型的滲透活動中可被識別的安全缺陷[9]。體檢排隊系統(tǒng)的測試經(jīng)歷的漫長的時間,在測試的過程中,我們用正式的文檔資料把測試計劃、詳細測試方案以及實際的測試結(jié)果保存下來,作為軟件配置的一個組成部分,以方便我們以后的維護工作。
3 軟件維護時期
軟件維護是軟件生命周期的最后一個階段,處于系統(tǒng)投入生產(chǎn)性運行以后的時期。所謂軟件維護,就是在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需求而進行修改軟件的過程[10]。胡俊敏[10]認為按性質(zhì)不同,一般將軟件維護劃分為如下4類:(1)糾錯性維護:用戶在使用軟件時仍會發(fā)現(xiàn)在前期的測試中沒有揭露的軟件系統(tǒng)中的潛在錯誤,診斷和改正這些錯誤的過程稱為糾錯性維護;(2)適應(yīng)性維護:由于操作系統(tǒng)或編譯系統(tǒng)的升級,為了使軟件能適應(yīng)新的環(huán)境而引起的程序修改活動;(3)完善性維護:在軟件的使用過程中,為了滿足用戶新的需求而增加或擴充軟件功能的活動;(4)預(yù)防性維護:為了提高軟件的可維護性和可靠性,為未來的進一步改進打下基礎(chǔ)而修改軟件的活動[10]。維護階段的關(guān)鍵任務(wù)是,通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。體檢排隊系統(tǒng)投入使用后,也遇到了很多的問題,如:“體檢預(yù)約號自動生成唯一性錯誤”,“體檢排隊分組出現(xiàn)問題”等等問題,我們進行了改正性維護,在維護的每一階段,我們都準確的記錄了每一項維護活動,作為正式的文檔資料,我們進行保存,方便以后的維護工作。
綜上所述,體檢排隊系統(tǒng)的開發(fā)花費了漫長的時間,經(jīng)歷了一個完整的軟件開發(fā)周期。期間遇到了很多的問題,我們在克服困難中積累了豐富的經(jīng)驗和教訓(xùn),為軟件的進一步完善提供了有利條件。經(jīng)過長時間的運行和維護,系統(tǒng)運行正常,推動了醫(yī)院工作效率的提高,減少了體檢人員的等待時間。
[參考文獻]
[1] 張海藩.軟件工程導(dǎo)論[M].第5版.清華大學(xué)出版社,2008:11-14.
[2] Zhuge Hai.A problem-oriented and rule-based component repository[J].The Joumal of Systems and Software,2000,50(3):201-208.
[3] 范紹坤,竇萬春.基于復(fù)雜問題定義模型的復(fù)雜問題求解[J].計算機應(yīng)用研究,2008,25(3):670-672.
[4] 荊澎.科技應(yīng)用項目中軟件需求分析探究[J].上海海關(guān)學(xué)院學(xué)報,2012,33(4):103.
[5] 王繼成,高珍.軟件需求分析的研究[J].計算機工程與設(shè)計,2002,23(8):18.
[6] 李亞.面向?qū)ο筌浖乓O(shè)計過程[J].福建電腦,2008,24(6):48.
[7] 程振林,方金云,唐志敏.基于C++的軟件編碼階段的質(zhì)量保證方法和工具[J].計算機工程與應(yīng)用,2005,41(16):105.
[8] 陳站華.軟件單元測試[J].無線電通信技術(shù),2003,29(5):51.
[9] 臧運港,梁燕來,李超建.軟件開發(fā)生命周期中的安全性測試[J].玉林師范學(xué)院學(xué)報,2008,29(5):142-143.
[10] 胡俊敏.如何做好軟件維護[J].廊坊師范學(xué)院學(xué)報,2009,9(2):48.
(收稿日期:2013-05-21)