SOA 和 Web 2.0 — 敏捷開發當道

除了先前提過的幾點,SOA(服務導向架構)和 Web 2.0 有更多異曲同工之處,像是在開發方面。

敏捷、迅速應變的能力 (agility),是目前公認 SOA 所能為企業帶來的主要效益;開發組合式應用 (composite applications),來快速回應新的業務需求,是企業決定導入 SOA 的一大誘因。無獨有偶地,在 Web 2.0 的領域中,敏捷開發 (Agile Development),也開始蔚為風潮。

敏捷開發
敏捷開發被 Tim O’Reilly 等形容為永遠的 beta 版 (perpetual beta),並認定是 Web 2.0 的一項重要精神和特徵。

有別於傳統大型專案的策略,其開發、實施期間往往需要耗費數年,SOA 和 Web 2.0 改採小專案、漸進式的做法,透過持續性的改進,讓應用的價值能夠一次一點地提供給用戶。漸進的做法,雖然無法一次將大量新功能提供給用戶,但卻能和用戶保持持續性、更緊密的互動,讓他們更快享受到新的應用服務所帶來的便利。幾年後算下來,點點滴滴積累下來的成果總合,往往遠超過不做則已、一做驚人的大型專案所帶來的效益。

微軟和 Google 分別是傳統和敏捷兩種典型的代表。微軟的 Windows Vista(之前稱作 Longhorn),歷經六年波折,終於預定將在明年一月上市(是否還會產生變數,不得而知)。多年下來,傳統套裝軟體開發的做法,是由上而下,先由一組象牙塔裡的精英工程師,預測未來趨勢,收集研判用戶需求,然後再一步步進行設計、開發;整個歷程相當曠日費時。對照之下,以 Google 為代表,採取敏捷開發策略的 Web 2.0 網路服務公司,三天兩頭不斷推出一個個小服務、小工具。雖然就個別應用服務或工具而言,沒有任何一項能和微軟功能強大的大型套裝軟體,例如 Office 平起平坐,相提並論,但卻能更快地將價值一點一點地提供給用戶;透過觀察用戶在線上對網路服務的使用反應,Google 能持續地修改這些服務,來更契合用戶的使用需求;多項服務聯合起來的價值總合,對許多用戶來說,可能不輸給一個大型套裝應用。相較之下,如果是傳統大型套裝軟體,用戶往往需要等下一個版本上市,才能等到更好用的功能,而這一等,可能就是好幾年;更何況,許多複雜的功能,對大多數用戶來說,其實是多餘、根本用不到的,但這些額外的功能卻延遲了整個軟體推出的時間,提高了開發成本(和售價)。此外,複雜度同時也增加 bugs 的數量和出現的機率。

先前提到,Google 從制度面著手,將敏捷開發深化到整個企業文化之中 — 每位工程師每週有 20% 的自由專案時間。所以這些小型服務和工具的原始設計和創意,大都來自基層的工程師。前幾天美國商業週刊的一篇文章指出,Google 利用這種由下而上的開發策略,讓工程師們「百家爭鳴,百家齊放」,期待能有少數殺手級應用服務,從中脫穎而出(Google Map 就是一個成功的例子);並事先作出心理準備,不排除將可能有多達半數以上的應用,會逐漸凋零。

除了微軟之外,許多銷售企業套裝軟體的公司,包括 SAP、Oracle 等,多採用傳統大型專案的開發模式。產品上市後,購買的企業還需要仰賴專業顧問服務,再耗費相當的客製工夫後,才能上生產線服務用戶。近幾年來,打著軟體服務化 (Software As a Service) 的企業軟體公司,如 Salesforce.com 等,採用敏捷開發模式,快速回應客戶需求作修改,已經開始讓傳統大型套裝軟體公司感受到威脅,紛紛計畫推出類似的網路服務型態產品來因應。

其實在十年前,劍橋大學和哈佛商學院的大衛顎普頓 (David Upton) 教授,就已經預見敏捷開發和強調模組化的 SOA 模式對企業的效益(儘管在當時,”SOA” 一詞尚未出現)。近幾年來,從 open-source 領域實踐 “release early, release often” 的信條,Web 2.0 新創公司採用的敏捷開發模式,到採用 SOA 企業的組合式應用,在在都顯示出: 強調漸進、持續改善的開發模式,終於開始被愈來愈廣泛地採用,顎普頓教授當時所提倡的理念也終於得到了伸張。

十年前正是 ERP 系統獨領風騷、方興未艾的年代。顎普頓教授研究製造業運用 IT 的效益,在一篇論文中,對曠日費時的大型 ERP 建置專案所可能帶來的問題,提出警語。他把這種不做則已、一做則人仰馬翻的大型 IT 專案,稱為做 “installation-based” 的模型。這類專案,往往由高層主管拍板定案、向下貫徹。企業員工在這樣一個「大耀進」的過程中,有如洗三溫暖般。基層 IT 員工被迫接受全新、ERP 相關的專屬語言及開發方式,往往無所適從。
SOA ROI 靠漸進專案

顎普頓教授將另一種與 installation-based 對比的做法,稱做 “path-based” 的模型。在這個模型中,IT 開發被視為一條不斷綿延的路徑。各項科技(網路、系統軟體、應用等)在這條路上交疊、持續演化、相互依存著。如文中寫到:

在這種 [路徑做法的] 情況下,主要的考量放在發展整合新元素的能力,同時保持與既有系統的相容性。專案通常是小而快的,目的在迅速收成,方便區域性的實驗,並可沿路提供價值。用戶在整個過程全程投入。此一模型較不需要長程的規劃和大型專案管理的能力,偏重持續設定正確的方向,同時在作業過程中,需要專精的技術實力。

論文中指出,路徑模式的做法,其實和幾個先前在 AMT (Advanced Manufacturing Technologies) 領域中,已經歸納出來的特性,如模組化 (modularity)、可及性 (accessibility),和包容性 (inclusiveness) 非常契合。過去日本汽車製造業者之所以能打敗美國底特律的昔日龍頭,與他們多年勵行持續精進的做法有很大的關係。

最後,引用軟體工程界大師 Martin Fowler 在探討 Continuous Integration 時,對敏捷開發的詮釋,作為結尾:

One of the most difficult parts of software development is making sure that you build the right software. We’ve found that it’s very hard to specify what you want in advance and be correct; people find it much easier to see something that’s not quite right and say how it needs to be changed. Agile development processes explicitly expect and take advantage of this part of human behavior.

01

[…] 勞虎跑得快 » Blog Archive » SOA 和 Web 2.0 — 敏捷開發當道 (tags: Tech SOA Web 2.0 Google Microsoft Development XD) […]

02
7/10/2006 5:24 am

我很喜歡這篇文章,雖然同樣是套裝軟體,但是我覺的 Operation System 跟一般 application 本質上還是有段差距, 是不是每種軟體都適用 aglie development 也很難下定論,拿來比較似乎不是站在同一個水平線上。

03
7/10/2006 10:58 am

Neo:
謝謝!的確,不見得每種軟體都適用 agile development。不過,也要怪我文中舉的例子太少,容易造成誤會 — 微軟除了作業系統之外,也涉足許許多多其他軟體領域,包括像 Office, CRM,現在更積極推動 Windows Live,開始力行 agile development,試圖快速推出一系列的 Web 2.0 服務來和 Google, Yahoo 等競爭。在 CRM, ERP 的領域,傳統上也是走非常大型、多年才改版的套裝軟體方式,包括 SAP, Oracle, 微軟的產品,但如今受到 agile, on-demand 的競爭對手的刺激,也紛紛研擬仿效的做法來因應。這代表了 on-demand, “software as a service”, 還有最重要的,「更快回應客戶需求」的理念,已經受到全面的認可,到了連這幾家最大的軟體公司都不敢漠視的地步。

附帶一提,暫時撇開敏捷開發,單就作業系統領域,看看 Windows Vista 為什麼這麼慢的問題。紐時三月針對 Windows Vista 再延遲一事,有篇Windows Is So Slow, But Why?。其中提到,在 Longhorn (Windows Vista) 發展的這五年間,Apple 的 Mac OS X 已經推出了四個主要的版本了(第五代更將在下個月正式揭幕)。如果我們看 Linux 和圍繞它的整個生態環境,在 open-source “Release early, release Often” 的原則下,這五年間也不知已經換多少代了。紐時文中提到一個重點 — Windows Vista 快不起來的關鍵,在於要和多年前的應用軟體繼續保持反向相容的要求。從軟體工程的角度來看,這是極大的夢靨。

我想我要強調的是,新模式、新典範、新思維的價值和時代意義,以及對傳統做法作帶來的衝擊,而非全面否定所有過去的做法。

Leave Your Comment

Name*
Mail*
Website
Comment