尹 杰
(遼寧省勞動經濟學校 遼寧 沈陽 110045)
計算機行業(yè)之所以能夠在現(xiàn)代社會得到飛速、全面發(fā)展,除了先進技術、性能的推動作用外,還與計算機程序設計語言有直接關系。一般計算機編程語言有多種,按照應用的先后順序與不同階段,依次是“機器語言—匯編語言—高級語言”。在研發(fā)計算機階段中,采用實際二進制,即機器語言,計算機可直接對其進行讀取,但會面臨代碼過長的問題,缺少記憶點。在機器語言基礎上,后期提出了匯編語言,將原本二進制代碼替換為符號,增加了計算機應用軟件編程環(huán)節(jié)的便捷性。但發(fā)展至今,計算機編程更多是以高級語言為主,屬于一種與人類語言最為相近的編程語言,在開發(fā)計算機應用軟件中應用可以提高效率,降低難度?;谀壳败浖_發(fā)的經驗,編程語言還需要與自動化開發(fā)技術組合應用,以自動化形式開發(fā)、組建業(yè)務,使編程語言的效果達到最佳,也可以進一步提升軟件開發(fā)質量。為此,本文圍繞計算機應用軟件開發(fā)中自動化開發(fā)技術的應用展開分析,介紹不同技術的應用要點,旨在提高計算機應用軟件性能。
計算機應用軟件開發(fā)向自動化方向轉型,核心要義是“全自動化”,即開發(fā)全過程的自動化,直至已經生成業(yè)務組件[1]。事實上目前計算機應用軟件的開發(fā)、應用中,已經實現(xiàn)了組裝自動化,開發(fā)的所有業(yè)務組件,無論是生成還是重新應用,均在計算機中取得了明顯的效果。應用軟件業(yè)務組件在自動化技術的輔助下,還解決了質量、兼容、集成性等多領域的“疑難雜癥”,使業(yè)務組件、業(yè)務組建與安裝等,均實現(xiàn)了一體化的創(chuàng)新。
自動化技術與計算機應用軟件開發(fā)融合,設計自動化系統(tǒng),在開發(fā)過程中可以顯著提高效率、優(yōu)化軟件開發(fā)效果[2]。站在用戶角度,在實際操作軟件中,無論是軟件升級還是運維,都在自動化技術幫助下得到了保障。
代碼生成技術基于已有模板與既定規(guī)則,可以自動生成軟件開發(fā)的代碼。此技術比較常用于重復型軟件的開發(fā),具體包括表單、報表和數(shù)據(jù)處理。此外,通過代碼生成技術,還可以自動生成框架代碼或者是接口代碼。工作人員除了比較基礎的手寫代碼外,還可以選擇文本替換、模板引擎的形式形成代碼。模板引擎在代碼生成中比較常見,具體使用的工具有Freemarker 和JET。下面分別介紹幾種代碼生成技術的應用要點。
2.1.1 代碼模板技術
代碼模板技術在開發(fā)計算機應用軟件中,主要是采取預定義代碼模板,自動生成代碼。一般已有的代碼模板中包含大量信息,是由程序結構、變量聲明、函數(shù)定義等組成的,軟件的開發(fā)人員僅需填寫代碼邏輯,便可以完成代碼的生成。選擇代碼模板工具時,主要有Eclipse JDT 和IntelliJ IDEA[3]。
2.1.2 領域特定語言技術
所謂領域特定語言,是以特定領域開發(fā)的編程語言,采用的是定義領域中指定語法以及語義獲得程序設計權。通過此技術將領域知識、代碼生成組合,此時開發(fā)人員按照領域中指定的語法,便可以快速編寫程序邏輯,再利用領域中指定的語言編譯器,可以自動生成實際需要的代碼。一般在軟件開發(fā)中,比較常用Xtext 和JetBrainsMPS相關工具。
2.1.3 反射技術
計算機應用軟件開發(fā)中應用的反射技術,本身屬于運行狀態(tài)下的動態(tài)生成代碼的手段,當程序處于運行狀態(tài)時,可以按照程序所需動態(tài),自動生成代碼[4]。此技術通過Java 所包含的反射機制,便可實現(xiàn)運行過程中利用不同信息,如方法信息和變量信息完成代碼的生成,例如可以采用Java 反射應用程序接口(application programming interface, API)的手段。
2.1.4 元編程技術
元編程技術通過程序可以繼續(xù)生成程序,利用編寫元程序的方法,可以獲得實際需要的代碼。應用此技術期間,編譯或者試運行過程中可以直接生成代碼。注意在編譯狀態(tài)所生成代碼,往往代碼性能與穩(wěn)定性更強。運行中生成代碼則更具靈活性。例如選擇元編程技術時,可以應用C++模板元編程或者是Python 元編程工具。
數(shù)據(jù)挖掘包含了統(tǒng)計學、數(shù)據(jù)庫和機器學習等技術,現(xiàn)代社會中數(shù)據(jù)庫技術水平不斷提升,儲存數(shù)據(jù)的途徑越來越多,但數(shù)據(jù)量積累增多,也會帶來一些問題。以企業(yè)為例,既往的數(shù)據(jù)查詢與統(tǒng)計形式往往相對簡單,但很難滿足現(xiàn)代社會中的商業(yè)需求,需要在數(shù)據(jù)量激增,且相對繁瑣的數(shù)據(jù)當中,以最快的速度提煉出價值高的信息。在此背景下為機器學習技術創(chuàng)建了適合的提升環(huán)境,數(shù)據(jù)庫存儲與計算機算法分析兩項技術也得到融合,并且開始關注到數(shù)據(jù)的隱藏內容,隨之提出了數(shù)據(jù)庫知識發(fā)現(xiàn)(knowledge discovery in database, KDD)的概念。關于此概念的實現(xiàn)過程,流程共分為7 步:①數(shù)據(jù)清理;②數(shù)據(jù)集成;③數(shù)據(jù)選擇;④數(shù)據(jù)轉換;⑤數(shù)據(jù)挖掘;⑥模式評估;⑦知識展示?;谝陨? 個環(huán)節(jié)可知,數(shù)據(jù)挖掘在KDD 是相對重要的一部分,梳理KDD 和數(shù)據(jù)挖掘之間的聯(lián)系,見圖1。
圖1 KDD 和數(shù)據(jù)挖掘聯(lián)系
計算機應用軟件的開發(fā)中應用數(shù)據(jù)挖掘,劃分任務包括以下幾個方面:①分類;②預測;③關聯(lián)分析;④聚類分析;⑤回歸;⑥智能推薦以及其他。無論是企業(yè)還是政府,需要按照業(yè)務的具體內容,采用數(shù)據(jù)挖掘技術,在現(xiàn)有數(shù)據(jù)當中做出提取,提煉出價值高的信息,數(shù)據(jù)挖掘任務如圖2 所示。
圖2 數(shù)據(jù)挖掘任務
開發(fā)軟件中應用數(shù)據(jù)挖掘技術,主要可以分為5 種方法:一是分類和預測,二是聚類,三是關聯(lián)規(guī)則,四是時序模式,五是離群點監(jiān)測。①分類與預測方法。此方法需按照先后順序,基于已知類別數(shù)據(jù)集,由技術人員完成建模,此模型負責劃分樣本類別、監(jiān)督學習的作用,在模型構建中準確率也比較高[5]。預測則是通過現(xiàn)有的數(shù)據(jù)集訓練模型,發(fā)揮構建模型的作用,對未知樣本數(shù)據(jù)表現(xiàn)做出預測,以此了解2 個或超過2 個變量的關系,構建互相依賴模型。此算法常見的技術有回歸分析技術、人工神經網絡技術以及決策樹技術等。②聚類方法。此方法將所有相似對象依次劃分至對應小組與集合,保證小組或集群具有較高的相似度,而且各組與各集群之間還要體現(xiàn)明顯差異。一般可采用k 均值聚類(k-means)算法和k-中心點算法等。③關聯(lián)規(guī)則分析。此方法也被稱為購物籃分析,對2 個或超過2 個變量所具有的相關性進行分析,還可了解變量之間的相關性強度,有Apriori 算法和TP-Tree 算法等。④時序模式。此方法的作用是對時間或者序列潛在規(guī)律進行分析,了解發(fā)展趨勢,根據(jù)已知值預測未知值。但需注意,樣本數(shù)據(jù)更多是根據(jù)時間發(fā)生改變。主要有平滑法和趨勢擬合法等。⑤離群點監(jiān)測。此方法在軟件開發(fā)中,可以發(fā)現(xiàn)與數(shù)據(jù)集包含的其余數(shù)據(jù)對象的顯著區(qū)別,例如統(tǒng)計、鄰近度、密度、聚類等基礎上的離群點檢測。
應用數(shù)據(jù)挖掘技術構建數(shù)據(jù)挖掘模型,包括流程如下:①設定挖掘目標;②采集數(shù)據(jù);③數(shù)據(jù)分析與預處理;④建模;⑤模型評估;⑥分析模型結果。
為了更加全面地了解計算機應用軟件自動化開發(fā)技術的應用效果,下面以數(shù)據(jù)管理軟件為例展開分析。此軟件主要是為了減少數(shù)據(jù)收集工作量、提高管理質效而設計。現(xiàn)總結軟件設計需求如下:
(1)業(yè)務描述。軟件系統(tǒng)角色分為普通用戶與管理員,普通用戶主要是注冊登錄、儲存?zhèn)€人信息等,管理員包括登錄、用戶管理等。業(yè)務問題概述則需要從用戶和管理員兩個角度做出分析,前者包括注冊、登錄等業(yè)務,后者包括新增認知量表和用戶管理兩項業(yè)務。
(2)業(yè)務流程。具體包括流程有用戶注冊業(yè)務分析、用戶登錄業(yè)務分析、新增被試者基本資料業(yè)務分析、認知量表評估業(yè)務、認知數(shù)據(jù)管理業(yè)務。
3.2.1 功能包圖
此次開發(fā)數(shù)據(jù)管理軟件,整體功能包圖見圖3。
圖3 軟件功能包圖
3.2.2 數(shù)據(jù)庫與軟件實現(xiàn)
此次開發(fā)數(shù)據(jù)管理軟件,數(shù)據(jù)庫包括數(shù)據(jù)庫表(被試者表、報告表答卷表、量表答卷表、量表、評定卷等)、表間關系分析。軟件開發(fā)環(huán)節(jié)需要應用多個工具,如Java 開發(fā)工具,具體選擇的是IntelliJ IDEA,該工具主要用于代碼編輯,功能是優(yōu)化編程過程,提高軟件開發(fā)效率。數(shù)據(jù)儲存方面,選擇的是MySQL 關系型數(shù)據(jù)庫管理系統(tǒng)。整理軟件開發(fā)環(huán)境見表1。
表1 軟件開發(fā)環(huán)境
3.2.3 軟件測試
當軟件開發(fā)結束,技術人員需要組織測試。安排功能性測試時,要求采用設計測試用例。技術人員輸入錯誤密碼,觀察軟件當下的提示,或者是評估量表環(huán)節(jié),技術人員填入信息儲存失敗,此時軟件會給出提示。當所有測試用例結束,選擇在云服務器上部署項目,同時完成軟件維護。
另外,面向軟件的使用對象即用戶組織測試,用戶表示軟件的使用感較好,可以使用量表在線測試、管理評估數(shù)據(jù)。實際上在軟件使用中,也會隨之采集用戶的反饋信息,定期更新系統(tǒng)。
3.3.1 自動化開發(fā)技術
此次數(shù)據(jù)管理軟件開發(fā)階段的建模,主要選擇kmeans 算法,迭代求解聚類分析,應用步驟如下:①確定k值;②在數(shù)據(jù)集內,以隨機的方式選取k個數(shù)據(jù)點,將此作為質心;③計算數(shù)據(jù)集內各點和質心間距,完成類別劃分;④若計算得出的新質心和原質心間距,已經超出任意設定閾值,需要迭代②~④步驟;⑤若新質心和原質心間距,對比任意設定閾值較小,即可判定為聚類結束,算法也可在此時終止;⑥輸出結果。
3.3.2 聚類分析
此次采用k-means 算法,即在數(shù)據(jù)集內部,對已經給出的k個簇聚類算法做出分析,按照業(yè)務需求與經驗,由技術人員人為設定或選擇方法,獲得k值。期間還需進行計算,得出最優(yōu)k值。具體可以選擇的計算方法包括誤差平方和、輪廓系數(shù)法等。
此次軟件設計中應用誤差平方和,技術人員在確定了各個k值后,再計算各簇內部的點與此聚類中心點距離之間的誤差平方和。一般理論層面表示,計算得出的數(shù)值小,證明聚類結果好,且計算得出結果趨向于最小值。盡管增加簇數(shù)量能夠達到減小數(shù)值的效果,但是卻與聚類算法的應用初衷不符。輪廓系數(shù)法在應用中,技術人員確定i點,并對向量i和i所處簇內部其他點的間距進行計算,此為a(i);再計算向量i至其他簇之間的點平均距離,此為b(i)。計算公式為:
式(1)中,S(i)為輪廓系數(shù)。根據(jù)公式(1),輪廓系數(shù)范圍是[-1,1],全部點輪廓系數(shù)計算平均數(shù),為此次計算聚類結果輪廓系數(shù),最終系數(shù)與1 越接近,代表聚類效果越好,且最終能夠判定的是,此次開發(fā)數(shù)據(jù)管理軟件的功能、性能等良好,滿足使用需求。通過k-means 算法構建模型,并展開聚類分析,認識到軟件各項功能的優(yōu)劣勢。以此為根據(jù)提出軟件功能優(yōu)化的措施。
此次數(shù)據(jù)管理應用軟件的上述所有開發(fā)設計流程結束后,技術人員可以采用自動化技術,安裝軟件到計算機系統(tǒng)中,技術人員需要對安裝過程進行監(jiān)督,以便安裝過程出現(xiàn)問題可以馬上處理。軟件在計算機系統(tǒng)中安裝,轉換格式也至關重要,檢查軟件符合計算機系統(tǒng)要求的類型,可以最大程度體現(xiàn)出應用軟件基本功能。一般計算機系統(tǒng)內部會安裝防火墻,那么在軟件安裝中,技術人員應提前設置,要求軟件可以自動取得在系統(tǒng)中的運行權限,保證軟件的正確安裝與應用。
計算機應用軟件作為支持計算機系統(tǒng)運行的關鍵之一,憑借多元化應用軟件的功能,可以滿足用戶的操作需求。但是在計算機應用軟件的開發(fā)中,要想滿足逐漸多元化的使用與功能需求,技術人員需要應用自動化開發(fā)技術。通過本文對于自動化開發(fā)技術的介紹,一方面可以全面實現(xiàn)計算機應用軟件開發(fā)過程的自動化轉型,另一方面也能夠提高軟件開發(fā)的效率。立足于整體層面,自動化開發(fā)技術的應用為今后計算機應用軟件的研發(fā)、設計夯實了技術基礎,并且也能夠進一步實現(xiàn)軟件功能、性能等方面的不斷改進。