讓軟體開發回歸軟體工程
微軟在新一代的Visual Studio 2005,不但扮演著延續Visual Studio這個開發工具承先啟後的生命,此次改版更注重團隊開發與開發方法,不再執著於技術上提升。簡單地說,讓軟體更容易管理比起更容易開發顯得重要些,而且企業主管更在意前一點,他們也正是決定掏腰包的人,只有工程師會喜歡後者,只是更容易撰寫程式並無法降低人力成本。VS2005重要改變是平臺化與涵蓋軟體開發生命週期,接下來我們將會分析這些改變所帶來的影響。
衝擊1:團隊開發的人力負擔與協調默契
VS2005採用軟體開發生命週期,作為企業在選擇資訊系統發展方法論時的標準流程,其特徵是將開發流程區分為幾個連續階段(3個~20個不等),標示著不同的系統發展成果,實作時則配合專門的技術角色(分析師、專案經理等),目的是容易管理、分層負責與確保軟體品質。VS2005則在軟體開發生命週期中定義出區分架構師、開發人員、測試人員與專案經理,並將軟體依角色區分為3種版本:Team Architect、Team Developer、Team Tester等,專案經理的權責則包含在Excel或Project上,可與Team System整合。
衝擊2:微軟對企業重新教育軟體工程
VS2005改變軟體開發方法論,希望由操作工具而熟悉軟體工程,但最終還是讓企業導入軟體開發生命週期,這需要時間證明。此外,過程中也引導出以前不受重視的測試工程師角色,也讓企業在拔擢人才上受到考驗。
衝擊3:微軟的領導地位與市場教育方向
軟體工程將軟體開發生命週期視為重要的起步,但軟體工程屬於資訊教育基礎之一。如果現今軟體開發與維護所面對的問題,必須由微軟等這類廠商在工具中內建範本,反客為主來教育企業中的開發人員,那麼我們確實得思考長久以來,資訊教育講究速成的嚴重問題。企業主管面對軟體品質不佳,軟體專案高失敗率等,卻也不願意投資成本以提升軟體工程師的素質,那麼VS2005只會是舒緩疼痛的止痛藥,而非根治的良方。
衝擊4:Express版永久免費,力抗LAMP
.開放源碼族群對Visual Studio Express的看法
..NET族群對Visual Studio Express的看法
雖然微軟釋出了免費的善意,並希望藉此推廣.NET技術。不過.NET使用者視Express版為免費「試用」及「體驗」的好途徑;而開放源碼界卻視其為「邪惡帝國的陰謀」。所以Express版除了平臺及功能的限制之外,還是得面對「信仰」意識型態作祟的問題。
衝擊5:與SQL Server 2005緊密整合
站在程式開發者的立場,資料庫與商業邏輯分開,資料庫純粹儲存資料,程式開發交由應用程式處理比較單純;但從DBA的角度出發,系統歸系統,資料的處理由資料庫負責比較好。雖然兩者看法分岐,不過,Stored Procedure貼近資料庫引擎,執行效能較佳,況且資料確實有預先處理的需求,透過程式遠端處理不僅耗時,而且有網路斷線造成執行失敗的風險,因此,實務上Stored Procedure有存在的必要性。Visual Studio 2005讓軟體開發回歸軟體工程
|
VS2005開發平台化 VS2005創新的功能,都是為團隊開發與管理,使所有開發角色均融入此平臺中。 |
臺灣軟體專案(在此我們談論的是廣義的軟體專案,包括新程式撰寫與系統維護),像是一堆專業的樂手合奏出一齣荒腔走板的交響樂,這些樂團成員在獨奏時或許都是箇中好手,但在樂團中協調合作大於個人式的大鳴大放。此時,「樂譜」與「指揮」伴演著關鍵引導角色,否則放任團員自行寫詞譜曲,並彈起各自的調。
整合式開發環境(Integrated Development Environment,IDE)以往僅扮演工具的角色,但近來面對軟體在商業應用日趨複雜所帶來的「突顯特性(Emergent Property)」,這類性質難以在專案初期事前預測,卻影響著上線後整體系統運作的穩定性與可靠度,而這也是客戶非常在意的兩個結案重點。
微軟去年底發表Visual Studio 2005(後續文章中簡稱為VS2005)試圖協助企業開發穩固可靠的軟體,首次在單一工具內建開發方法(樂譜)與專案管理(指揮),讓旗下原有的Visual Studio產品脫胎換骨,成為不折不扣的電腦輔助軟體工程工具(Computer-Aided Software Engineering Tools,CASE Tools)。對同級解決方案供應商如IBM或Borland而言,或許不算是新鮮事,但微軟的創新在於它僅用一個工具就辦到了!
以軟體工程為主的開發方法,目的是讓企業能以合乎成本效益的方式,有效地控管軟體開發與品質。然而,軟體工程從70年代中期便提出,截至目前為止並未讓本土的軟體產業帶來競爭力的變革,探究其成因是軟體工程本身為抽象概念,難以落實在現實開發作業流程。微軟突破從抽象到具體的實踐管道,以VS2005結合軟體工程與專案管理,包裝成為軟體開發生命週期(Software Development Life Cycle,SDLC)。雖然後續效益有待觀察,但勢必對現今開發現況帶來衝擊。這些衝擊包括:
1.首當其衝的是臺灣是否適合使用軟體工程這類結構性的開發方法,在企業組織與成本上重新變革。
2.接下來是VS2005 Express免費版,在Eclipse開發平臺或PHP、Java語言陣營投下震撼彈,讓猶豫不決的初學者琵琶別抱。
3.最後是結合自家的SQL Server 2005,使得程式設計師或資料庫管理員可以使用.NET語言撰寫資料庫查詢語法,並改進以往資料庫程式無法偵錯的缺點,甚至可完成軟體開發生命週期。
這都將是此篇文章中所要探討的問題,但我們先簡述目前企業面對軟體開發的幾個問題:
"軟體專案充斥漫無章法的管理制度與開發流程"
如果軟體專案主管比喻為樂團指揮,那麼專案經理像是握著指揮棒卻沒有指揮權力的角色,缺乏協調的操舵手,樂團如何能彈出和諧的交響樂?簡單地說,本土的軟體專案常出現外行領導內行的窘境。企業主管常直覺上會選擇擅長溝通的人負責管理軟體專案,讓擁有技術的資深工程師負責執行,卻在無意中產生角色上的矛盾,前者不一定懂技術卻得領導技術團隊,而後者掌握關鍵的領域知識(Domain Know-How)卻無法決策。此外,主管或專案經理與客戶討論軟體功能變更時,資深工程師常被排除在外,通常是事後被迫接受客戶天馬行空的附加功能,最後只能概括承受,結果是寧願敷衍了事、犧牲品質,也不願冒險更動架構設計。主管總因為專案的高失敗率與客戶的抱怨而失眠,他們不禁思考:
1.哪一種開發方法能兼顧技術與管理層面?
2.如何更有效地讓專案經理與技術人員彼此間資訊互通與共享?
3.軟體開發方向與品質現況如何了?
4.是否工程師正處於高負荷量工作?是否有人偷雞摸狗?
5.客戶無預期地變更功能時,專案經理應如何控管?
6.人員異動或流程變更時,專案應如何接續?……諸如此類的問題
有趣的是,這原本不應該是開發工具會提問的問題!反而是管理的弊病,微軟卻反其道而行,企圖說服企業導入制度化的開發工具,解決管理人員上(指揮)的問題。
接下來,微軟更具野心要解決團隊協同開發(樂譜)方法的困難。目前企業因商業競爭全球化導致產品供應鍊錯綜複雜,顧客則因為市場供過於求使得選擇多樣化,卻讓企業難以瞭解客戶的需求究竟是什麼,造成商業應用軟體高度複雜,超越小型組織單打獨鬥的開發能力,而不得不朝向大型團隊合作的模式。這使得軟體開發面臨的全新的問題與挑戰,起先從工具、再跨越到流程規範、並延伸到組織、最後必須採用企業化管理。然而,軟體專案高失敗率仍是企業主管揮之不去的夢魘,不斷尋找嚴謹的開發流程方法論以有效控制軟體變異性,而不是阻止軟體改變功能。微軟能夠在VS2005中內建開發方法,並強調平臺化的高度整合與彈性,讓使用者在操作工具時,不知不覺便完成制度化流程與專案控管等。
軟體專案缺少量身訂作的管理工具
「巧婦難為無米之炊」,企業主管面對軟體專案的多樣性常苦無適切的工具,包括各種技術專精人才的溝通與資訊共享、為解決組織管理而造成流程上疊床架屋的複雜性,以及軟體專案的特殊性造成其產出物(artifacts)異於其他專案,這些創意的產出物都是軟體工程師的藝術傑作,其商業價值隱藏在程式碼的字裡行間,不僅難以量化管理,更難以衡量。就像生活週邊看似平凡無奇的石頭,卻是現在電腦主要的組成材料:矽的重要來源,而軟體工程師的價值,就在於他們有能力將商業邏輯轉換為程式碼(將平凡的石頭提煉成晶片)。當然,如果矽谷的軟體工程師因為披頭散髮而視為藝術家(或者怪胎),那麼不難想像專案經理如何有通天的本領來控管這群怪胎的產出物了。
目前業界的解決方法,既然管不了程式的運作結果,那麼就管理程式碼。就像工地的工頭一樣,與其擔心工人砌磚頭的過程中將城堡蓋成榻榻米,不如管好每一塊磚頭在堆砌時的去向,如果這樣還會蓋出榻榻米,就是專案經理的錯誤了。只是長久以來,專案管理工具(例如Project)一直著重在時程與成本等企業管理項目上,少有針對軟體開發特殊領域的專屬工具。相對地,軟體專案管理工具雖然管理程式碼,卻難以控管成本、資源、任務指派、進度追蹤與績效等,讓軟體開發與專案管理一直是兩條平行線式的發展,缺少交集。
開發方法允許可控制的變動,而不是阻撓改變
開發方法的重要性最容易發生在團隊開發上,對非技術背景的人而言,一個軟體工程師在電腦螢幕上畫出一隻恐龍是很神奇的事,但對管理軟體團隊的專案經理而言,10個工程師可能畫出10種長相、外型與行為都不同恐龍,如果缺少開發方法的規範,這些恐龍可能也無法湊成一部侏儸紀公園電影。開發方法像是電影劇本(或交響樂譜),但這個劇本不是用來限制藝術型式創作,而是讓創意朝向特定走向,避免發散與失控,這個方向就是客戶需求。此外,也不至於抹煞軟體工程師的創意。專案經理就像好來塢優秀導演一樣,要挑一本適合工程師演出,又深得客戶感動的劇本。這在軟體開發專案上越來越重要,傳統常因為缺少適當的開發方法引導,軟體專案便常出現脫稿演出,甚至偏離客戶需求方向。此時,專案經理只好不斷與客戶溝通,甚至隱瞞失控的問題,說服客戶達成共識讓專案勉強結案。
整合式開發環境供應商著重技術層面的改版
整合式開發環境供應商長久以來,改版的動機都在跟上最新技術,例如微軟推出.Net Framework 2.0或Sun制定J2SE 1.5與EJB 3.0時,廠商便急著將新功能納入工具中,但這正與使用者需求背道而馳。
企業並不急著應用新功能,依新技術改版的工具不僅無法吸引他們,反而使人們更慌張,因為這反應著舊有應用程式升級的壓力,以及人員培訓的成本等(縱使這些應用軟體原本很穩定地運作)。簡單地說,軟體升級與改版應由企業自行決定,但現實上都是供應商強迫下的結果,可是我們不禁問,供應商怎麼會比使用者更瞭解何時應升級?以及為何要升級?
然而,企業所面對的是應用軟體維護問題,特別是人員異動或職務調整,以及客戶變更需求或增修功能時,如何更有效率地管理。不要忘了,軟體維護過程中就算技術不變,技術人員的異動還是會提高維護的成本與困難度。讓商業運作不停擺,如同交響樂團裡,就算換了樂手或指揮,還是得向觀眾演奏出協調的樂曲。
"注重團隊開發而備受矚目"
微軟在新一代的Visual Studio 2005,不但扮演著延續Visual Studio這個開發工具承先啟後的生命,此次改版更注重團隊開發與開發方法,不再執著於技術上提升。簡單地說,讓軟體更容易管理比起更容易開發顯得重要些,而且企業主管更在意前一點,他們也正是決定掏腰包的人,只有工程師會喜歡後者,只是更容易撰寫程式並無法降低人力成本。VS2005重要改變是平臺化與涵蓋軟體開發生命週期,接下來我們將會分析這些改變所帶來的影響。
由開發工具到開發與管理平臺
VS2005在開發工具部份強化原始程式碼管控與自動化建構的功能,再納入工作項目追蹤、專案入口網站與報表等管理功能,整合成軟體開發團隊協同運作所設計之共通平臺。
由程式撰寫到軟體開發生命週期
微軟本身為開發工具供應商,在整合式開發環境發展歷史中也創下許多革新,包括視覺化設計、主從式架構與分散式架構,雖然也為微軟培育出百萬名以上的.NET程式設計師,但這些階段的演進都離不開程式撰寫的範疇,轉入VS2005後邁向另一個轉捩點:軟體開發生命週期,讓單一產品實作抽象的軟體工程方法論。文⊙張瑞隆
"何謂好的軟體?"
Ian Sommerville在「軟體工程(Sofware Engineering)」一書中提到,所謂的好軟體必須具備以下4種性質:
| 特性 | 說明 |
| 可維護性(Maintainability) | 完成後的軟體必須能夠對顧客的需求改變進行軟體的演進與維護,這是一項非常重要的特性,因為在變動的商業環境中,軟體的改變是無法避免的結果。 |
| 可保護性(Dependability) | 軟體的可保護性包括可靠性、防護性與安全性。系統發生故障時,可信任的軟體不應該會造成實體或經濟上的損失。 |
| 效率(Efficiency) | 軟體不應該浪費系統資源,例如處理器與記憶體。因此,效率包含了回應能力、處理時間、記憶體使用率等。 |
| 可用性(Usability) | 軟體必須能夠讓設計的對象容易使用,不用花太多功夫,這表示它必須有適當的使用介面與說明文件。 |
衝擊1:影響團隊開發的人力負擔與協調默契
|
VS2005創新的功能,都是為團隊開發與管理,使所有開發角色均融入此平臺中。 |
VS2005為落實軟體開發生命週期與流程管理,而明確區分角色(但同一人可擔任多種角色)與權責,讓企業重新調整組織結構,卻可能帶來額外的人力負擔,以及資訊共享的困難。
角色與分責所增加的人力負荷
VS2005採用軟體開發生命週期,作為企業在選擇資訊系統發展方法論(System Development Methodology)時的標準流程,其特徵是將開發流程區分為幾個連續階段(3個~20個不等),標示著不同的系統發展成果,實作時則配合專門的技術角色(分析師、架構師、開發人員、測試人員與專案經理等),目的是容易管理、分層負責與確保軟體品質。VS2005則在軟體開發生命週期中定義出區分架構師(Architect)、開發人員(Developer)、測試人員(Tester)與專案經理(Project Manager),並將軟體依角色區分為3種版本:Team Architect、Team Developer、Team Tester等,專案經理的權責則包含在Excel或Project上,可與Team System整合。
以工具區分角色的做法對大型開發團隊而言,終於有對應的專屬工具,但對中小企業而言,通常由一人扮演多種角色,而不同角色下工具卻能強迫兼職的人不至於混淆工作,以致於難以追蹤工作進度(這是造成中小企業軟體專案常「重工(Re-work)」的原因)。
另一點附帶的優點是應用軟體生命週期對中小企業主管而言,仍是艱澀的觀念,但微軟卻可以透過功能與版本的區分,再加上整合,使初學者跟著工具所規範的功能,即可以完成軟體開發生命週期。
角色與分責是軟體工程化的精神之一,我們可以用半導體製程的方法來比擬,生產線將晶圓的製作手續上區分為黃光製程、薄膜製程等,各製程緊守著本身的生產責任,達到整體流程標準化(SOP),而製程整合工程師負責排除製程缺陷問題,並確保高良率等。但角色與分責使得企業的開發團隊中常一人分飾多種角色的問題,以及人力精簡的目標又重回原點。為了角色與分責勢必增加人力,但這對企業而言,原本因為資訊單位只是消耗預算的單位而精簡人力,若為了軟體品質而朝向工程化,形成兩難的局面。即使敏捷式開發方法能解決人力問題,但企業中開發角色的賦予,並非如工程師所願。他們常因為主管的臨危受命下擔任救火隊的角色,使得角色混淆問題嚴重,VS2005雖立意良善,但企業勢必在現實與工具間取得平衡點,而且還要取得所有成員的共識,否則萬用的瑞士刀只是用主刀來切水果,不免大材小用,而且這樣的狀況下,VS.NET 2003已能應付需求,不需要升級到VS2005。
團隊協同作業難以溝通與培養默契
如果VS 2005只是區分版本,那麼過於小看此次改版。軟體開發生命週期注重反覆式的過程,以逐步提昇軟體品質,而在反覆改進過程扮演開發方向控管的操舵手:專案經理,不再置身事外。VS2005此次也針對專案經理開闢專屬的工具:Team System,讓專案經理與開發人員因為使用共通的工具而使用共同的語言溝通,不再像是局外人。
Team System也讓開發工具轉為開發與管理平臺,讓開發人員可以分享資源,更重要的是讓專案經理可以從集中式平臺監督軟體專案。以往開發工具為單機版時,各成員的工作成果均保留在個人電腦,專案經理僅能透過威脅利誘的方式,才能匯整各成員的成果成為專案進度,但此時專案經理不但被架空,而且形同虛設。
為了管理創意成果供應商莫不絞盡腦汁,像Borland便在StarTeam產品中內建Repository(中央儲存庫),這是一種中央控管的資料庫,用於有系統與結構化地儲存軟體開發過程的各式資料、圖表與程式碼等。微軟則在Team System連結SQL Server 2005達到相同的功能,而且N-Tier架構強迫軟體工程師在開發過程便進入專案控管,而不是寫完程式後才決定要不要歸建到專案檔中。這讓開發更有效率,也讓軟體工程師專注在程式開發上,而不是與管理有關的瑣碎、例行事務上。
VS2005觸及開發團隊合作的痛處,這牽涉到開發人員技術本位與文人相輕的老問題。「軟體黑手(俗稱Hard Coding的工程師)」與規畫架構的架構師不平等的工作任務與負擔,以及最後把關的測試工程師所背負的壓力,都會在團隊中形成各自為政的問題。最常見的是測試工程師與開發工程師難以取得協調,以及資歷高於專案經理的資深工程師,對流程與管理的抗拒,特別是這些人掌握舊式語言(如corba語言)或舊型主機(Legacy System)的維護等,使得專案經理的權威受到挑戰,以及對團隊向心力都形成威脅。單從工具的角度無法面對這些問題,然而,以工具要求團隊合作只是讓問題浮上檯面,但企業可能沒有心理準備面對這個積弊。
專案進度控管與資訊共享矛盾
VS2005實作軟體專案管理,並不同於一般我們所謂的專案管理,目前技術上能實踐的部份,僅只於與軟體工程所要求的軟體品質相關的績核項目,例如原始程式碼或臭蟲數量等。
專案入口網站(Project Portal Website)主要是突顯出專案管理並非專案經理本身的事,而是所有關係人(Stakeholders)都應了解,隨時隨地都可看到最新進展。此外,軟體開發專案的特性是集合各種技術專精的人員,入口網站有助於分享資訊,這在臺灣中小企業的資訊專案正面臨這個嚴重問題,也就是成員將技術資訊藏私,以展現他在團隊的地位。James Lewis提出兩個建議,能讓專案運作更有效率:
1.重要成員擁有較充足的資訊時,許多的決定就可以自行處理,不必事事求教於專案經理。
2.資訊具有自我組織的特性,當所有團隊成員都能一同分享專案經理的資訊,並加以使用時,對整個團隊的助益最大。
簡單地說,無論是專案經理或工程師,對任何成員蒙蔽資訊都會造成不滿,並延燒到其他成員而瓦解向心力。微軟也注意到資訊分享在軟體專案上的重要,當VS2005每次新增一個專案,便會對應在內建的WSS(Windows Sharepoint Services)上對應開啟一個WSS網站,不僅用於專案現狀與臭蟲數量回報等。此入口網站也支援Excel與Project(VSTS可取代Project Server),專案經理在指派任務後,將任務分配上傳到WSS網站或整合所有資訊。現實中,資訊部門常因為緊湊的接案與結案等過程,少有喘息空間,遑論有空分享資訊與文章,而且入口網站的績效報告是工作上的無形壓力,多數人不會主動面對。
開發流程與創意、彈性的衝突
微軟在VS2005工具中用於描繪軟體開發生命週期的方法論(Methodology)稱為:Microsoft Solutions Framework(MSF),涵蓋軟體開發與基礎環境部署等完整流程的中介模型(Meta-Model)。VS2005內建兩種主流的流程範本,分別是MSF for Agile Software Development與MSF for CMMI Process Improvement。顧名思義,前者適用於小型團隊所使用的敏捷式開發流程,講求測試與原型(Prototype)、較短的開發循環與持續整合等;後者則適用於大型開發團隊,注重嚴謹的開發流程,並符合CMMI(Capability Maturity Model Integration)Level 3的要求。
開發工程師的毛病是技術本位,缺乏管理的思維,當然也缺少被流程制約的性格。另一個問題是他們常被專案擠壓時間,而這些專案都是主管為了利潤而接回來的,此時,他們會為結案而犧牲各階段性流程上所需的報告、文件等成果,並視為末枝小節造成流程混亂。人們都知道工具是死的,但遵守制度考驗著成員間的默契。文⊙張瑞隆衝擊2:微軟對企業重新教育軟體工程
VS2005改變軟體開發方法論,希望由操作工具而熟悉軟體工程,但最終還是讓企業導入軟體開發生命週期,這需要時間證明。此外,過程中也引導出以前不受重視的測試工程師角色,也讓企業在拔擢人才上受到考驗。
由工具、流程,再回到理論
微軟很擅長說服人們使用工具簡化抽象作業的方法,這一點在VS2005發揮地淋漓盡致。以往人們對軟體工程敬而遠之,就是因為它很抽象,許多廠商與教育訓練中心的教學方法更是霧裡看花。以Rational為例,通常是先教理論、再說明開發流程,最後才學工具操作,也就是先抽象再具體,使得學員最後分不清楚到底開發方法對軟體有何益處,遑論結合實務(這一點我們也在物件導向的發展過程中發現)。其實這種教學方法本身並無錯誤,在大學物理學教授量子力學時,就是採用類似的方法,但大學有4年的時間讓物理系學生熟悉量子力學解題的技巧,可是在資訊界講求速成與步驟化(Step-by-Step)的胃口下,很難說服企業花大量時間作教育訓練。
VS2005的方式是反轉整個過程,由工具、流程,再回歸理論,企業只要依工具的功能按圖索驥,就可以達到部份的軟體工程的目標,滿足速成教育的現狀。而且VS2005更重要的作法是在一種工具,不同於其他解決方案,必須依各工程搭配各種工具,還有整合上的問題。這也使得軟體工程有更快的實踐管道,至於會不會讓軟體工程風起雲湧,還有待觀察,其效益也有待發酵(長期以來,可能因為基礎教育不足,造成人們質疑軟體工程的效益)。
軟體品質保證人兼無名英雄:誰來擔任測試工程師
在微軟過去的開發工具缺乏測試部份,測試工具直到現在才內建在Visual Studio中,並整合到軟體開發生命週期,使得以往測試流程與開發流程分開所造成的品質管理複雜度降低。
VS2005扶正測試人員這個角色,更讓開發過程中常因為時程控管不當,而擠壓測試步驟,甚至省略的問題被重視。但測試工程師的公正權威與專業,以及與開發人員的默契,尚需要很長的磨合期,工具扮演著中立的角色,卻很可能造成現實中兩種角色的矛盾心結。
開發者最擔心程式因測試而錯誤百出(俊美的父母不想見到醜小孩),而測試工程師必須盡力測試軟體設計的問題(測試工程師在於證偽,而非證真),作好把關的責任,兩者原本就有衝突點。以往由開發人員兼任測試工作,常會造成測試的盲點,也就是開發者常以設計的邏輯驗證自己的程式,而不是以使用者的角度測試程式(如果設計汽車的人也必須驗證汽車時,會覺得4個輪子的汽車是天經地義的事,而無法了解3個輪子時,汽車是否仍能正常行走)。
企業主管將面對的是,是否要新增這個職位?以及誰適合擔任測試工程師?現有的資深工程師提升,但他是否能保有公正的立場,勇於指出以往親密戰友設計上的錯誤?高薪外聘或外包,卻會讓專案成本更難以掌控。
軟體工程方法論中建議,測試人員應與開發人達到1:1的理想比值,確保軟體品質,這對企業而言並不務實,特別是與專案經理的任務有衝突,主管們偏好以最少的人力、物力達到最佳的品質,典型的又要馬兒好、又要馬兒不吃草。文⊙張瑞隆![]()
VS2005仍在努力的事
專案管理仍薄弱
對微軟的VS2005注重軟體專案管理,雖是初試蹄聲,但也打開整合式開發環境的改版新趨勢,從目前的開發平臺來看,專案管理的部份僅觸及軟體專案專屬的屬性上,仍無法涵蓋一般性的專案,而達到全面性的掌控,對專案經理而言,尚有一段漫漫長路。
非原生的64位元開發工具
目前的VS2005仍是32位元版,而非原生的64位元應用軟體,即使能安裝在Windows XP Professional或Windows Server 2003等×64位元版作業系統,仍仰賴WoW(Windows on Windows)的執行模式。此外,雖然.NET Framework 2.0已發布64位元版,但VS2005在32位元應用程式的受限下,造成工程師必需將開發完成的軟體部署到64位元系統上,並採用遠端除錯的方式,而無法直接在64位元系統上除錯。衝擊3:微軟的領導地位與市場教育方向
微軟因Visual Studio曾培養大量的.NET開發工程師,但每次改版都讓開發人員再三躊躇,這樣的市場回應會不會重現在VS2005上,也等待市場發酵,畢竟,只有微軟知道下一版的VS2005所有外貌。此外,此次改版已讓軟體開發回歸資訊教育的基礎課程,也就是資訊管理與軟體工程,但微軟本質是商業公司,由它來教育企業用戶,不禁讓我們思考資訊教育的問題。
供應商本身利基市場的衝擊
不可否認地,微軟發表VS2005與SQL Server 2005確實為市場帶來創新的改變與價格上重新洗牌的效應,甚至對同級產品供應商帶來營運上的危機。
微軟本身為軟體產品供應商,本身研發產品獲利最大的,應是與它本質相近的廠商,以及系統整合廠商。從供應商所提供的工具角度來看,微軟將開發工具轉為平臺化,最主要是後續能整合更多自家的產品(例如Project產品),搭配銷售以使得產品銷售量再創新高,加上一些行銷手法包裝即可。但我們不禁要思考一下,有時候產品整合確實有加值或加乘的效益,以VS2005而言,將開發工具導向團隊開發與開發方法論,的確是良好的方向。只是,軟體開發並非單靠工具即可解決,否則軟體工程在資訊科學教育這麼多年以來,以及大專院校每年近8萬名的畢業生,也未替企業解決太多資訊架構上的問題。
此外,軟體開發本質上還是創意重於標準的領域(作業系統的演進正是例子),也因此軟體專案與開發本身都必須因時與因地而制宜,這也不禁讓我們想到,到底軟體開發是否可工程化?別忘了,臺灣本地的企業並非純然地是軟體廠商,應用軟體都只是輔助商業的工具,而非核心。簡單地說,在這些企業內還有許多複雜與非資訊的問題影響著軟體專案,而且決策的主管也非資訊技術出身的人,以致於軟體開發方法論究竟能為他們解決多少問題,尚不得而知。這一點,我們也可以從近來Web Services這個技術叫好不叫座的現況看出一點端倪。
在臺灣企業對開發工具的導入看法,總是抱持著「內行者看門道,外行者看熱鬧」的心態,我們相信VS2005帶來的便利對使用工具本身的軟體工程師感受最深,但他們通常沒有決策權,充其量只是重要意見參考的幕僚,但有決策權的主管究竟對軟體工程的概念了解多少,影響著VS2005的銷售成績。而且,軟體專案開發是團隊整體協同且和諧地合作才能導致成功,從主管到基層工程師都必須有共識,而軟體工程只是扮演紀律上的規範而已。只是臺灣本地的主管必須同時被教育軟體工程與軟體專案管理的重要性,則VS2005才能發揮綜效,這是微軟本身受到自家產品創新後的衝擊。
在臺灣,許多軟體產品都是由規模不大的軟體團隊所開發的,所以極仰賴成熟的技術,對最新的技術保持保守的心態,不敢冒然引入。此外,這些企業也沒有足夠的人力、物力作嘗鮮的風險。許多技術人員常抱怨軟體專案主管在關鍵時刻作出錯誤的決策,而導致軟體步向失控的危機,這也是人月神話一書中,焦油坑問題持續存在的原因。舉例來說,主管常與客戶在茶餘飯後的應酬中便決定軟體功能甚至架構上的變動,通常這時候軟體專案的負責人(資深工程師兼任)不會在這種場合出現,只能事後被賦予更改的任務,當變更無法獲得開發工程師認同而抗拒時,軟體專案便失控了,這些問題並無法從工具中內建變更管理就可解決的問題。
微軟的VS2005創新的功能確實為軟體開發帶來新思維,但當這個工具拋入市場後,使用者的看法與應用效應,也將對微軟帶來衝擊後的思維,也就是臺灣本地的軟體開發是否適合以被教育的方式,還是供應商本身應在工具發展上具備更因時與因地制宜的彈性,也許開放源碼下Eclipse與PHP的成功,也說明著開放下彈性重於創新的技術。
這些新功能的重要改變,在於專案管理與軟體工程的改變,受益最大的是軟體專案經理,他們終於有量身訂作的工具,但在臺灣,這些主管也常是技術人員抱怨的對象,無論是客戶或受委託的廠商都是,VS2005導入後,等於把強大的工具交給外行人。
VS2005喚醒軟體基礎教育的問題
軟體工程將軟體開發生命週期視為重要的起步,但軟體工程屬於資訊教育基礎之一。如果現今軟體開發與維護所面對的問題,必須由微軟等這類廠商在工具中內建範本,反客為主來教育企業中的開發人員,那麼我們確實得思考長久以來,資訊教育講究速成的嚴重問題。企業主管面對軟體品質不佳,軟體專案高失敗率等,卻也不願意投資成本以提升軟體工程師的素質,那麼VS2005只會是舒緩疼痛的止痛藥,而非根治的良方。當然,身為與微軟同樣是工具供應商勢必受到市場衝擊,而工具更注重團隊合作與專案管理層面,勢必擠壓傳統撰寫程式碼為生的「工匠」,但微軟引發的效應成為各廠商效法的對象,而逐漸成為業界標準時,在不久的將來軟體工程師將更仰賴工具,更少創意。視窗環境搭配滑鼠使辦公室作業人員幾乎無法獨力解決視窗環境下的錯誤訊息,不正是最好的例子,操作便利性為企業帶來更高的工作效率,卻在日常維護上面對人力、物力增加的隱形成本,而VS2005會不會在此波衝擊下帶來更多隱憂?文⊙張瑞隆衝擊4:Express版永久免費,力抗LAMP
.開放源碼族群對Visual Studio Express的看法
..NET族群對Visual Studio Express的看法
微軟希望藉由Visual Studio 2005 Team System,建構完整的軟體工程及軟體生命周期管理架構,也推出精簡的Visual Studio Express版,企圖以商業軟體的品質,挑戰免費軟體市場。
Visual Studio Express版包括Visual Web Developer 2005 Express、Visual Basic 2005 Express、Visual C# 2005 Express、Visual C++ 2005 Express及Visual J# 2005 Express五個版本。
微軟在Express版初次曝光的時候,宣布在2006年11月6日以前,這一段有限的時間內,提供免費的下載服務。但是從2004年6月提供第一個Beta版本以來,無論是產品下載或註冊的數量,都大大超過微軟的預期。
尤其最近三個月,平均每月都超過250萬人次下載。因此微軟開發工具暨平臺推廣處產品行銷經理胡德民表示:「微軟決定將在2006年4月22日,正式宣佈Visual Studio 2005 Express版永久免費。」這對學生及初階工程師絕對是「利多」的消息,可以由完全合法的管道,取得Visual Studio學習與熟悉.NET程式開發。
企圖反撲LAMP熱火
ASP.NET和VB.NET是目前.NET使用者最多的族群,因此,Visual Web Developer 2005 Express版和Visual Basic 2005 Express版,是臺灣微軟Express版主打的產品,J#因為開發族群偏少,所以並沒有推出Express中文版。
在Express版安裝的過程中,會自動「順便」下載安裝了SQL Server 2005 Express版,微軟藉由搭配Windows作業系統、IIS、SQL Server 2005 Express版與Visual Web Developer 2005 Express版的組合,希望可以力抗LAMP(Linux/Apache/MySQL/PHP)熱火。
令人好奇的是,微軟所謂每月250萬的下載人次是什麼「成份」?Visual Studio Express版只能安裝在Windows平臺,即便免費,對於非Windows平臺的使用者,Express版仍然沒有誘因。
訪問多位開放源碼界的使用者,發現他們對於Express版完全免費的消息,幾乎都是「有聽沒有到」。反倒是資策會針對有意願使用Viusal Studio 2005的人,推出兩天的體驗營,課後贈送Express版光碟反應不差。可見,微軟與LAMP族群顯然是「兩個世界的人」,Express版儼然成為.NET使用者的「體驗」光碟。
開放源碼族群:「免費」不是重點
當開放源碼族群被告知微軟推出Visual Studio Express版,且即將宣布完永久免費的消息,多數人的第一個反應是:「Linux、Apache、MySQL不都是免費的嗎?」朱仲傑直言:「免費不是重點,如果工具不錯,花錢買也是值得。」
目前採用WAMP(Windows/Apache/MySQL/PHP)解決方案的佳音英語資訊部副理胡一夫表示:「會採用AMP的第一考量是『穩定』。」早期使用IIS當機率比較高,佳音英語全國擁有兩百多間分校,目前透過Apache HTTP伺服器,每天登錄約兩千筆的訂單或活動報名表都相當穩定,現在主機幾乎只有每月例行維護的時候才會重開機。
由此看來,微軟試圖以ASP.NET搭配好用又「免費」的工具,吸引PHP的族群,但結果似乎不太奏效。Visual Web Developer 2005 Express版只是工具,而PHP是程式語言,比較的基準,應該是ASP.NET與PHP。事實上,PHP也有許多免費或付費的工具,例如Zend Studio,不過,「好用的工具」對LAMP族群似乎不具致命吸引力。
更簡單地說,如果使用者選擇了Linux平臺,就不可能搭配ASP.NET。開放源碼族群不可能因為一套免費的工具,就改弦易轍使用Windows平臺,所以此舉並不容易撼動平臺的版圖。
不過,對照網華科技總經理曾守民的說法:「ASP開發者到ASP.NET是有學習門檻的,反而PHP比較容易上手。」所以,誘使目前仍停留在COM與ASP的使用者,藉由Express版的免費體驗,升級到.NET平臺可能會有不錯的效果。
Express版的限制與在臺灣獨特的立基
雖然.NET族群對Express版抱持頗正面的看法,不過,彙集開放源碼族對Express的想法,可以看出Express版對既有LAMP族群的反撲,顯然是撲了個空;然而,對初學者及尚未對平臺作出選擇的工程師,有可能發揮牽引的作用,因此,值得觀察長遠的影響。
此外,兩陣營不約而同的都很關心與好奇:「Express版能做到什麼程度?有哪些限制?會不會綁手綁腳?」針對這個問題,微軟也提出功能比較表釋疑。詳細解讀Express版與付費版本的差別之後,我們列出Express版的「十不一沒有」,由前3個「不」即可發現微軟鎖定Express版在初學者及非商業用途。
除了功能的限制,微軟也阻斷協力廠商加值Express版的機會。Express版確實呼應了眾人的疑慮-存在許多綁手綁腳之處。在重重限制的情況下,企業除了利用Express版來「練兵」,還是可以試圖從限制中摸索出足堪應付之企業級應用。
"十不一沒有,洞悉Express鎖定非商業用途"
1.不能遠端除錯:限制本機開發與除錯。
2.不能遠端存取資料庫(Visual Web Developer 2005 Express版可):主從架構的應用,限制只能存取本機資料庫;Visual Web Developer 2005 Exress版是針對Web開發,內建的Web Development Server是開發與測試的網頁伺服器,也是只能存取本機的資料,不過部署到IIS以後,想當然爾是可以遠端存取資料庫,否則就「Web」不起來了。
3.資料庫設計工具不能提供遠端「資料連接」節點:存取資料庫都限定本機,資料庫的設計當然也限本機。
4.不能支援Office開發:關於企業最常見的Office整合應用-匯出/匯入資料至Excel,再進一步製作成報表,Express版只能謝謝再聯絡。
5.不能遠端部署:Standard以上版本開發的主從架構應用程式,提供ClickOnce機制,讓使用者可以延用Windows Update的操作模式,由系統自動比對及下載更新程式,減少版本更新的困難度。Express版有勞手動「複製/貼上」!
6.不能開發行動裝置解決方案:無法開發PDA、智慧型手機應用程式。
7.不能整合SQL Server 2005:無法使用Express版撰寫Stored Procedure(預存程序),也沒有相對應的測試和版本控管功能。
8.不支援64位元編譯:Visual Studio Team System才有的功能。
9.不能協同開發:連遠端除錯與資料庫連線都不行,當然不能協同開發。
10.不能軟體開發生命周期管理:請購買Visual Studio 2005 Team System。
11.沒有Windows XP Style控制項:沒有可設定主題、顏色及漸層等外觀的使用者控制項(這只關乎系統的美醜,應該算是影響最小的)。
"Express版關閉加值介面"
看了「十不一沒有」,不難發現Express版可應用的範圍縮小很多,其實還有更重要的一重限制-Express版關閉了加值介面(Add-In API),這才是影響最大的關鍵。這點在.NET陣營的使用者現身說法中,江姓工程師也提到:「在Express版中雖然可以外加第三方合作夥伴控制項,但不支援附加組件,企業仍必須購買Standard以上版本。」
「關閉加值介面」就是協力廠商無法加值Express版的整合開發環境,例如單元測試、重構、程式碼控制及負載平衡等管理機制,都可算是整合開發環境的加值功能。若不能直接在Express版內額外加值各種多樣化的功能,那麼就無法創造類似Eclipse背後龐大的加值社群,這也是Express版不能打入「開放源碼」社群,只能算是「Freeware」的原因。
應用程式的管理機制,對於企業級應用是很重要的功能,缺乏管理機制的影響,是不管主從架構或Web應用程式,從設計、開發、測試、上線到後續的維運,都無法有效掌控,所以就絕對不適合龐大、複雜且關鍵任務性的系統。
雖然透過外部獨立工具管理也是一種解法,但不能整合在開發環境中,相對就增加了管理的複雜性,並降低工作效率。盤算起來,倒不如購買Visual Studio 2005的付費版本,這就是微軟將Express版定位在「學習」用途的真意。
"可應付有限的企業級需求"
Web-非關鍵任務性網站:
ASP.NET是目前臺灣最大宗的.NET應用,而ASP.NET 2.0是.NET Framework 2.0強打的特色之一,Visual Studio 2005針對ASP.NET 2.0增加許多關於資料處理及網站設計的使用者控制項,透過滑鼠拖拉點放,就可以設計網頁的基本架構、主題、色調,甚至完成具新增、刪除、修改、瀏覽甚至排序功能的資料表,大幅提升網站設計的效率。
Visual Web Developer 2005 Express版對於中小企業、社團或個人工作室,用以快速建立應用單純的網站,還算是合用。
主從架構-單機版的作業:Visual Basic、C#或C++的Express版,因為不能遠端存取資料庫的限制,適合單機版的應用。以中小企業為主的臺灣,對許多微型企業而言,「All in One」是很常見的情況。
再者,大型系統運用Express版作為小規格功能的獨立開發與測試,仍然可以節省開發工具的成本,只不過後續程式整合後的除錯與管理會比較麻煩。不過,實情是很多企業是使用盜版的Visual Studio,所以本來就沒有所謂開發工具的成本,這也是微軟不明說,而你我都心知肚明,Express版不會衝擊Visual Studio營收的真正原因。
利用線上論壇,可享免費客服
免費工具最令使用者擔心的是,未來使用上的問題找誰解決?或者,是否暗藏龐大的服務成本?
胡德民說:「微軟要求50位以上的技術人員進駐『微軟線上論壇』協助客戶克服問題。」其實不只是Visual Studio,只要是微軟相關的產品與技術,都分門別類有專屬的討論區,微軟使用者可以善加利用這個免費的客戶服務管道。
微軟面對的終究是「信仰」問題
雖然微軟釋出了免費的善意,並希望藉此推廣.NET技術。不過.NET使用者視Express版為免費「試用」及「體驗」的好途徑;而開放源碼界卻視其為「邪惡帝國的陰謀」。所以Express版除了平臺及功能的限制之外,還是得面對「信仰」意識型態作祟的問題。
相信未來兩派人馬的過招,必定像一齣精彩的肥皂劇,在各說各話、各唱各調的情況持續糾葛下去。雖然各界對Express版的結論還是「天下沒有白吃的午餐」,不過這畢竟是微軟「開放」策略的第一步,即使非Windows平臺無法享受到免費的好處,至少Windows使用者多了一個免費的選項。至於後續是否引發平臺轉移的效應,拭目以待。文⊙李延華![]()
Visual Studio Express版本與適用對象
| 版本 | 適用對象 |
| Visual Web Developer 2005 Express Edition | ASP.NET 2.0使用者(目前臺灣.NET最大族群) |
| Visual Basic 2005 Express Edition | VB 6使用者、初學者、業餘程式設計師 |
| Visual C# 2005 Express Edition | 進階使用者、Java工程師 |
| Visual C++ 2005 Express Edition | 撰寫驅動程式工程師 |
| Visual J# 2005 Express Edition | 沒有推出中文版 |
![]()
開放源碼族群對Visual Studio Express的看法
.NET族群對Visual Studio Express的看法開放源碼族群對Visual Studio Express的看法
![]() |
艾群科技Java工程師朱仲傑:「免費」不是重點 如果只是為了免費而用,過兩天又有另一套免費更好用的呢?如果工具真的適合,就算花點錢也會買。Visual Studio Express版是工具,但Java和PHP不是工具。若是選擇Windows平臺,那麼搭配微軟的解決方案是明智的抉擇,因為跟Windows的整合度比較好,其它的工具在整合度一定沒有它來的好,但可能的風險是你也許將無法再習慣使用別的工具,因為它已經把你給寵壞了。 微軟推Express版,對Windows平臺的使用者來說是好的;但Linux使用者不可能因為一套免費的工具,就跳到Windows平臺。 |
![]() |
JavaWorld版主Jini:關乎信仰問題 微軟免費的舉動,應該會吸引到一些學生,以及準備初學微軟解決方案的工程師,不過卻很難吸引到已經採用LAMP解決方案的族群。或許是一種習慣,也是一種信仰,縱使是免費提供,畢竟仍不是屬於真正「自由」的開放原始碼。 另外,以現有的狀況來說,使用Linux的族群,就不會想使用.NET解決方案,縱使.NET可以在Linux上面執行。現有的PHP套件與系統在開放源碼的領域,到處可以找到相關的解決方案。更何況,無論Apache vs IIS、MySQL vs SQL Server等比較,往往讓大家感慨:微軟不過是把操作介面設計得更友善和簡單罷了。但是,使用者是否會因為微軟的開發工具是免費的,而轉向到微軟陣營,我想短期之內不會。 |
![]() |
佳音英語資訊部副理胡一夫:開放源碼專案.NET不吃香
如果可以大幅縮短開發時程,會想試用看看。不過,從技術成熟度及穩定性各方面來看,目前AMP還是佔優勢,不太可能立即移轉到.NET平臺,不過,未來新的應用可以嚐試。
從另一個角度分析,在Sourceforge.net和Hotscripts.com網站上,有很多開放源碼專案,其中以PHP最多,提供非常多強大的函式庫(如:ADOdb、JpGraph、Ming等),即使經驗不足的程式設計師,搭配這些函式庫之後,也能快速的呼叫各種資料庫、畫出專業的圖表、直接產出flash動畫檔案或PDF格式的檔案等,並可視實際需求再修改函式庫,相較之下.NET的分享就很少。從這方面來分析,選擇.NET建構專案,不見得比較吃香。 |
| 華苓科技Java工程師:免費的吸引力不大 以往的Visual Studio在安裝時實在太費時費工,不知Express版如何?免費的SQL Server與IIS也沒有用,因為這兩者都太不安全,加上大部分的廠商是以Oracle為主要資料庫,伺服器也不會用IIS。Java社群擁有許多開放源碼的好用工具,既免費又可以依照需求客製化,微軟想用「免費」當噱頭,吸引力似乎並不大。 免費的背後,可能是更為龐大的售後服務。 |
|
| 朱姓PHP工程師:沒時間學新的語言 專案從形成、規畫、開發到維護,是很長一段的時間,要摧毀Linux專案並不容易。況且已經上手的開發技術,沒時間也沒必要再學一套新的。雖說微軟強調拖拉點選就可以完成許多事,但實際上都需要微調,而且工具產生的程式碼像怪獸,反而不易修改。 |
.NET族群對Visual Studio Express的看法
![]() |
網華科技總經理曾守民:有助於.NET技術的推廣 採用PHP的中小企業為數眾多,所以微軟推出Visual Web Development 2005 Express版應該有助於.NET技術的推廣。 我認為微軟更大的野心,是為後續的.NET平臺鋪路。因為未來的Vista與Longhorn作業系統,將以.NET為核心,而現階段仍在使用COM與ASP技術的企業,勢必要在.NET、LAMP或Java之間抉擇,再者,ASP到ASP.NET 是有學習門檻的,因為加入物件導向的觀念。相形之下, PHP反而容易上手,所以Express也是企圖留住既有Windows使用者。 |
| 江姓.NET工程師:功能限制顯得誠意不足 在微軟推出免費IDE前,Java 陣營因為Open Source IDE,如 NetBean或Eclipse的開放架構,有不少第三方合作夥伴,加入開發不同控制元件及附加組件,讓開發的內容越來越豐富。而在Express版中雖然可以外加第三方合作夥伴控制項,但不支援附加組件,企業仍必須購買Standard以上版本。所以Express版本功能上的限制,相較於真正「Freeware」的精神,誠意仍顯不足。 若談對.NET陣營本身的衝擊,事實上,很多.NET開發者是使用盜版,所以應該沒什麼影響。不過,對企業的資訊單位而言,Express也許是不錯的消息,因為企業比較重視版權問題,可以先下載來「Try」一下新技術。 |
|
|
|
聯銓資訊總經理林健勝:可降低成本,增加學習機會 Visual Studio Express版永久免費的策略,將讓微軟在IDE市場從 Freeware(Visual Studio Express)到團隊整合開發工具(Visual Studio Team System)都有齊備的方案。Express版讓企業可以大量減少開發工具的採購成本,一般應用軟體開發者用Express版,只需採購少數Professional或Team System等進階版本即可。 此外,Express版本對於學生團體或個人工作室來說相當方便 ,足夠應付學習和個人設計。學校也會因成本的降低,而大幅增加使用及教學的機會。再者,Express提供使用者試用的機會,套裝軟體也可以內附,客戶就不用額外購買.NET開發工具。 |
![]() |
C#開發工程師陳文翰:多了試用的管道 Visual Studio 2005與Visual Studio 2003相差很多,程式設計的新手如果未使用過Visual Studio 2003,就要直接使用Visual Studio 2005,在剛開始接觸時,可能是一大負擔。 Express版是屬於輕量級,相較於Visual Studio 2005更易使用。我覺得微軟是想針對網站的熱衷人士、業餘人士、學生、初學者,及一些站在.NET與Java之間,正考慮該使用哪一種環境的中立派人士,所特別開發的產品,透過「試用」的機制,進一步了解Visual Studio 2005的功能,增加選擇.NET的機會。 |
![]() |
鼎新電腦研發工程師解燕豪:VS 2003到2005的跳板 Visual Studio Express 版進入門檻較低,諸如初學者、學生及SOHO族,都可以藉此快速適應與學習,且能與Visual Studio 2003相容並存。因此對於熟悉2003版的開發人員,可以在既有的開發環境中開發產品,亦可在Express版學習及適應新的工具。熟習Express版後,未來就能快速地轉換使用支援高階功能的Visual Studio 2005。因此,以.NET平臺為主的企業,在不影響既有的開發環境下,利用微軟所提供的試用機制,選擇適當時機升級到Visual Studio 2005,是可考量的方法。 |
衝擊5:與SQL Server 2005緊密整合
微軟整合SQL Server 2005與Visual Studio 2005倒不是頂新鮮的創舉,Oracle早在2004年年底即率先針對Visual Studio 2003,推出Oracle Developer Tools for Visual Studio .NET,用意在提供.NET平臺的Oracle用戶,整合於Visual Studio的資料庫設計與管理工具,甚至可利用.NET開發Stored Procedure(預存程序)。相信Oracle在不久的將來,也會針對.NET Framework 2.0推出更新的開發版本。
Stored Procedure效率佳,但與廠商緊密綑綁
站在程式開發者的立場,資料庫與商業邏輯分開,資料庫純粹儲存資料,程式開發交由應用程式處理比較單純;但從DBA的角度出發,系統歸系統,資料的處理由資料庫負責比較好。雖然兩者看法分岐,不過,Stored Procedure貼近資料庫引擎,執行效能較佳,況且資料確實有預先處理的需求,透過程式遠端處理不僅耗時,而且有網路斷線造成執行失敗的風險,因此,實務上Stored Procedure有存在的必要性。
Stored Procedure有以下的好處:
1.模組化的程式撰寫:只需建立一次Stored Procedure,儲存在資料庫中,就可以讓不同的程式呼叫。
2.執行效率佳:如果需要大量或反覆執行的資料處理,Stored Procedure的執行速度會比T-SQL程式碼的批次處理快。因為 Stored Procedure 是在建立的時候進行剖析和最佳化,所以執行一次以後存在記憶體中。而程式碼則是每次執行時都要反覆地從用戶端傳到伺服器。
3.減少網路流量:即使是好幾百行T-SQL程式碼的作業,也只要透過一個指令就可以執行Stored Procedure中的程式碼,而不必在網路上傳送幾百行程式碼。
雖然微軟的T-SQL或Oracle的PL/SQL,都相容於ANSI-SQL,但畢竟不是標準,兩者都是廠商專屬的資料庫程式語言,所以,只要選擇撰寫Stored Procedure,就是緊密綑綁的開始。不過,除非有不堪使用的重大理由,否則企業選定應用程式搭配的資料庫,少有更換的情況,所以效能與綑綁的衡量,是視應用而定。
以T-SQL或.NET開發Stored Procedure各有利弊
單就SQL Server而言,Visual Studio 2005與SQL Server 2005整合,明顯的好處在於開發資料庫程式,例如Stored Procedure或Trigger可以納管。過去,Stored Procedure必須部署到資料庫「執行看看」,才知道有沒有問題,而且Stored Procedure就像一般程式,檔案可能被別人修改或不小心被覆蓋,因此有管理的需要。透過Visual Studio的控管,對於SQL Server的管理確有正面的效果。
如果企業採用T-SQL撰寫Stored Procedure,SQL Server 2005已附贈一套精簡版的Visual Studio,DBA不再需要使用陽春的文字編輯器撰寫Stored Procedure,可享有開發、測試及版本管理的好處。
若搭配Visual Studio 2005,可使用C#和Visual Basic撰寫Stored Procedure。事實上,利用通用性程式語言撰寫Stored Procedure,微軟不是原創,Java的SQLJ也是對等的設計。
SQL Server 2005的核心已由.NET Framework 2.0改寫,因此,以Visual Basic或C#開發的Stored Procedure好處包括:
1.編譯成為DLL(.NET Managed code Assembly)的Stored Procedure檔案,執行在原生的.NET Framework 2.0平臺,預估效能會比T-SQL好,尤其是大量迴圈和字串處理的應用。
2.由於T-SQL是特定用途的程式語言,無法表達複雜的邏輯,所以即使是簡單的字串處理或數字計算,可能就要寫數十行的程式表達;改由通用性用途的C#或Visual Basic可以大幅縮短程式的長度,也就增加程式的可維護性。
3.相較於T-SQL是SQL Server專屬語言,.NET是ISO標準。
缺點一言以蔽之,卻很關鍵:企業可能必須有長期保存Visual Studio各種版本的心理準備。
長遠看來,資料庫與開發工具的生命周期大不相同,資料庫首重穩定與安全,升級的頻率不像開發工具那麼趕流行,未來可能.NET Framework和Visual Studio都更新了好幾個版本,企業的SQL Server還在2005版,而Visual Studio不像JBuilder一樣有切換JDK版本的功能。因此,DBA的電腦不管改朝換代了幾次,都必須裝有Visual Studio 2005,甚至隨資料庫版本的多元化,必須裝有Visual Studio不同版本,而且光碟也不能丟掉。那麼情況可能就像現在電腦必須安裝著VB 6甚至VB 3一樣詭異。至於選T-SQL或.NET的權衡,可能又需視Stored Procedure的應用層面來決定。
升級SQL Server 2005才能享有整合的好處
資料庫的工具整合於開發環境,除了便利性,更重要的是資料庫的程式開發,終於有了管理工具。過去Stored Procedure「丟上去Try看看」的作法,現在有了測試和版本控管的機制,由此看來,兩者確實有相互「抬轎」、彼此「綁樁」的效果。
不過,Stored Procedure到底是延用T-SQL,還是改採功能強大、可以處理複雜邏輯的Visual Basic和C#撰寫,就有很多層面的考量。況且,企業既有的SQL Server是否升級到2005版又有很多影響因素,又將陷入一段長考。文⊙李延華
熱門新聞
2026-01-12
2026-01-12
2026-01-12
2026-01-12
2026-01-12







