軟件的品質就像內褲一樣重要~

這是上上個星期 (9月底),我至大陸深圳「軟件園區-產學研究中心」教授兩天的「雲端與安卓系統開發與實務-案例研討」課程時,在他們大樓的男廁所小便時看到的這一段話:「素質就像內褲,雖然看不到,但是很重要。」

天哪,這麼的俗卻又如此的貼切,恰好可以用來解釋軟體的「結構設計」,這一向被軟體開發人員所忽視,但卻才是維繫系統的主結構根基。

「結構 (structure)」是系統組織的一種方式 (A manner of organization),每一種可以呈現完整全貌的事物,內涵必然是由許多的元素 (elements),以某種的形式所組合而成。

以「咖啡」為例,它可以是被視為一個整體,其結構組成的主要元素有 「咖啡粉」,「糖(optional)」,「奶精(optional)」,「水」 等。藉此一個小例子可以知道:整體物件是由內部眾多不同種類的元素所組成的。

而內部的組成元素也是由其它更細部的元素所組成,例如,水的結構成分是由 H2 + O 所組成。如此也可以知道:整體物件內的組成元素是屬於具有層次的階層式結構 (hierarchical structure)。只不過,是否有必要一直追蹤到更細部層次的組成元素,其實有待商確。例如,煮咖啡會在乎是否要加糖、加奶精,但卻沒有必要分析水的結構(H2O)吧。

小至被視為是單一的物件,但其實仍是由眾多更小的元素所來組成;大至所謂的「系統 (system)」,則總成的元素更是多種類,且可能需要探究至更細部的階層內。

例如「工作流程 (workflow)」系統,大的組件可能有「流程引擎 (engine)」,「流程定義 (process definition)」,「規則 (rule)引擎」等主要的元件 (component)。而「流程引擎」元件內則可能由「process instance」,「activity」,「task」等更細部的元素所組成。

「結構的分析與設計」,正是在探究上述所謂的組成元素。分析得好與否,影響到的是耦合度 (coupling)問題,也就是比較與「彈性度」、「延展性」、「再利用性」等議題有關,但與系統的實作關係卻沒麼大。

可惜,由於現今應用系統的開發越形走向速食文化,只重視「光鮮亮麗」、「華而不實」的表象。至於「內涵」,誰在乎你!有沒有穿內褲,會不會影響到長期的身心狀況,沒那麼重要啦。

大陸深圳軟件課程教學行-食宿篇 (20101205~09)

鑒於去年對岸該企管公司所安排的住宿旅社甚為不滿意 (窄小且周遭環境差,雖然還算乾淨),這次在合約中就有要求起碼要安排有商務級的旅館。所以對方承辦人這次幫我們訂下了這棟位於深圳南山區的「新年酒店」 (大陸好像許多商務級旅館都稱叫做酒店)。
深圳軟件教學行@新年酒店

該飯店應該是有四星級左右的水平吧。整棟大樓高達 31 層樓,而且是位於鬧區內,一轉出去就有許多餐館與百貨公司等,要溜達用餐都很方便。

對方幫我們共租了三間雙人房,而且是位於不同樓層。 (我住 27F, Ringle 15F, Arthur 28F,這樣好,落得清淨。) 房間內擺設也算簡單,一張大床、一台貼壁的液晶電視、一張小辦公桌、一套淋浴的衛浴設備。雖然我住在高達 27樓層,但是晚上俯瞰外面,根本也沒有如台北這樣的燈水馬龍一般,沒有像樣的夜景,所以也不想拍照。
閱讀全文 »

大陸深圳軟件課程教學行-交通篇 (20101205~09)

今年的三日課程,主角當然還是 Ringle (對方是因為他所出版的書籍才找上我們的),我算是當個 "小弟" 賺些教課的零用錢。另外也同時找了 Arthur 一同前往,想說算是另類的教學兼大陸旅遊行。

鑒於去年搭機是從香港入境再搭乘小巴士到深圳,還要多花上快兩個小時,實在相當麻煩,所以今年我們就提早訂購直航深圳往返的班機。而 12/05 (星期日)則只有華航的班次。
深圳軟件教學行@華航班機

我實在不喜歡搭乘華航,但也不得已。結果 14:30 的班次,我們約 13:00 抵達桃園二航廈機場,竟座位已滿,所以櫃台小姐詢問我們意願,是否轉抵達到香港機場再由他們提供的小巴到深圳我們所指定的住宿飯店,同時也免費升等商務艙。Ringle 問我意見,好吧,我還從來沒有坐過商務艙,且又不趕時間,體驗一下商務艙的感覺也不錯。

閱讀全文 »

大陸深圳軟件課程教學行 (20101205~09)

據 Cathy 說,去年我們在大陸深圳教學的品質還算頗獲好評,被學員評分有 90 餘分 (有與該連洽的企管公司簽約,若學員評分不及格,則餘下的一成尾款無法給付)。所以,我們團隊與該大陸對岸的企管顧問公司合作也頗為愉快,今年又再一次續約,至大陸深圳軟件園區、中國最大電信業「中國移動」的子公司教授軟件開發的課程。

這個月初簽妥合約,並確認了本次教授課程的大綱,授課日期為 12/06~08 三日,授課對象與地點均與去年相同 (深圳軟件園區內一棟圓形的建築,好像是北大研究院吧)。

原委由 Cathy 給的課程大綱對方並不太滿意,客戶單位這一次想瞭解互聯網 (Internet)的系統開發模式 (著重在開發流程),以及開發人員角色及相關使用的工具應用與開發產出等。

聽說客戶單位對 Java-based 的實作技術相當純熟,所以這次我重新規劃了本次教學課程的大綱與方向,以 "推特 (twitter)" 微網誌系統的案例 (Case Study),來滿足上述需求,並採用 Java Spring/Hibernate 來實現該系統的實作。

這裡還是不得不佩服 Ringle,我的要求請他實作上述技術並將過程寫成教材。他不眠不休,就在上飛機的前一天,一同與 Arthur 花了三天就真的完成了百多頁的教材,還貼圖展現整個實作的過程。然後再配合我做的使用案例需求模型、類別的結構模型,以及相關技術的理論文件,給予對方的講義內容也將近厚達兩百多頁,並準備於三日共 18 小時的課程教授完成。

(** 由於該案例還挺有示範意義的,可以展現軟體開發過程等相關的步驟與主要產出。所以徵詢 Ringle 的同意,我打算將這些教材整理一下,然後陸續發表在個人的部落格內,以及相關的網站論壇。)

好啦,交代完本次教學行的緣由,就準備撰文並貼圖記述這幾日在大陸深圳的生活囉。 這一次我打算分成「交通篇」、「教學篇」、「食宿購物篇」等主題性的文章。除了分享算是旅遊與授課的經歷,也同時是個人的生活日誌。

※ 延伸參考
 o 深圳軟件三日教學行(2009/12/20~23)-01
 o 深圳軟件三日教學行(2009/12/20~23)-02
 o 深圳軟件三日教學行(2009/12/20~23)-03

又是資策會的課程@關稅總局

與「資策會」幾年來沒有往來,結果這個月反而教授了「資策會」兩個單位的 UML 基礎培訓課程。上一次那個課程是在資策會的教育訓練中心,而這次反而是到其客戶單位-關稅總局 授課。

只有三個小時、應該算是基礎性的概念與工具介紹。地點是在塔城街那邊,導航設定到達地點後才知道原來是那個「串珠街」的隔壁街。

中午在塔城、長安西路旁,有家「四川麵王」,點了紅油抄手與小菜。小辣 (可以指定)的抄手很好吃耶,讓我有些訝異,長這麼大竟然沒吃過這種東西啦。

提早了半個小時到,沒想到進到大樓後 (當然有辦證件),還被某一個看來應該較高層級的老主管叫住做身分盤查。挖哩,我到過許多軍方單位也從來沒有被這樣質詢過哩。

結果害我被驚嚇到,所以一開始上課時正襟危坐,認真的授課。問題是,當我認真時,就會很容易照本宣科、依照教材唸著給學員們聽。這樣的氣氛最沉悶了,其實學員也不容易得到想知道的。這樣經過了 30 分鐘,總算慢慢放開,再透過互動的過程中以了解關鍵學員的需求,再來調整授課內容。

喔,與上一次授課的團隊也有些類似,客戶單位已有了具國際標準的 XML 資料交換規格,他們希望了解如何透過 UML 工具自動轉換至類別 (class)的結構圖。

閱讀全文 »

一整天台中中科院的軟體授課 (2010-08~)

今天一整天,是到位於台中西屯區的「中山科學研究院」教授同是 18Hrs 的 UML 暨軟體設計基礎培訓課程。

早上 5:00 準時起床,刷牙梳洗完畢後開車到「麥當勞」買早餐+咖啡外帶,5:45 從「中和交流道」上北二高。一大早開車上高速高路的好處就是,車子只有稀疏的少數幾輛,所以不太需要與之爭道、超車,順暢得很;尤其是過了竹南算是中二高的路段,那更是看不到幾輛車,不知不覺就會開超速的狀態 (不方便提開到幾公里)。所以,整 7:00 就下了「沙鹿交流道」,我那個導航所標示的距離約為 142 公里總長。

下交流道後往大雅方向開過去,開一陣子後導航有指向往西屯的方向。反而下來後因為陸續有上班的汽機車,且速限可要注意,我記得幾年前就是這個路段被開了一張紅單。所以花了半小時的時間才到達導航所指的目的地。

因為提早到達 (這樣也會比較安心),所以先在車上小憩一下,然後約 8:05 時打電話給承辦人。結果啊,等了半個多小時都等不到人,原來,我等的那個地點不是中科院的會客室啦。還有,我那個 TomTom 導航,好像很順的指到目的地位置,但其實給指錯了,竟然是指到「逢甲大學」的側門啦。

一番折騰,再電話聯絡,才總算找到地圖上根本沒有地址的中科院,辦了證件、走到要上課的大樓,已是約 8:45 左右。本來以為遲到了,結果啦,他們說是 9:00 才開始。所以,我幹嘛那麼早起? 我幹嘛找錯地方,多耗上快兩個小時耶。

「中科院」應算是個軍事單位,其實早在五年多前就已經在龍潭總部那邊一、二所教過課,不過台中這邊倒是第一次。上課的學員可都是掛有軍階的,最少都是從少校起跳的,所以我都嘛稱呼各位學員長官好 (以前退伍時是中尉三級)。

上課的教材其實與我上星期在「資策會」的內容一模一樣,不過,我從來都不會照本宣科照教材授課。先前提過,我會先觀察學員們的反應來調整內容與進度,也會視他們現實上的需求動態變更上課的內容。

所以,整個課程教授下來,反而是從軟體開發流程與開發腳色的定位開始切入,再來才提及主要的開發產出,以及這些產出之間的關連與橋接。最後,才切回到教材的正題,並示範當場在課堂上做的簡單訪談,展示如何快速的建立需求分析模型,並準備轉而到下一個開發階段。

還不錯,各位學員長官們的接受度還蠻高的。主要是他們一般已具備有 OOP 實作的底子,實際上也已開發了不少軍方客戶委由開發的專案。所以甚至對於 EA 這類 UML 工具,示範一次他們很快就可以上手,還直說這個工具還挺容易用,所以,呵呵,他們也準備要編一筆預算來採購我們所代理的 EA 工具。

一整天下來的授課,講話足足有六個多小時,不過還挺不錯的感覺,精神都還挺好。尤其那個承辦人算是對今天所授課的內容與講解的觀念,給予挺正面的肯定。還說勒,先前他們有請過某科技大學的教授講解 UML 觀念,不過今天這樣聽下來,總算對其背後蘊藏軟體設計的觀念,才真正有了一番認識。哈,這算是鼓勵還是?....

閱讀全文 »

軟體思維顧問

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

Personal