雲端裡的專案開發
訊光科技 / Andy Kao
|
前言
近幾年雲端技術的興起,所有大廠與企業無不開始朝向雲端產品開發,根據市調機構IDC 預測,2015年雲端產業市場將達729億美元,SaaS服務將占雲端產業的75%產值。市場上的雲端產品與各種雲端服務日益增加,而雲端開發工具也逐漸在市場曝光,當然要把整個軟體工程都放在雲端裡當作服務,讓企業或資訊產業透過雲端來完整開發軟體系統或SaaS服務,就目前市場而言,可遇不可求,考驗最大的還是開發者的觀念不夠成熟。
過去的專案開發中,從需求、系統分析到系統設計,基本上透過口語紀錄,並將客戶需求規格繪製成ER-Model、Class Diagram等流程圖並設計測試案例,再根據前置規劃開始進行系統開發、程式撰寫與測試,過程中需經由不同軟體工具來完成,鮮少有一開發工具可整合專案開發上所有程序,隨著雲端技術的成熟,可透過「雲端開發工具」改變過去既有方式,讓一切都有可能發生!
雲端改變了什麼?最大的改變在於工作地點不再受限,當開發所需環境都架設在雲端環境中,只要透過「網路」何時何地都可開發,也不必在個人設備上安裝任何軟體與工具,對開發者來說,可以在任何地點(在家、公司甚至旅遊中)隨時連上網路進行開發工作;對專案經理而言,不管在國內、國外,可立即追蹤專案開發進度;對客戶來說,只要連上雲端即可看到開發雛型與成果,方便即時驗證與溝通規格。
當時間、空間不再受限時,更易於團隊合作,過去專案團隊合作容易遇到程式整合的問題,不同開發人員撰寫風格不同或無統一規範,透過雲端開發工具可透過共用元件來統一風格;團隊也不像傳統般需要在同一個地點與時間一起工作,透過雲端的服務,團隊可分散在不同地域、不同國家甚至不同時區,SA與SD、Coding與Testing的分工可做得更細緻、更有彈性。
溝通永遠是專案的痛
專案是由一連串不斷地溝通而完成的一項工作,『溝通』也是在專案進行中一個最重要且風險最高的因子,下圖幽默漫畫不僅是拿來博君一笑卻也是專案進行經常發生的窘境。圖中可見客戶真正的需求是在樹上掛一個輪胎,但由於客戶口頭描述與理解誤差造成敘述的需求與實際需求已產生落差,而經由RD人員與系統分析師各自理解的需求也不盡相同,導致程式設計師最終寫出來的系統與客戶真正需求相去甚遠。
從專案開始前的需求分析,當客戶自身需求不明時,需倚靠有經驗的專案經理或系統分析人員來引導客戶,藉由文件或工具來制定規格文件讓客戶確認,接著交給系統設計人員,根據文件來產出系統架構(包括資料表結構與資料處理邏輯),還有Input /Output的格式或頁面內容等,最後才交給程式開發人員來撰寫,接著測試與驗證還需重新循環一次,這就是傳統瀑布式開發模式,透過階層關係不斷向下進行,導致往返溝通的成本實在太高了。
要解決「溝通」的問題,可以嘗試降低溝通層次,讓SA與SD的人員透過雲端平台來合併,減少溝通,因為SA人員從需求分析到系統分析,透過雲端工具是可以自動產生SD的架構與頁面,甚至可由SD的架構自動產生對應的程式碼,讓開發的工作與溝通降到最低。另一個簡化溝通階層的方案,就是目前坊間流行的敏捷式開發,不管是Scrum或是XP的模式,都可以讓團隊的溝通充分並分次快速提交給客戶確認,避免交付最終成品時才發現規格錯誤。
人力永遠不足
專案開發中最重要的資源就是人力,擁有專業知識與成熟技術的開發團隊可讓專案進行時更加順利,然而開發團隊從人才聘用到訓練到留住人才,每個環節都充滿了挑戰,時有聽聞中南部的企業或業者找不到資訊人員的窘境;一個畢業生受訓到可以開始有生產力,往往需要4~6個月時間;根據行政院勞工委員會統計,程式開發人員的年流動率平均為15%,如果扣除資深人員較為穩定,前2年的新人流動率更高達35%,這種人才高流動率現象對於專案開發而言將會造成極大風險。
企業或資服業者的人力需求並非固定的,經常隨著業務需求有很大的變化,人員編制過多過少都是頭痛的問題,往往會選擇急迫或臨時的需求以外包的方式來解決。但外包衍生的問題與風險其實也不小,可能遇到外包商對於該領域不熟悉,或外包商開發人員不夠成熟,時程與品質更是難以控管。
如何利用雲端
在雲端工具高度發展之下,團隊開發模式起了重大改變,企業或資服業的軟體專案開始嘗試採用雲端服務的方式,像是能夠共同編輯的Google Docs、Evernote等雲端服務一樣,可以讓團隊的開發過程透過雲端服務方式來共同討論溝通規格,並完成開發工作,打破以往的開發模式。
透過雲端平台的服務,企業的軟體專案將移到雲端上來開發,從需求訪談開始,系統分析人員可以透過雲端工具直接將系統需求「畫」在雲端,如資料流程與邏輯都可以圖形化工具(如:UML/ER-Model/DFD/Flow chart...)畫好,然後自動產生SD的架構,讓SA人員可以直接完成SD設計,包含資料表結構、後端存取服務、前端頁面及報表格式等等,這樣SA或SD人員直接產出雛形並讓客戶共同參與,如此可以減少SA與SD的溝通成本,最後由程式人員接手後,系統也已經完成50%~70%,後續的Coding工作量並不會太大,因此可將這些剩餘開發工作以雲端方式外包,一來解決Coding團隊不懂Domain的問題,二來可以不用自己養Coding團隊,開發出任何成果也可以透過雲端來即時驗收,最後還可以透過雲端來取得各式系統文件。在專案控管方面,由於所有團隊成員/外包商團隊都在雲端平台上開發,透過LOG紀錄可分析與計算成員在平台上所開發的時間及功能點,即時產出工時統計,並管控雲端上任何的一個版本與差異,讓專案經理對於團隊或外包商的控管更加確實有效,降低開發成本提升專案效率。
關於EEPCloud
EEPCloud就是根據上述概念發展的雲端開發平台,開發者只要有網路,透過雲端服務主機即可進行所有的開發工作。EEPCloud運作時,主機可以是業者自行建立的私有雲(開發中心),也可以是EEPCloud大家共用的公有雲,如果是前者(私有雲),能連接到業者現有的資料庫,EEPCloud可開發Web或Mobile介面來呈現UI頁面與報表;如果客戶有工作流程的需求時,EEPCloud可以支援流程簽核系統進行整合。EEPCloud還包括了完整的發佈功能,可以佈署系統到指定的測試區或正式區,讓客戶可立即看到成果並且立即使用與測試。
對專案經理而言,透過EEPCloud來規劃團隊的分工,內建的「版本管理」來對版本進行管控、追溯及比對工作,也不必再要求工程師花費額外時間撰寫系統文件,EEPCloud可隨時從後端自動產出各式系統文件。EEPCloud更可提供開發者詳細工時統計,給專案經理進行各個開發工作的效益評估。
一個雲端開發工具平台最難的就是彈性,無法與桌面的開發工具(如Visual Studio、NetBeans、Eclipse)相提並論,如Debug、IDE與編輯器能力,外加上可以整合第三方元件等等,都不是雲端開發工具所能勝任。因此,EEPCloud有一個重大的特色,就是可以將雲端所設計的結果以Code的方式下載到桌面的Visual Studio(版本2012以上)中完成無錯編譯,並可以發佈到任何主機上。除了可以在雲端開發外,也可以下載Code到本地重新編譯與整合,甚至改完Code之後還可以逆向上傳回到雲端當中持續使用,EEPCloud應該是目前市面上唯一具有Online與Offline互轉功能的雲端開發平台。
結論
近年來科技不斷進步,企業IT部門與資服業者求新求變,導致軟體開發專案講求快速反應與優先完成,因此業界廣泛採用敏捷式開發(Agile),如Scrum、RUP及XP等,而敏捷式開發主要精神在於,較短的開發循環以及漸進式開發與交付,換句話說,專案的成果,包含計畫、各類的需求細節、設計等都會隨著專案的進行中漸漸完整,而非在一開始將所有的計畫與需求擬定完成,透過早期與持續交付有價值的軟體來使客戶滿意,因此產品雛型在敏捷式開發上佔非常重要的一環,起先會建立出系統雛型經由不斷地與客戶溝通、修改後逐漸將成品完成。
在敏捷式開發之下,專案初期需快速建立系統雛型,如能在SA時就完成SD並降低Coding的比例,可以降低許多開發成本與人力,透過EEPCloud這種全方位的雲端開發工具,從SA開始就將規格填入一直到最終成果呈現,盡量以最短時間交客戶,來滿足敏捷式開發的精神。
軟體專案最重要的就是如期,如質,如預算,雖然困難,但慢慢地透過雲端工具的發展,讓軟體工程可以不受時間、空間的限制,規格可以更容易畫清楚,設計人員可以看得更清楚,更快的交期與更低的成本,更容易外包與比價,更易掌握進度與維護、管理等。相信雲端的演進將成為軟體專案開發上的一大轉捩點,雖無法完全解決軟體工程上的各種困難與問題,但確定的是雲端可讓專案開發更加快速與便利,相信未來雲端開發平台能成為軟體專案開發上的一枚銀彈。
|