軟體的再次革命--機器人寫程式
訊光科技/Andy Kao
前言
隨著人工智慧高度發展,這兩年正熱的自駕車科技風潮盛行,即使Google的Waymo自駕系統與Uber的Self-driving頻頻發生意外,但想必大家都知道"自動駕車"是遲早的事,離實現上路不遠了;如果車子可以自動駕駛,那程式開發是否也可以自動產生呢?
當然是可以的,只是能夠滿足多少使用者的需求而已,就好像是自動駕駛一定是先從園區或人車少的區域先開始試辦,最後才會推到人車多的大都市與特殊地形區域等。
訊光科技從事自動編寫程式至今已經快30年,30年來經過十幾代產品演進,無論如何做,總是無法100%滿足不同客戶需求;每次到了產品成熟期(90%滿足度),時代就變了,平台技術也跟著改變(如:DOS/Windows/Web/App等),一切都得重來。我們面臨的客戶都是專業開發者,開發者對於這種"自動編寫程式"或"元件化"工具又特別挑剔與排斥,效果相當有限。
企業客製化資訊系統最難的就是了解使用者需求,如何把使用者需求了解透徹與良好溝通,就成了成敗重要關鍵。隨著雲端開發平台與人工智能技術逐漸成熟,如何讓一般的使用者(沒有程式開發背景)透過簡單的設定就可以自動編寫程式,看來已經是可行而且是必然的方案。我們常常發現User們會使用Word來製作管理表格,用Excel來製作報表,這些都是他們熟習也是必要的技能;所以我們就利用User所製作的Word表格與Excel報表來做為了解使用者需求的根本,經過數百個表格模擬實驗,發現有70%以上的表格都可以被"自動"編寫成程式碼來執行,這對於User來說可是一大革命性突破。
關於AI
AI領域非常廣泛,基本上圍繞在仿真的能力上,希望透過計算機可以模擬人類,包括人類的思考、表情、語言、感官、動作、行為等。自從 AlphaGo
戰勝了世界棋王之後,整個人工智能技術就有著極大的突破,仿真機器人也越來越接近人類,各種不同的AI應用紛紛出爐,也令人眼花撩亂。
其實,機器人寫程式,說穿了也就是30年前程式產生器的延伸而已,但30年來科技進步很大,系統環境日益複雜,使用介面更是多樣,程式產生器通常很難達到程式開發人員的要求。這10年來我們在Web與App上的元件與應用漸漸成熟,透過元件設定多數需求已經可以被滿足,所以,就針對Word/Excel寫了一個具有高度智能的讀取引擎,來了解用戶可能的需求,雖然沒用到思考推理或是學習引擎(這些都是大學問),但也是一大進展。尤其是我們將使用對象從程式開發者改變為一般使用者(End-User),雖然底層技術都一樣,但使用對象如果沒有IT背景,如何讓他把想要的系統給做出來,難度是非常高的。
以Word與Excel來作為工具的規格並非市場創舉,還是有人嘗試過,主要差異是我們累積了30年開發平台經驗,軟體規格元件化與標準化已經非常成熟且經過市場考驗過,透過這些元件很容易就可以讓User的Word與Excel表格產生良好的對應關係,並以User的思維為出發點,讓User在沒改變習慣情況下就可以完成他所要的結果,這需要使用智能分析程式與複雜邏輯推理才能讓User滿意的。
何謂iCoder智能編程雲
如下的示意圖,將企業現成的Word表格,上傳到智能編程雲,只需10秒鐘,你的表單程式就立即完成,並可以在電腦、平板、手機上皆可執行;輸入表單資料後,也可以把資料套印到原來的Word表格上。 如果你需要查詢或統計報表,只要再上傳現成的Excel表單,10秒鐘同樣可以完成資料查詢與統計報表。
iCoder智能編程雲是以EEPCloud為底層所研發,EEPCloud為一個以Node.JS為核心的雲端開發平台,供程式師或分析師開發企業的應用系統所使用;iCoder則是以人工智能的方式,讀取Word與Excel範本作為需求,自動產生對應的資料庫與資料表、自動編寫表單與報表程式,讓你在完全沒有程式設計的基礎上完成任務。如果有特殊功能無法滿足需求時,亦可透過EEPCloud的專業開發者來進行二次開發服務。
iCoder智能編程雲架構
智能編程雲包括了幾個重要核心模組,如圖並分別說明如下:
u
智能表單:
透過Word格式自動產生資料庫與RWD表單(響應式表單)
u
智能報表:
透過Excel格式自動產生查詢表單與Excel報表
u
智能App:
透過App安裝到你的iOS或Android手機上,讓你透過手機也可以執行你所設計的Word表單與Execl報表。
u
智能工作流:
在iCoder雲上面以拖拉方式設計表單的流程與簽核,可透過電腦或手機進行線上簽核。
u
智能商業邏輯:
用來定義資料存取或交易的處理原則,串聯不同Word表單的資料關聯與交易處理。
u
EEPCloud雲開發平台:
如果iCoder無法滿足使用者需求,可以配合EEPCloud給熟習IT的開發者進行二次開發。
u
轉出EEP.Net:
在iCoder所自動產生的RWD表單與後端服務,可轉出到EEP.Net平台給Visual Studio編譯,進行三次開發,讓你的需求100%實現。
iCoder智能編程解決了甚麼
與其說iCoder帶來甚麼革命,還不如說能解決甚麼問題,簡單如下:
1.解決溝通問題:
企業應用系統的開發,都是由使用單位提出需求,再由IT部門進行了解,如果這個工作是外包,還要交給系統分析師進行溝通與確認,最後再交給程式開發人員,這些溝通不管是透過文件還是語言,都避免不了溝通不良的問題,導致系統開發出來並不是需求單位所要的,如此,往返重複來回多次,除了毫無效率可言,還造成成本浪費,最後多數不是彼此妥協驗收就是失敗收場。iCoder如果由使用單位的需求者自行以Word或Excel來定義規格,70%的功能都會以智能編程來自動完成,剩下不能滿足的再交給專業開發者或IT部門來進行補足,這樣通常會帶來時效與成本的倍數降低,大幅提升企業資訊化的效率。
2.解決開發生產力問題:
對於專業的IT部門或應用軟體從業者而言,項目經理或系統分析師就可以透過iCoder將系統快速完成,無論是雛形開發還是實際系統的開發進度都會快了數倍,待規格確認後,再讓程式師以二次開發(使用EEPCloud),或三次開發(使用EEP.NET+Visual Studio),把最後結果給完善並交給用戶使用,除了大幅縮短開發時程,開發人力也至少可縮減30%以上,開發成本的節省更是非常可觀。
3.
解決品質問題:
因為所有的過程都沒有經過程式師的人工開發,所以並不存在品質的問題,通常經過簡單測試即可上線。如果真有品質問題,那就應該統一提升EEPCloud元件品質,經過大量的用戶使用加上持續不斷改善,可以將品質提升到最佳的水準。
4.功能性的解決方案: iCoder不是只有表單與報表的解決方案,還提供App與工作流程(電子簽核)的解決方案,App與工作流程都是內建的,是設計給管理者或使用者所使用,無須回到專業的開發團隊或IT部門來服務與處理(當然需要有制度協調與管理部門的管控動作)。
使用對象
iCoder的使用對象可以為一般管理者或End-User,只要基本的Word與Excel使用概念即可上手,當然對資料庫有概念者將會更得心應手。
1.一般企業的管理者,以現成的企業Word表單與Excel報表格式,即可讓iCoder自動編寫程式,完成多數的工作。
2.系統分析師與顧問師,以Word/Excel作為系統分析的工具,讓iCoder自動編程,完成客戶的需求。
3.開發者,一般為系統分析師或程式設計師,透過EEPCloud以二次開發方式,來維護或增強iCoder所自動編程的系統,100%來滿足用戶的需求。
4.現有EEP的客群,原來EEP的客戶可以使用 iCoder來快速自動編程雛形系統,再將此雛形系統輸出成EEP.NET 可以編譯的RWD表單與Server端服務。
iCoder比EEP.NET的Wizard聰明10倍
熟習EEP開發平台的開發者,都知道EEP的Wizard已經算是聰明且能快速地完成你要的應用系統了。但如果拿來跟iCoder相比,你會發現差距很大,或許說聰明10倍有點誇張,但為了讓沒有IT背景的User可以完全不寫程式的情況下就能做出應用系統,就不得不加入很多推理與智能的機制來讓User與系統溝通良好,及預先幫User推理他想要的結果,這個智能還可以不斷的成長與學習,來幫助User在不使用程式的情況下增加完成率。
現說明iCoder與Wizard的差異:
1.新版的資料字典:
與Wizard一樣都是靠EEP資料字典來運作,iCoder則完全100%依賴這個資料字典來自動編程,所以資料字典增加了很多設定。
2.智能讀取欄名:
從Word與Excel表格中讀取欄位名稱,是件很複雜的事,我們已經過了100多張的各式表單的讀取經驗,得到了很多寶貴知識,智能、合理、有效就是讀取的原則。
3.自動建立資料表結構:
之前Wizard必須先建立Table
Schema,但iCoder可以不必,隨著Word表格讀入自動建立表結構,當然也允許資料表已經存在的設計方式。更困難的是維護工作,iCoder允許在Word中維護並改變規格後再二次讀入,系統會自動更改結構與重新產生程式碼,達到維護目的。
4.不依賴欄位名稱:
就是iCoder大都採用標題作為欄位名稱(虛擬化),實體欄位名稱大都是自動命名,沒有甚麼意義,有意義大都是User所理解的欄位標題為主。虛擬化的好處就是更改欄名時不會掉資料(因為實體並沒有更改),表單間關聯時,容易透過欄位標題來作為彼此的關聯關係。
5.更多的編輯元件: Wizard只有支援6種資料編輯元件,但iCoder的資料編輯元件卻高達近20種。
6.自動辦別必填欄位:
iCoder可以透過Word的欄位標題第一個字元是否為'*'來自動識別該欄位是否必填。
7.智能關連選單: Wizard的關聯選單通常每次都要選擇,iCoder卻可以透過欄位標題自動分析判斷得知對應哪個關聯資料表。
8.智能欄位對應:
iCoder產生的Refval關聯選單中,還會自動分析主表欄位與關聯表欄位是否有一樣(以標題名稱來比對),標題名稱一樣的欄位通通會被放入ColumnMatch中,就是將相同的關聯欄位內容值自動帶入。
9.多欄多列: iCoder提供了兩個元件,一個是一個欄位內有多個標題與多個欄位,透過#E可將一個欄位拆成多欄來讓USER輸入;另一個為多列的表格,透過#J可以將一個欄位拆成多列與多行來讓User輸入,並存在到一個欄位中(以JSON格式儲存),多列的目的是可以取代固定筆數的Detail明細表。
10.RWD欄位排版: iCoder可針對不同的尺寸螢幕來定義要顯示那些欄位(針對手機/平板/桌面等)。
11.欄位關係公式定義: iCoder為了讓企業User可以自訂欄位公式,提供了簡易的計算式來定義欄位彼此的關係(包括明細表加總到主表欄位),讓一般的常用表格計算功能可以免去編寫程式。
12.自動編號定義: iCoder可以直接在主表與明細表定義各種不同的自動編號功能,可以是最簡單的自增值,或以年/月/日為流水號的自動編號功能等。
13.使用提示PlaceHolder:
可以將Word表格中用來提醒填表者的提示訊息自動讀入到各欄位的PlaceHoder(輸入的提醒說明)中。
結語
其實,iCoder智能編程是個無心插柳的一個意外構想,但卻給一般用戶與高階開發者(不熟習開發技術的IT從業者)帶來一片新契機,這幾年來由於軟體技術的變遷與進步,複雜且高門檻的開發技術,讓跟不上科技的IT從業者卻步,更別說是一般的使用者。
智能編程,對我們來說只是個開始,或許能做的只能是使用者需求的60%到70%而已,但因為想像空間很大,也很挑戰,我們會持續往這個方向努力,直到90%的開發需求都可以被無程式化(一行程式都不必寫),而且直接由需求端的用戶就可以完成,這樣,不久的未來,也許多數的程序開發者都要去學習第二專長來增加自我的競爭力了。