「應用軟體設計」不只軟體公司需要,許多企業或機關隨著業務量增加或環境的改變,也需要相關部門設計應用軟體供內部使用。擔任程式設計師除了有一定的門檻外,還須面對日新月異的技術及不同產業各異的Know How,若能妥善運用範例,節省開會討論及教育新人的時間,實為各軟體部門主管的心願。
程式語言的發展史大致可分成機械語言(Machine Language)、組合語言(Assembly Language)、高階語言(High Level Language)、第四代語言(Forth Generation Language,4GL)、第五代語言等幾個發展階段。
機械語言為最早期的電腦語言,用0與1組合而成,直接被電腦所執行,不須翻譯。組合語言則是一種符號化的程式語言,可讀性比機械語言高,須利用組譯程式(Assembler)來轉換成對應的機械語言,才能被電腦執行。
而高階語言以人類易學、易寫的文字或符號來表達的程式語言,但利用它所設計的程式,不能由電腦直接執行,必須經過一種翻譯程式轉換成機械語言才能執行。
高階語言又包含COBOL、BASIC、PROLOG、LISP、PASCAL、C、JAVA等幾種程式語言。COBOL可處理多種不同模式的檔案,適用於商用資料處理。而BASIC有編譯式和直譯式兩種,語法簡單易學,適合於初學者。PROLOG、LISP則是人工智慧上常用的語言。
至於PASCAL,則是為了紀念法國數學家Blaise Pascal而命名,是最具結構化語言。而在其他語言方面,C語言兼具了高階語言方便、低階語言效率,可攜性高、富有彈性,適用在系統程式撰寫上。JAVA的程式架構則像C++,但是它拿掉了最困難的指標部分,能發揮網路和多媒體的支援。
|
▲程式碼範例1。 |
一般所謂的第四代語言(4GL),是指不須要專門技術即可使用的套裝軟體,通常以句子或圖像(Icon)選擇所要的功能。
至於第五代語言,又稱為自然語言(Natural Language),其特性是提供使用者以一般的英文語句直接和電腦進行對話,向電腦發出問題,而不必考慮程式語法,使用起來更人性化、更方便。
|
▲程式碼範例2 |
這裡所謂的「新手」,指的不只是程式設計的新手,也泛指對此語法不熟悉,或首次接觸此應用的軟體相關產業者。
當「範例」只是一堆的檔案放在同一個資料夾時,在一堆的程式碼(Code)中查找應用,實為一大困難。
一段一段的程式碼,若以人工複製、貼上並加以分類、整理,再上傳至KM系統,也許是一個可行的範例管理方式。
但若有一套系統可以將程式碼原封不動儲存,並自動分類提供多個關鍵字搜尋結果,對於軟體設計部門主管來說將是一大利多。
製作「程式碼」範例搜尋系統
此範例為「案例查詢系統」,利用Splunk「毋須事先規劃欄位型態、定義資料長度」的特性,接收不同來源的程式碼以作為查詢應用。
接收消化各種資訊
只要是Text File,不論是網路設備、作業系統應用系統,或是資料庫吐出的訊息,Splunk都可以加以消化。由於Splunk核心是一個搜尋引擎,當這些訊息一旦被接收,Splunk便可立即進行索引與分析的工作。
|
▲接收、分類、呈現一次完成。 |
範例主要數據來源為一堆長度不一致的程式碼,雖然每天收到的資訊可能會不一致,但不影響Splunk的接收及索引效率。
|
▲程式碼範例3。 |
程式碼的搜尋與呈現
搜尋及呈現皆在Splunk執行。Splunk在分類資料時,可以運用「正則表達式」來作為分類的依據。誠如範例所示,在不同的檔案中,皆有「search=」或「search =」,因此,在「正則表達式」當中就做「^search\s*=\s*」。
其他如Fuction、main、public class、Interface、extends等,多數的程式設計師會於程式碼中加入註解,註解內容也可以是搜尋的關鍵字。可以同時下多個關鍵字搜尋,呈現的資料也會愈來愈精準。
|
▲多重條件搜尋結果。 |
|
▲下方可看到完整內容。 |
當然,不同的檔案也可以在同一頁呈現。只要用不同的
把它們包起來就好。
結語
美國某家軟體設計公司就是運用Splunk來當作「程式碼」範例的搜尋系統,提供總公司以及遍布世界各地的分公司工程師來作為案例查詢的依據。
而軟體部門主管和多數的資深工程師回答程式碼相關問題的時間,也較去年同期減少了80%,相對地提升了工作效率和產值。也許大家已經採用Splunk來做硬體主機或資安的監控,但程式碼的分享,試過了嗎?
(本文作者為精誠資訊協銷代理事業部技術顧問,專長在醫療應用系統研發)
其他相關網站
Splunk中文版網站:
http://zh-hant.splunk.com/
免費下載試用:
http://zh-hant.splunk.com/download?r=header
更多的成功案例:
http://www.splunk.com/view/SP-CAAABB2
更多解決方案:
http://www.splunk.com/solutions
各領域專家的知識寶庫:
http://www.splunk.com/?s
軟體開發者專區:
http://www.splunk.com/base/Community