今(09)年初,應中山大學資管系主任鄭炳強教授的邀請,到他們學校做了一場演講。由於筆者與鄭教授原先並不認識,是透過台科大資管系主任李國光教授聯絡到筆者,因此,鄭教授邀請我在演講前先與他碰面、共進午餐,並且藉這個機會交流彼此在軟體工程方面的心得。
在那次午餐約會中,我們聊到了系統分析專業這個議題。鄭教授表示欣賞筆者寫的〈系統分析專業的七種能力〉,還曾在課堂上向他的學生推薦這篇文章…與鄭教授交流互動的過程中,也讓筆者得到不少收穫,回到台北後,一直想找機會分享這些收穫。
由於我一直想找機會回應那篇文章的讀者意見,也就是ZDNet讀者對於那篇文章的前半段〈怎樣才是專業的 SA?〉的一些留言,筆者發現這次行程的收穫,正好可以讓這篇文章有一個很好的起點。
軟體專案開發的四個困難
在言談之間,筆者可以感受到鄭炳強教授對台灣軟體產業發展很關心,但他對一般軟體從業人員忽略軟體工程的基本修煉卻很憂心。
他觀察到人們往往熱衷於追求新技術,而總是忽視軟體工程的基本原理。他還指出軟體開發與一般產品開發有著一個根本上的不同;即,知道開發方法還不夠,必須更進一步了解方法運作背後的原理。因為不了解原理就不能針對問題進行正確的分析與設計,更不用說可以有辦法順利地解決問題。
這也就是軟體專案比其它專案還要困難的地方,他認為軟體專案開發主要有四大困難,也就是溝通的困難、問題本質的困難、整合的困難、以及團隊合作的困難。後來筆者在他寫的書中看到更為清楚的對照;亦即「電腦對人腦、答案對問題、程式對系統、個人對團隊」。
以企業的觀點來看,資訊系統是企業為了因應環境挑戰而發展出來的解決方案(註1),所以系統分析師必須找到可以解決真實世界的問題的解決方案,這是屬於解決方案的結構化範疇。然而,這意味著系統分析師必須比系統使用者更了解他們的問題,這些問題多半是半結構化,甚至是非結構化的,因此困難的是如何讓結構化的解決方案領域、與非結構化的問題領域進行溝通。

圖 1問題領域與解決方案領域
因此,建置一個可解決使用者需求的資訊系統,系統分析師必須要能發現藏在需求背後的真正問題,否則開發出來的系統往往很難真正解決系統使用者的問題。正因為如此,系統分析師不能只考慮到技術層面,也不能把問題只是簡化成系統使用者所提及需要的功能,而必須將它們放在一起,統合思考以形成能夠相互協調的系統。
如果想要達到上述目標,光靠個人單打獨鬥當然不夠,必須藉由團隊合作的力量。(未完,請按下一頁繼續)
繼續閱讀: >>

