網誌的配色代表著寬容、和平、希望、溫柔、純真、俏皮、逗趣最後則是行動力,而這就代表著我心目中的我…

日常生活使用資訊處理的操作,學校學習資訊工程的技術,工作應用資訊管理的整合,未來研究資訊安全的領域

切換模式閱讀  

2011年9月2日星期五

開發程式很簡單嗎?

最近一週除了日常的實習工作之外,更在撰寫一個小工具 (公司) 和一個概念系統 (學校),雖然很忙,但從中學習整理思路,使我很開心!

Building & Creating the Code Royalty Free Stock Photo
檔案稽核小工具

主要是幫銀行所撰寫小工具,需求很簡單,就是一句話,判斷檔案是否沒被修改的稽核小工具。想法很簡單就透過 DIR 的方式進行檔名、日期和大小的比對,即可初步得知檔案是否完整。但就能保證檔案沒被修改嗎?沒辦法百分之百,因為不論是檔名、日期還是大小,都能被修改,重點在於檔案內容是否有問題,可是若朝這方面去思考,範圍太廣了,實作不容易,因此將範圍縮小至普遍能接受的概念進行實作,也就是當檔案被修改,則日期或大小一定會改變,和判斷是否有檔案被新增了。再來可能會有許多端點電腦的檔案要被稽核,因此需要有一台電腦進行集中控管,也就是伺服器,而許多端點電腦就是客戶端,實作 Client / Server 的通訊架構很容易,但問題在於要如何彈性的設定伺服器和客戶端的名稱呢?小工具還要有彈性,因此就會有設定檔的產生,一般會使用 XML 格式的檔案。另一個問題則是伺服器要如何判斷客戶端所傳的資訊代表的意義是什麼?此時我就會使用 JSON 格式的資料進行傳輸,再透過網路上解析 JSON 格式的函數庫進行,即可取出所需要的資訊,可是再來的問題則是特殊符號和中文,該怎麼辦呢?那就用編碼的方式解決,如URL編碼或Base64編碼等,簡單來說,當進行傳送資料時,正確的進行解讀,則必須要懂格式和編碼,更進一步則是通訊協定。最後還需要輸出使用者所需求的畫面結果,這就必須要會設計畫面以及檔案處理,要考慮到使用者的操作是否簡單,畫面是否符合需求及舒服,更重要的是是否能產生使用者所需要的相關報表檔案,解決所面臨的問題,如此小工具就完成了嗎?還差的遠呢,要開發程式很簡單,以上的小工具可能不到幾小時就解決了,但困難的在於要在適當的環境進行測試,要確保穩定執行,要撰寫相關的文件方便日後的維護,最好還能進行程式碼重構等事項,比開發程式更困難,,花的時間相對多出數倍以上,但卻也是開發程式最有價值的部份。

晶卡片驗證概念系統

主要是政府專案計劃的系統,目的在於進行晶片卡與伺服器進行相關的安全驗證,按照通訊協定的文件進行開發,主要相以 RESTful 搭配 JSON 提供相關資訊的服務進行驗證的流程,前端應用程式與晶片卡互動,後端伺服器則與資料庫溝通,此外整個流程除了雜湊值比對之外,還包括金鑰加解密,因此要確保晶片卡 J2ME 產生的雜湊值或加解密資訊與伺服器 J2SE 產生的雜湊值或加解密資訊能進行互通,因此開發單獨的程式很簡單,但要進行整合則會遇到許多的困難。此外善用開發工具是非常重要的一件事,像 WebMatrix 可以很快速的實作伺服器的服務功能並與資料庫進行溝通,雖然 WebMatrix 資源目前很少,但最近微軟有舉辦 WebMatrix 修練大會 點部落中則有越來越多實用的資源。快速實作是件好事,但太簡短的程式之後維護會有問題,因此還必須先定義良好的 API 應用程式界面,簡單來說就是函數方法,描述其功能和參數,再進行程式撰寫,方便日後的交接者進行維護,更重要的是當 API 定義清楚後,才能更有效的進行分工,更重要的是未來還可撰寫成函式庫,讓別人更方便的開發程式因此快速開發程式很簡單,但要定義良好的 API 則需要動些頭腦,至於 資料庫中有表格 Schema 定義也是另一個重要的議題,MS SQL 的關聯式資料庫是隱定的解決方案,但未來還是希望以 NoSQL 的資料庫為主,如 Mongo DB ,但這又關係到另一個問題,真的所有人都用 Windows 7 了嗎?還是有大多數的機構採用的系統是 Windows XP。IE 6 很糟糕很不安全,目前沒人再使用了吧?還是有大多數的機構採用的瀏覽器是 IE 6,為何不升級呢?因此不考慮實務的環境開發實驗性質的程式很簡單,但若要考慮實務的環境,再進行開發則會產生許多問題,技術也不是最新的就一定會被採用,主要還是以隱定為主。最後開始進行分工的我們,要建立一個平台進行溝通以及程式碼的版本控制等軟體專案管理,但問題在於時間不到一個星期,是否管理會拖慢進度呢?事實上一個有經驗的人開發程式比起多個人開發程式更有效率,但撰寫專案程式時,通常不是一個人就能完成,雖然溝通的成功會很高也很花時間,但不論時間為何,要儘可能團隊分工,此時要還需考量風險,需要有人進行協助和整合,這比開發程式更難,因為要了解的不在只是自己撰寫的程式,而是它人的程式碼,進行 Debug 解決問題,更重要的是了解整個系統運作的架構才能有效率在時間內完成整合成完整的應用程式,簡單來說就是要進行協同開發。

好吧!只能說開發程式真的很簡單,但困難在於開發優良的程式,不論是操作、技術還是程式碼皆是讓人賞心悅目的藝術品,更重要是開發的程式要滿足需求 (理性) ,並且能讓人驚豔 (感性) ,才算是成功。因此開發程式很簡單嗎?要先了解對象是誰,清楚了解需求和環境,再回答這個問題會比較合適。