公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2008年4月24日 星期四

Why we need an architect? (part 2)

然而,並非有了建築師,房子就一定蓋得起來。

另外,有些建築師缺乏常識,只會設計,但缺乏人性化。像是台北市改建的圓環,就算東西蓋出來,但還是不能用。因此企業資訊系統的建置,也並非有了架構師設計就一定會成功。

根據我同學多年工地主任的經驗,如果按照建築師設計的圖直接蓋的話,是沒有房子可以蓋得起來的。因此在建造的過程中,往往需要按照工地的需要,適時的做一些修改與修正。資訊系統的建立過程也是一樣,系統架構師所規劃的架構在程式實作的過程當中,可能會需要按照實際環境做一些細部的調整--畢竟架構是根據需求建立的,但專案往往會有一些隱藏的變數,需要在開發的過程中才會發現。因此好的架構規劃很重要,但是有經驗的、付責任的開發團隊負責人--專案經理--也是相當重要。但就像是工地主任要修改藍圖之前需要跟建築師做確認一樣,我不認為應該由專案經理來主導或是決定規格的修改是一件正確的事。但很多案子中,專案經理為了討好客戶或是老闆,在開發的過程中任意修改規格,往往是造成最後失敗或是無法結案的原因。

建築學跟軟體工程另外一個差異,就是在於生命週期。以現在的建築技術來說,花兩年蓋好的大樓,住個50年應該是沒問題的。而一般的資訊系統可以使用10年就算超長壽的,換算成蓋房子的時程的話,應該是在半年左右就需要結案。以台灣一般MIS人員的工作量來說,這一個目標似乎是不容易達成的,因此我覺得對於企業而言,資訊系統外包才是合理的做法--既可以兼具開發效率,又可以減化MIS人員的工作。

但很可惜的是,雖然我們是以建築學的方式來看軟體工程,但是使用者卻是以坐計程車的角度來看待及使用系統。當你買房子的時候,房子的座向、大小、格局都是按照事先設計的藍圖去設計,因此在房子蓋好之前,你就必須要事先確定好規格,建商才可以按照需求進行客製化。但是轉到企業資訊系統來看時,很多企業都以為成立MIS部門的用途,就是要可以隨時客置化系統,不了解系統的建置與蓋房子是一樣的道理,把資訊系統當成計程車使用--今天要去台北、明天要去高雄、後天要去紐約--殊不知,紐約是要坐飛機才可以到的。對於企業而言,我覺得MIS部門應該比較像大樓的管理委員會。我想你既然不會想要花太多錢在管理費上面,就不要叫管委會幫你蓋房子的,不是嗎?

2008年4月19日 星期六

Vista Service Pack 1 & 新計劃

今天安裝了Vista 64 中文版的Service Pack 1,更新的過程稍微有點久,不過裝完之後"感覺"開啟程式的速度有比較快,大家可以安裝看看。

同時,因為新的技術不斷的出現,目前我這裡也整理了不少的資料,最近正一邊寫書一邊做整理。下半年可能會考慮將新的技術,透過Blog以及.NET Magazine電子報的型式發表,這樣大家可以用比較快的方式獲得新的知識,預計在這一個月中先發幾篇試試看。

除此之外,目前也計劃跟維基百科一樣,把一些書放在網路上直接編撰,我會先擬好大綱,讓有興趣的人大家跟我一起來寫,讓大家都可以有隨時獲得正確的新知識的平台。下半年預計第一本要做的是Silverlight的書,詳細的工作計劃正在規劃中,如果你有興趣或是有建議的話,歡迎跟我聯絡,謝謝。

火星文現象

繼翻譯名詞 "親類別" (parent class)之後,或許是不想輸給董大偉先生那篇滿是 "控件" 的研討會Slide,蔡學鏞先生的研討會大綱中又再度出現 "函數編程" (Functional Programming) 的新名詞翻譯。看了幾篇不中不台的東西之後,想到之前看過的Blog中的一段話:

引述 Referendum

(前略........................)

國家要在世界歷史中留名
需要的 絕對不只是經濟
文學 藝術 文化 才是能夠萬古流傳的
知識份子的出世想法 或是追逐短期利益
應該不會是讓台灣留名的方法

若是我去大陸講研討會,或許為了讓聽眾可以聽懂,我會使用 "軟件"、"控件"、"編程"、"源代碼" 等名詞幫助解釋;但這裡是台灣,實在沒必要用外來語把一個好好的內容搞成火星文。如果是在自己的Blog中隨便寫寫就算了,拿到專業研討會來講就遜掉了.........

比較一下:
"控制項" vs "控件"
"函數式程式設計" vs "函數編程"
"網路服務代理元件" vs "網路服務代理"
"程式設計的藝術" vs "編程之美"

左邊的不是清楚而且有格調多了,為甚麼好的不用,一定要寫一堆火星文? 這裡是台灣,難道你以為會有大陸人來聽研討會啊?

2008年4月14日 星期一

Why we need an architect?

最近微軟發佈了很多的新技術架構,很多朋友紛紛的問我相關的問題;加上自己最近看到的一些事,與跟百敬閒聊,讓我有了一些想法。

很多人喜歡將軟體工程與建築相比擬,事實上,兩者之間有許多相似之處。建構一個系統,其實就跟蓋房子很類似。一般鄉下人家,使用磚頭就可以堆出平房來,但是你沒辦法用磚頭堆出樓房出來,因此蓋樓房我們需要使用鋼筋混凝土的結構。但若是要建立的是摩天大樓的話,用一般鋼筋混凝土的技術會需要消耗太多的時間,因此你會採用鋼骨加上預鑄的工法,才可以快速建立摩天大樓。但你不會使用鋼骨去建平房--成本太高,而且蓋起來的房子應該也很奇怪。

軟體工程也是一樣。在建立系統的時候,你有許多的技術與架構可以去選擇,但若是你選擇了錯誤的架構,就好像用磚頭去蓋摩天樓,或是用鋼骨結構去蓋平房一樣--最後不是樓塌了,就是30萬的房子用300萬蓋了一個四不像的東西出來,結果都是不能用。

前一陣子朋友的公司要建置一個內部使用的系統,因為發生了一些問題所以請我幫忙看一下。我稍微看了一下,一個2、30人用的內部系統,使用ASP.NET加上AJAX的技術開發,並且將資料存取的動作都使用ADO.NET技術製作成資料物件,然後使用在網頁當中--看起來好像是相當合理的做法。

但是仔細一看,問題紛紛產生:

1. 每個網頁中都有自己的資料存取物件,但是因為邏輯都不同,無法重複使用。

    建立資料存取物件的用途,主要應該是著眼於可維護性以及可重複使用性。以這個系統來說,在不需要重覆使用的前提之下,若是要使用程式碼建立資料的存取邏輯,直接寫在網頁的程式中一定會比較容易維護;而使用TableAdapter建立資料存取物件又會比使用程式碼容易維護。

2. 20多人使用的內部系統,使用ASP.NET技術開發。

    另外一個程式設計師容易陷入的迷思,就是"Web Application容易部署與維護",因此甚麼阿里不達的系統,全都要做成Web Application。在大部分的情況之下,若是你的使用者散居各地,無法有效控管,而且必須要透過網際網路存取公司的資源時,我必須要承認這觀念是正確的。但是Web Application畢竟是屬於集中於Server端執行程式的架構,因此把所有的程式都使用ASP.NET設計之後,再加上Session技術的濫用,造成的結果就是一堆效能很差、不穩定、再加上不容易控管的系統。

    你以為使用AJAX或是Flash、Silverlight這些前端技術會分散Loading嗎? 如果你Server端程式執行就慢,前端的這些技術也分散不了太多的Loading,只會讓你的程式執行更複雜,更不容易除錯,甚至於發生更多莫名其妙、無法解決的錯誤。在加上不穩定的Browser,這樣上線的話,我看MIS的年終獎金應該是拿不到了。

    既然是"內部系統",因為User端的環境是在掌控之中,其實大部分的系統可以考慮使用Windows Form或是WPF 的技術開發,再透過Click Once更新就可以了。若是有可以共用的邏輯,再考慮製作成單獨的WCF服務,這樣可以縮短開發時間,架構上又兼具有延展性。

這只是一個小個案,看得出來我們有很多蓋房子的師父,但很多企業中卻沒有很好的系統架構規劃,所以常常會做出一些匪夷所思的東西出來。但是有了架構師也並不能解決一切,因為還有很多技術以外的因素(預算、政治.....),對系統的開發過程影響更嚴重。但是至少有了一個正確的架構之後,將來就算發生了一些五四三的事,那頂多就像房子蓋到一半建商跑掉,換個建商還是可以繼續完成--也不至於等到房子蓋好才發現不能住人........

2008年4月3日 星期四

問題與回應(4/2)

1. 請問一下為什麼恆逸沒有 "之前我在恆逸上課,現在XXXXX" 的廣告?

=> 雖然不是技術問題,但應該滿多人感興趣的..........

      我想可能是因為老闆覺得我就是 "之前我在恆逸上課,現在我在恆逸教課" 的活廣告(囧),所以就把錢省下來幫教室更新設備、提供更舒適的休息區(亞太首屈一指!),讓大家可以在累了一天之後,可以在無壓力的環境中進修學習。

要知道一則廣告預算要以億來算,給電視台賺去不如回饋給大家,不是嗎?

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)