軟體開發工具越是易用強大所以不需要作設計?

** 本文同步發表於 FB 社團-軟體設計鮮思維 **

昨日與一位業界的前輩喝咖啡聊聊 (兼談合作事宜),他是國內頗負盛名的 CMMI 輔導認證的顧問。

雖是相當資深且擔任多家知名大企業的顧問,但仍孜孜不倦,時程總是排滿,利用空檔時間至許多技術課程單位當學生,藉此了解下業界採用所謂的方法論/新技術...等。

他分享了兩件軼事:

  • 他至台大上 C#.NET 語言入門課程,有約40來位的學員上課。
    講師竟然跟他們說,現在系統開發根本不需要設計,只要會操作工具、拉一拉畫面,簡單的下幾個指令,就可以很快速的產出應用程式。
  • 他上某單位現在最夯的 SCRUM 開發流程課程,講師拿它與其它方法論比較,甚至還嚴重的批判,而其中更是包括了 CMMI (顯然誤解,它並非是流程方法論)。

    這位前輩很感慨甚至有些不悅,尤其是批判到他的專業領域-CMMI,明明就只是一種制定達成目標的框架而已,怎麼會是拿來與 SCRUM/Agile 等相提並論呢?

他認為講師應該是擺在以該課程的主題為中心來傳授相關知識與技能的,但怎麼能對自身並不了解的領域妄下斷論/批判,進而傳達非常不正確的觀念,這豈不是誤人子弟呢?!

哈,其實軟體業沒啥新鮮事,這些見聞也都早已習以為常了。尤其是隨著系統開發廠商提供的工具/機制越完善,雖然可以大幅減低開發的時間,但卻也造就了軟體人員的墮落,過度地依賴這些工具的使用,卻少有思考軟性較具本質性「虛」的那一面向

我與那位前輩稍微解釋下,針對第一點,講師只要稍微修正下講法即可。不是不做設計,而應該是說抱著「簡單設計 (simple design)」的態度 ,事後再佐以「重構 (refactoring)」來逐漸修正調整,快速的 I&I (iterative & incremental)以構成設計/實作一體的開發循環。

設計是必然會做的,但該講師顯然誤解所謂的「設計」是那種以往 (其實現在也很多單位是這樣做)要做仔細規劃、產出一堆文件卻不適用實作的 Waterfall 方式。

至於 CMMI 與 SCRUM/Agile/RUP 等方法論之間的關係,我在9年前就曾發表過「利用 UML 類別圖表達 CMMI Content 與範例說明」。

其實簡單的說,因為 CMMI 只是制定各等級所謂成熟度的目標框架,但它並沒有提供要如何 (How-to)達成 (achieve)的作法;如何達成正是這些方法論可以提供的,所以其實把 CMMI 視為 Interface,上述方法論視為是實現 (realize)該 Interface 的具體性類別 (concrete class);兩者可以形成很好的互補,並非是拿來比較、相互衝突的。

關於「CMMI」幾個問題的自我提問

  • 1986年由美國卡內基美隆大學的「軟體工程學院(SEI)」受到國防部委託而發展的。可以幫助軟體開發者改善軟體流程。
  • CMM軟體能力成熟度模式(Capability Maturity Model for Software,簡稱CMM或SW-CMM)
  • CMMI整合能力成熟度模式(Capability Maturity Model Integrated,簡稱CMMIsm)

因為前天看到國內某篇資訊雜誌訪談現任Borland的CPO(Chief Process Officer) Bill Curtis ,他對國內政府帶動軟體資訊產業走向 CMMI,深表期許與贊同。

Curtis 認為:CMMI導入,管理議題 重於技術開發。
又,記者問了一個問題:在CMMI的流程架構下,是不是很難凸顯個人的能力? Curtis 的回答是:不會,反而可以塑造出優秀的人才,寫程式不只是要凸顯個人的能力,而是在流程和專案管理方面的發揮。

整篇文章看起來,CMMI 是非常重視製程的品質與流程的管理。

因為政府輔導因素,還有,最重要的是,未來政府資訊系統的標案,會要求軟體廠商需具有 CMMI 認證的資格。所以,國內許多資訊廠商,趕忙著 “宣布” 他們已經通過了 CMMI Level-2 or 3,甚至朝向 Level 5 的終極目標邁進。

原來有些納悶,軟體開發工具大廠 Borland 會如此的支持 CMMI 的推動?
思考了一陣子,站在 Borland 的角度來思考與其的商業利益,就蠻清楚了。Borland 約兩年前陸續購併了許多輔助專案管理工具的廠商,包括當紅的 UML 塑模工具 Together,將這些工具整合成為軟體專案開發的 Total Solution,稱為 ALM( Application Lifecycle Management)。而為了推動 CMMI 的軟體廠商,的確是需要專案管理與開發工具的利器,這就正符合 Borland 的商業目的,會是成為最具 “潛力市場” 的目標客戶群了。

所以,對於 Borland 推動 CMMI 軟體工程實驗室,我就不會覺得意外了。
不過,有幾個對 CMMI 的一些問題,仍存於我的心中:

  1. 既然是稱為 “軟體能力成熟度”,那麼,除了可以協助管理與製程的成熟之外,專案開發團隊的 “成熟度” 是如何去學習與成長,以提升其成熟度?
  2. 政府的標案(以前輔導過幾家軟體廠商,就近多少知道一些),很奇怪的是,永遠時間都很趕。一個上億的案子,要求在幾個月內就完成含系統分析、設計與實做及建構部署。
    若永遠就是有哪一個先決幾近無法改變的事實:時間就是不夠,那麼,如何能在如此短的時間內開發出 “成熟” 的系統呢?
軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal