成冬梅
?
基于設計模式與軟件工程的圖像文件管理系統(tǒng)研究
成冬梅
摘 要:為了解決當前圖像軟件系統(tǒng)的響應速度較低與內存消耗較大的不足,提出了基于軟件工程的圖像文件管理系統(tǒng)。首先,對軟件設計模式進行分析,確定以選單例模式完成系統(tǒng)開發(fā),確定基于面向對象的軟件結構。然后,對系統(tǒng)架構進行分析,結合實際需求進行開發(fā),確定軟件系統(tǒng)架構。最后,采用C++語言編程實現(xiàn)系統(tǒng),基于SqlServer實現(xiàn)數(shù)據(jù)庫管理,并利用TCP/IP協(xié)議實現(xiàn)軟件與外設通信,即完成從軟件工程的角度搭建功能復雜的軟件系統(tǒng)。實驗測試結果表明:與當前圖像文件管理系統(tǒng)相比,其管理系統(tǒng)具有更快的響應速度與更低的內存消耗。
關鍵詞:圖像文件管理;設計模式;軟件工程;單例模式;面向對象
近幾年來,隨著軟件技術的不斷提高,在諸多領域得到廣泛應用,如醫(yī)療、教育、軍事、天文、農業(yè)、工業(yè)等,隨著人們需求的不斷提高,也對軟件工程這個系統(tǒng)的實現(xiàn)提出了更高的要求[1-2]。比如在很多領域需要用到圖像文件存儲與管理系統(tǒng),完成對圖像文件數(shù)據(jù)的保存、查看、修改等管理。
為此,諸多學者對此進行了研究,將軟件工程技術運用于其中,并取得了一定成果,如龐春輝等人[3]提出基于安全模式的軟件安全設計,將系統(tǒng)安全性在軟件系統(tǒng)開發(fā)中得到體現(xiàn),達到了軟件安全的目的。田宏宇等人[4]提出面向服務的軟件架構及其在醫(yī)用超導系統(tǒng),將面向服務的技術運用于了軟件系統(tǒng),達到了軟件面向服務的目的。杜仲進等人[5]提出了基于B/S架構的CORS用戶管理系統(tǒng),將BS技術運用于軟件系統(tǒng),達到了開發(fā)出網(wǎng)頁版CORS系統(tǒng)的目的。王浩等人[6]提出基于DDS的軟件系統(tǒng),將DDS技術運用于軟件系統(tǒng),達到了軟件高并發(fā)相應性目的。
但是,將軟件工程技術系統(tǒng)的運用于圖像文件存儲與管理系統(tǒng)的研究較少,當前只停留在功能實現(xiàn)的層面,缺少面向系統(tǒng)的研究。盡管當前的軟件公司開發(fā)出自己的圖像文件存儲與管理系統(tǒng),系統(tǒng)能實現(xiàn)相應的功能,但主要從面向結構和實現(xiàn)單一功能的角度進行開發(fā),往往在系統(tǒng)效率方面存在很大的欠缺[7-8]。
對此,本文結合軟件工程技術,開發(fā)出基于軟件工程的圖像文件高效管理系統(tǒng)。
本文要實現(xiàn)圖像文件存儲與管理系統(tǒng)的主要功能有:1、通過攝像頭采集圖像,讀碼器讀取圖像ID號,本系統(tǒng)軟件獲取操作系統(tǒng)當前時間,以此作為圖像文件的命名依據(jù)。2、每次圖像采集時,創(chuàng)建對應的文件夾,實行對圖像文件的歸類保存。3、完成圖像文件的保存后,將圖像文件ID、保存時間、保存位置,以數(shù)據(jù)庫記錄的形式,通過SQL語句保存至本機數(shù)據(jù)庫和遠程服務器數(shù)據(jù)庫。4、最后將本地圖像文件的保存過程和結果在軟件界面上顯示。系統(tǒng)整體架構如圖1所示:
圖1 系統(tǒng)架構圖
本系統(tǒng)基于軟件工程技術實現(xiàn)以上功能,首先采用多線程技術并行實現(xiàn)各個功能,目的是既保證系統(tǒng)功能相互獨立實現(xiàn)而不相互沖突,又保證了系統(tǒng)資源的最優(yōu)配置。然后,采用單例模式實現(xiàn)系統(tǒng)。最后整個系統(tǒng)編碼,完全由面向對象技術實現(xiàn),既保證了系統(tǒng)的代碼復用性,又保證了系統(tǒng)的可維護性。另外其中還用到了關系型數(shù)據(jù)庫技術、TCP/IP協(xié)議來完成數(shù)據(jù)文檔保存功能。整個系統(tǒng)實現(xiàn)過程緊扣軟件工程思想,具體細節(jié)實現(xiàn)在后面詳細介紹。
在經(jīng)過了以上總體需求分析后,開始系統(tǒng)開發(fā)工作。本文系統(tǒng)實現(xiàn)的思想是,基于軟件工程的思想來對系統(tǒng)需求進行實現(xiàn),即把整個系統(tǒng)看做一個軟件工程來具體設計與開發(fā)[6]。系統(tǒng)功能分為圖像采集、圖像文件存儲、圖像數(shù)據(jù)存儲、文件夾創(chuàng)建、軟件界面顯示,本文將這5個功能分別用5個子線程實現(xiàn),即引入多線程技術。多線程是指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術,具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,進而提升整體處理性能[7]。多線程即將多個功能分別在多個子線程中實現(xiàn),相互之間獨立互不干擾,同步運行,當訪問資源發(fā)生沖突時,以優(yōu)先等級進行排隊,等級最高線程先使用資源,其他線程則可以進行其他工作,由此實現(xiàn)資源最優(yōu)配置,系統(tǒng)始終以最優(yōu)化方式運行,即不存在資源閑置。多線程具體運行結構如圖2所示:
圖2 多線程結構圖
在確定技術后,具體編碼方式采用面向對象,即先建立抽象類,類中包括屬性、方法,然后在工程中進行實例化對象、方法并使用。通過面向對象的方法,更利于用人理解的方式對復雜系統(tǒng)進行分析、設計與編程,同時,面向對象能有效提高編程的效率,通過封裝技術,消息機制可以像搭積木的一樣快速開發(fā)出一個全新的系統(tǒng)[8]。本系統(tǒng)的類是ImageSaveManage,圖像采集由函數(shù)ImageSaveManage.image -Acquire()實現(xiàn),圖像存儲由函數(shù)ImageSaveManage.image -Save()實現(xiàn),圖像數(shù)據(jù)存儲由函數(shù)ImageSaveManage.image -DataSave()實現(xiàn),文件夾查詢與創(chuàng)建由函數(shù)ImageSaveMan -age.directoryCreate()實現(xiàn)。所有函數(shù)基于面向對象概念實現(xiàn),支持代碼復用性,一次創(chuàng)建,多次實例化使用,因此節(jié)約了系統(tǒng)內存資源,同時增強了代碼的可擴展性。
部分關鍵代碼:
SYSTEMTIME st;
CString DateTime,imagePath; CString DateTxt;
GetLocalTime(&st);
DateTime.Format("%4d-%2d-%2d%2d-%2d-%2d",st.wYe ar,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
DateTxt.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st. wDay);
imagePath=folderPath+DateTxt; if(!PathIsDirectory(imagePath))
{CreateDirectory(imagePath,NULL);}
CString path;
path.Format(imagePath+"\Ic+%s%s.jpg",Panel_ID,DateT ime);
cvSaveImage( path, ipl1 ); cvReleaseImage(&ipl1);
int sss=Panel_ID.GetLength();
if(sss==10)
{CString pszFileName=DateTxt+".txt"; CStdioFile myFile;
CFileException
fileException;if(myFile.Open(pszFileName,CFile::typeText|CF ile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncat e),&fileException){
myFile.SeekToEnd();
myFile.WriteString(" ");
myFile.WriteString(Panel_ID); myFile.WriteString(""); myFile.SeekToEnd();
myFile.WriteString("OK"); myFile.WriteString(""); myFile.SeekToEnd();
myFile.WriteString(DateTime);
myFile.WriteString("");
myFile.Close();}}
從系統(tǒng)架構分析的角度可知,本系統(tǒng)只需進行一次對象實例化,即可滿足后續(xù)圖像采集、圖像存儲、圖像數(shù)據(jù)存儲、文件夾查詢與創(chuàng)建的功能,因此選用單例模式,這樣減少了不必要的對象實例化發(fā)生,提高了系統(tǒng)的效率。設計模式是一套被反復使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設計經(jīng)驗的總結,使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性[9]。單例模式是一種設計模式。
得到圖像數(shù)據(jù),如圖像ID、圖像文件名稱、存儲位置、存儲時間,需要進行數(shù)據(jù)電子履歷化保存,即數(shù)據(jù)庫保存。數(shù)據(jù)庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗余度的特點、是與應用程序彼此獨立的數(shù)據(jù)集合[10]。首先根據(jù)這樣的數(shù)據(jù)結構,先建立數(shù)據(jù)庫表,然后以記錄的形式實現(xiàn)要存儲的數(shù)據(jù)結構,建立記錄如表1所示:
表1 數(shù)據(jù)庫數(shù)據(jù)結構
然后通過網(wǎng)線和TCP/IP協(xié)議,把數(shù)據(jù)傳輸至服務器端數(shù)據(jù)庫。TCP負責發(fā)現(xiàn)傳輸?shù)膯栴},一有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡?,而IP是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設備規(guī)定一個地址[10]。
部分關鍵代碼:
CString webPath;
webPath="http://109.120.1.53:8088/pls/sdm/CLIENTOPE RATION.do?t_OperType=1&t_SubjectName=FTVision&t_Op erData=PANELID=";
webPath+=Panel_ID;
webPath+="|RESULT=";
webPath+="OK";
m_web.Navigate(webPath,NULL,NULL,NULL,NULL);
SYSTEMTIME st;
CString DateTime,DateTxt;
GetLocalTime(&st);
DateTime.Format("%4d-%2d-%2d %2d:%2d:%2d",st.wY ear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);Date Txt.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);
CString pszFileName=DateTxt+"ScannerError.txt";
CStdioFile myFile;
CFileException
fileException;if(myFile.Open(pszFileName,CFile::typeText|CF ile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncat e),&fileException){
myFile.SeekToEnd();
myFile.WriteString(" ");
myFile.WriteString(DateTime); myFile.Close();}
為了體現(xiàn)本文開發(fā)系統(tǒng)的優(yōu)勢,將文獻[9]視為對照組:采用面向對象、單一功能實現(xiàn)為原則的思路,不考慮軟件工程思想及其包含的技術進行開發(fā)。并基于VS2010平臺C++語言編程實現(xiàn),系統(tǒng)為Windows7系統(tǒng),如圖3所示:
圖3 本文圖像文件管理系統(tǒng)界面
圖3(a)為本開發(fā)系統(tǒng)軟件界面,包含圖像文件顯示、文件管理明細和操作狀態(tài)顯示。圖3(b)為本系統(tǒng)在后臺存儲的大量圖像文件。
以100幅圖像為基準,在存儲同樣數(shù)量圖像文件的情況下進行效率仿真,如圖4所示:
圖4 不同圖像管理系統(tǒng)的時耗測試
圖4顯示了不同圖像管理系統(tǒng)的相應速度。依圖可知,隨著圖像文件數(shù)量的增加,兩種管理系統(tǒng)的時耗逐步增加;但是本文圖像文件管理系統(tǒng)的效率始終高于對照自,且差距越來越大。原因是本文采用多線程合理最優(yōu)化使用資源,實現(xiàn)多個線程并發(fā)執(zhí)行,能夠在同一時間執(zhí)行多個線程,進而提升整體處理性能;而對照組采用單一功能逐個實現(xiàn),效率低下。
最后,在存儲同樣數(shù)量圖像文件的情況下,測試不同本文系統(tǒng)與對照組的內存消耗,如圖5所示:
圖5 內存對比圖
依圖可知,隨著圖像文件數(shù)量的增加,兩種系統(tǒng)的內存也逐步增加;但是本文文件管理系統(tǒng)的內存最低,顯著低于對照組,尤其是在文件數(shù)量巨大情況下,本文系統(tǒng)的優(yōu)勢更加明顯。原因是本文采用了面向對象與單例模式,既保證了代碼的復用性,又確保了對象實例化的唯一性,從而降低了系統(tǒng)的內存;而對照組采用面向對象,卻忽略考慮設計模式,反復生成對象,使其內存消耗較大。
為了解決傳統(tǒng)圖像文件存儲與管理系統(tǒng)效率低下和占用過多資源的問題,本文提出并實現(xiàn)了一個基于軟件工程與設計模式的圖像文件存儲與管理系統(tǒng)。在充分分析系統(tǒng)需求后,將現(xiàn)代軟件工程技術如多線程并發(fā)處理、設計模式概念、面向對象編碼運用于系統(tǒng)開發(fā)中。最后編程實現(xiàn),以系統(tǒng)消耗時間與內存為指標進行了仿真。結果表明本文系統(tǒng)擁有較高的效率與較低的內存消耗。并在未來的研究中將加入安全性方面的內容予以完善。
參考文獻
[1] Sónia Meco, Gon?alo Pardal, Alexander Eder. Software development for prediction of the weld bead in CMT and pulsed-MAG processes[J]. The International Journal of Advanced Manufacturing Technology, 2013, 64 (1): 171-178.
[2] 肖卓宇. 基于設計模式角色的附加關系檢測研究 優(yōu)先出[J]. 計算機應用研究,2015,28(16):123-127.
[3] 龐春輝. 基于安全模式的軟件安全設計研究[J]. 電子制作,2015, 26(14):81-85.
[4] 田宏宇. 面向服務的軟件架構及其在醫(yī)用超導系統(tǒng)中的應用[J]. 軟件導刊 ,2015, 13(17):96-99.
[5] 杜仲進. 基于B/S架構的CORS用戶管理系統(tǒng)設計與實現(xiàn)[J]. 地理空間信息,2015, 13(12):86-90.
[6] 王浩. 基于DDS的軟件系統(tǒng)架構設計[J]. 物探裝備,201573(2):371-376.
[7] Wang Bo, Jianyong Chen, Songsong Jia. Secret sharing scheme with dynamic size of shares for distributed storage system [J]. Security Comm. Networks, 2014, 7 (8):202-209.
[8] Alex J. Nelson, Erik Q. Steggall. Cooperative mode: Comparative storage metadata verification applied to the Xbox 360[J]. Digital Investigation, 2014, 11(S2): 46-56.
[9] Apostolos Ampatzoglou, Sofia Charalampidou, Ioannis Stamelos. Research state of the art on GoF design patterns: A mapping study[J]. The Journal of Systems & Software, 2013, 86 (7): 1945-1964
[10] Anca-Juliana Stoica, Kristiaan Pelckmans, William Rowe. System components of a general theory of software engineering[J]. Science of Computer Programming, 2014, 33(12): 1223-1229.
Research and Application on Image File Manage System Based on Design Pattern and Software Engineer
Cheng Dongmei
(College of Information Engineering, Shaanxi Polytechnic University, Xianyang 712000, China)
Abstract:In order to overcome the deficiency of low response speed and large memory consumption in the current image processing system, this paper puts forward the image file management system based on software engineering. First analyze the software design model and select the singleton pattern of development, and then confirm the object-oriented software structure. After that, analyze the system architecture and combines with the actual demand for development to determine the software system architecture. System is realized by using c + + language programming, and the database management is realized based on SqlServer. It also uses the TCP/IP protocol to realize communication between software and peripherals, namely completing scaffolding from the perspective of software engineering of complex software systems. The experiment results show that, compared with the current image file management system, the system proposed by this paper has faster response speed and lower memory consumption..
Key words:Image File Manage; Design Pattern; Soft Engineer; Singleton Pattern; Object Oriented
收稿日期:(2015.10.21)
作者簡介:成冬梅(1979-)漢,女,甘肅省隴南市人,碩士,陜西工業(yè)職業(yè)技術學院,信息工程系,講師,研究方向:計算機應用、計算機信息管理,咸陽,712000
基金項目:陜西省教育廳專項基金(11JK1030)
文章編號:1007-757X(2016)02-0029-03
中圖分類號:TP391
文獻標志碼:A