摘 要: 拉曼光譜技術在危險品檢測、海關/邊防查私、藥品鑒定、文物真?zhèn)舞b定、礦物勘探、石油成分鑒定等領域有廣泛應用,為了提高軟件產品研發(fā)效率和質量、降低工作量,研究并設計了一種拉曼檢測儀軟件產品線。首先進行核心資源開發(fā),在此基礎上再開發(fā)具體的軟件產品。通過對拉曼檢測儀軟件產品線的設計和應用,對軟件產品線領域具體化作了一次有益嘗試,為類似應用提供了可借鑒方案。
關鍵詞: 軟件產品線;領域分析;軟件重用;領域具體化;拉曼光譜技術
近年來,利用拉曼光譜具有物質“指紋”的特征,拉曼光譜技術在危險品檢測、海關/邊防查私、珠寶鑒定、食品安全、藥品鑒定、文物真?zhèn)舞b定、礦物勘探、石油成分鑒定等領域得到了廣泛的應用。經分析,雖然應用行業(yè)不同,但各行業(yè)軟件的公用成分和交叉成分所占比重很大,如果采用傳統(tǒng)方法開發(fā),不僅需要消耗巨大的人力、物力、財力、研發(fā)周期長,且相當一部分工作是重復勞動。針對這一情況,本文采用軟件產品線的模式開發(fā),以期取得理想的效果,因此拉曼檢測儀軟件產品線應運而生。
1 軟件產品線簡介
軟件產品線是目前為止最大程度的軟件復用,可以有效地降低成本、縮短產品面世時間、提高軟件質量。產品線的起源可以追溯到1976年PARNAS對程序族的研究[1]。軟件產品線的實踐早在20世紀80年代中期就已出現(xiàn)。據(jù)HP公司1996年對HP、IBM、NEC、AT&T等幾個大型公司分析研究,這些公司在采用了軟件產品線開發(fā)方法后,使產品的開發(fā)時間減少了30%~50%,維護成本降低了20%~50%,軟件質量提升了5~10倍,軟件重用達50%~80%,開發(fā)成本降低12%~15%[1]。
1.1 軟件產品線的概念
產品線是一個產品集合,每個新產品都可以由來自核心資源庫的可應用組件組成,通過預先設定的變化機制(如參數(shù)化)對這些組件進行必要的剪裁,添加可能需要的新組件,根據(jù)一個產品線范圍內的公共構架來組裝這些組件。因此軟件產品線主要由兩部分組成:核心資源和產品集合。其中核心資源包括產品線中產品共享的構架以及為貫穿產品線進行系統(tǒng)化重用所開發(fā)的軟件組件和其他相關配套資源。
1.2 軟件產品線的過程模型
軟件產品線典型的過程模型是SEI模型,它將產品線的基本活動分為3部分:核心資源開發(fā)(領域工程)、產品開發(fā)(應用工程)和管理。圖1顯示了這三大基本活動及其相互關系[2]。
三大基本活動交錯連接,可以任何次序發(fā)生,且高度重疊。旋轉的箭頭表示不但核心資源用來開發(fā)產品,而且已存在的核心資源的修訂甚至新的核心資源常常來自產品開發(fā)。核心資源開發(fā)和產品開發(fā)均需要技術和組織管理。
1.3 軟件產品線的領域具體化
經過多年發(fā)展,軟件產品線理論和工程的框架已比較完整,未來研究的主要任務包括:領域具體化、質量保證、模型驅動開發(fā)、進化、多條產品線、工具支持、過程改進和評估、經濟因素等。本文側重軟件產品線的領域具體化設計與應用,其主要任務是對于一個給定的應用領域(如本文的拉曼檢測儀),完成框架的具體化。具體化將產生一組用于特定領域建模的變化點、變量、變化依賴和約束的良好定義的類型。這樣的具體化將會增加模型的語義,其將是工具支持和有效解決變化的復雜性的重要基礎。例如,標準的抽象級別和映射概念的機制以及可變性從一個級別到另一個級別的一致性定義,都應該是領域具體化的結果[1]。
2 拉曼檢測儀軟件產品線的構建
構建拉曼檢測儀軟件產品線的首要任務是對拉曼產品領域進行領域分析、領域設計和領域實現(xiàn)。其中,領域分析利用現(xiàn)有系統(tǒng)的設計、架構和需求建立領域模型;領域設計是用領域模型確定領域/產品線的共性和可變性,為產品線設計架構;領域實現(xiàn)則基于領域架構開發(fā)領域可復用資源,例如構件、文檔和代碼生成器等。在此基礎上導出軟件產品線構架并實現(xiàn)其核心資源庫。
2.1 領域分析
拉曼效應是由科學家拉曼(RAMAN C V)和克里斯南(RISHNAN K S K)在1928年觀察液體中的散射現(xiàn)象時發(fā)現(xiàn)的。當頻率為ω0的單色光入射到無塵的透明氣體、液體或者光學上完全透明的固體時,對其散射頻譜分析表明:除了與入射光頻譜相同的散射光外,還有頻譜為ω′=ω0+Δω的新譜線,這些譜線組成拉曼光譜[3]。由于不同的分子對應不同的特征拉曼頻移,因此可以用拉曼光譜對物質進行識別。拉曼光譜技術具有無需取樣、無耗材,并且準確、無損、快速等特點。
經分析,雖然應用行業(yè)不同,但其檢測流程基本相同,典型的拉曼檢測系統(tǒng)如圖2 所示。具體流程是:(1)拉曼檢測系統(tǒng)發(fā)出測量指令,驅動激光器出光;(2)應用光譜儀采集本底、原始光譜數(shù)據(jù),計算出被測物拉曼光譜;(3)對被測物拉曼光譜去噪、平滑處理,調用算法識別接口,進行物質識別,保存物質和原始譜圖數(shù)據(jù);(4)根據(jù)顯示策略進行顯示處理;(5)顯示結果,包括檢測結果、檢測次數(shù)、危險品次數(shù)和譜圖,還可以通過蜂鳴器、LED燈、警示界面、警示文字提示用戶。
此外,為了提高設備物質識別能力,提供了用戶補充譜圖功能,方便用戶在使用過程中不斷補充新的物質譜圖;為方便用戶使用設備,提供了歷史數(shù)據(jù)管理、譜圖庫管理、系統(tǒng)管理、用戶切換等功能對設備進行管理和維護。
2.2 領域設計
根據(jù)拉曼產品領域分析所得的領域共性和特性,將軟件架構劃分為UI交互層、領域層、數(shù)據(jù)管理層和系統(tǒng)交互層,如圖3所示。
?。?)UI交互層,負責封裝與用戶的雙向交互、屏蔽具體交互方式。UI交互層又包括子系統(tǒng)UI和主控UI。其中,子系統(tǒng)UI包括設備自檢、用戶登錄、數(shù)據(jù)導出、歷史數(shù)據(jù)管理、譜圖庫管理、系統(tǒng)管理等基本功能;主控UI包括測量、顯示結果、詳情、切換用戶和高級管理等功能,為適應不同的行業(yè)和用戶,主控UI給出不同的應用控制界面。
?。?)領域層,負責問題領域或業(yè)務領域的抽象、領域功能的實現(xiàn)。包括數(shù)據(jù)采集、預處理、算法識別、顯示策略、保存結果等功能。
(3)數(shù)據(jù)管理層,負責封裝各種持久化數(shù)據(jù)的具體管理方式。
(4)系統(tǒng)交互層,負責封裝硬件的具體交互方式以及封裝外部系統(tǒng)的交互。
在上述功能資源中,領域層、數(shù)據(jù)管理層和系統(tǒng)交互層將直接共享使用;UI交互層部分共享使用,大部分將重新設計。軟件構架主要可變點包括以下幾點:
(1)數(shù)據(jù)采集、識別算法、顯示策略,根據(jù)具體應用的不同,調用不同的算法。
?。?)譜圖庫,根據(jù)不同的行業(yè),配置不同的譜圖庫。
?。?)主控UI界面,根據(jù)特定行業(yè)使用習慣重新設計。
?。?)子系統(tǒng)UI,根據(jù)特定行業(yè)UI風格,進行局部調整。
2.3 領域實現(xiàn)
由于運行平臺為WinCE,為了得到一個開放的、通用的拉曼系列產品,本設計基于.NET Framework平臺,使用VC和C#語言開發(fā)。其中識別算法、網(wǎng)絡、驅動、硬件控制等核心和底層功能采用VC實現(xiàn);界面UI、顯示、設備管理、系統(tǒng)管理等功能使用C#實現(xiàn)。為方便數(shù)據(jù)維護和配置,系統(tǒng)配置和譜圖庫采用XML實現(xiàn)。
在軟件實現(xiàn)過程中,綜合考慮實際應用、模塊相對獨立、操作簡便等原則,采用面向對象技術、接口技術、設計模式、XML配置文件等實現(xiàn)。拉曼檢測儀軟件產品線部分核心資源如表1所示。
3 拉曼檢測儀軟件產品線的應用
應用工程在領域工程成果的基礎上構造新產品。應用工程需要根據(jù)每個應用獨特的需求,經過需求分析、系統(tǒng)設計和系統(tǒng)實現(xiàn),生成新產品。下面以拉曼珠寶檢測系統(tǒng)為例,說明應用工程的過程。
3.1 需求分析
拉曼珠寶檢測儀將建成更加完備的珠寶玉石譜圖庫及行業(yè)知識庫,設計制造出更加符合專業(yè)用戶操作習慣的檢測平臺并力爭在業(yè)界難點問題(如翡翠A、B貨,象牙等的檢測)上實現(xiàn)技術突破、獲取差異化競爭優(yōu)勢,為產品的市場推廣打下堅實基礎。
一般拉曼檢測儀的普通用戶只關心檢測結果是什么,不關心拉曼譜圖,也不關心更多的技術細節(jié);而拉曼珠寶檢測儀的用戶是專業(yè)的用戶,與普通用戶不同,不僅關心檢測結果,還關心譜圖、相關度,經常自行添加譜圖,導出數(shù)據(jù)、生成檢測報告等,還要根據(jù)檢測樣品的情況采取快檢和精檢模式。將這些拉曼珠寶檢測儀個性化,特有的系統(tǒng)需求與領域需求比較,即可劃分成領域公共需求和獨特需求兩部分,得出了拉曼珠寶檢測儀系統(tǒng)需求規(guī)格說明書。
3.2 系統(tǒng)設計
系統(tǒng)設計主要是在領域架構基礎上,結合系統(tǒng)獨特需求,設計應用的軟件架構。根據(jù)需求分析,軟件架構需要作以下調整:
?。?)重新和調整設計
?、僦骺亟缑妫涸摻缑嫣峁y量、導出、生成報告、數(shù)據(jù)分析、添加到譜圖庫、切換用戶和高級等功能;顯示檢測結果,包括物質譜圖、物質名稱、相似度、物質屬性、檢測次數(shù)、檢到珠寶次數(shù);還包括時間、聲音、電池電量等輔助功能元素。
?、谧V圖庫管理:由多庫顯示管理調整為只有珠寶玉石譜圖庫管理功能,顯示元素、位置都作了調整,界面更簡潔。
③添加譜圖庫:由多庫添加譜圖庫調整為只有珠寶玉石譜圖庫添加功能,顯示元素、位置都作了調整,界面更簡潔。
?、芨呒壗缑妫涸诠δ芊旨壷?,由于海洛因檢測、選擇譜圖庫等功能模塊在本系統(tǒng)中去掉,對功能按鈕位置和個數(shù)作了相應調整。
(2)新增功能
?、偃斯Ρ确治觯禾峁┤斯Ρ人凶V圖的功能,可以選擇譜圖庫中任意譜圖與檢測的樣品進行對比,同時對比的譜圖可以導出。
?、诳鞕z和精檢模式:針對不同的應用場合,提供快檢和精檢模式。其中,快檢應用于一般工作場合;精檢用于建庫或特定樣品細微差別鑒定場合。
3.3 系統(tǒng)實現(xiàn)
系統(tǒng)實現(xiàn)的主要工作是遵照應用架構,用領域可復用資源實現(xiàn)領域公共需求,用定制開發(fā)的構件滿足系統(tǒng)獨特需求,構建新的系統(tǒng)。根據(jù)前述需求分析和系統(tǒng)設計,本文重新設計主控界面、添加譜圖庫等功能模塊;增加人工分析、兩種檢測模式等功能;調整高級、譜圖庫管理、系統(tǒng)管理等界面;直接使用系統(tǒng)自檢、歷史數(shù)據(jù)、導出、生成報告、數(shù)據(jù)分析、切換用戶、修改密碼、用戶管理、器件測試等功能。最后進行集成、測試,形成拉曼珠寶檢測系統(tǒng),其主界面如圖4所示。
由于采用了軟件產品線的開發(fā)模式,這個原來預計需要研發(fā)半年的系統(tǒng)只花了2個月的時間就完成了。開發(fā)效率、軟件質量得到顯著提高,工作量明顯減少。
在拉曼檢測儀軟件產品線的設計和應用過程中,采用演化方式,將現(xiàn)有產品演化為產品線。這種方法的優(yōu)點是通過對投資回報周期的分解、對現(xiàn)有系統(tǒng)演化的維持,使產品線方法的實施風險降到了最小。采用軟件產品線開發(fā)的拉曼檢測儀,可以根據(jù)各個應用領域實際需要而以極少的人力、時間、工作量等來研發(fā)出具體產品,由于軟件產品的主要成分是高可靠性、性能經過驗證的可復用構件,因此軟件產品的質量也大大提高。采用軟件產品線的模式已經研制了拉曼安檢系統(tǒng)、拉曼珠寶檢測系統(tǒng)、拉曼監(jiān)管物項識別系統(tǒng)等一批拉曼產品,大大推進了企業(yè)產品化的效率。軟件產品線的建立需要企業(yè)有意識地、長期地努力才有可能成功,要有一個構建產品的好的核心資源庫、好的產品架構以及好的管理(包括軟件資源、人員組織和過程等)支持。拉曼檢測儀軟件產品線的下一步工作是加強現(xiàn)有成果的深度和廣度。
參考文獻
[1] POHL K,BCKLE G.Frank van der linder.軟件產品線工程[M].張佳驥,譯.北京:國防工業(yè)出版社,2010.
[2] 姚建銓.奇異的光—激光[M].北京:清華大學出版社,2000.
[3] 張友生,王勇.系統(tǒng)分析師技術指南[M].北京:清華大學出版社,2009.