Wednesday, June 25, 2008

怎樣才是專業的SA?

怎樣才是專業的SA?

觀看回應
友善列印 | 轉寄朋友 | 加入Furl網路書籤 | 加入HEMiDEMi網路書籤 | 加入MyShare網路書籤 | 加入funP
葉木金 2008/06/26 05:00:00 很多對系統分析有興趣的開發者,常會關心該具備什麼樣的能力,才能勝任系統分析(SA, System Analysis)的工作。

系統分析師需要學些什麼呢?當然系統分析師必須要懂技術,才能根據軟體需求提出最適合的技術觀點,也就是運用解決方案領域(solution space)的知識來把事情做正確。不過,如果系統分析師不懂問題領域(problem space)知識,將會很難導出使用者實際的軟體需求,以做出正確的事情。

通常系統分析師會透過訪談利害關係人來取得軟體需求,但如果系統分析師缺乏問題領域知識,很可能會在溝通過程中出現困難,使得所導出的軟體需求無法符合使用者需要。

然而在實際的軟體開發過中,要讓系統分析師同時兼顧解決方案領域與問題領域的知識是很困難的。在現實世界中,通常很難找到不僅懂得軟體開發的技能,又同時具備問題領域知識的人才。而且軟體開發專案本身存在時程與成本等限制,多半不允許系統分析師花太多的時間與成本學習問題領域知識。因此,要期待系統分析師學習問題領域知識是不切實際且又不符合經濟效益的做法。

如此看來,要勝任系統分析的工作,我們必須解決以上的困擾。但怎麼樣才是專業的系統分析師呢?而系統分析師的專業又是什麼呢?

系統分析的專業

知名的軟體設計顧問王克明曾經提出「系統分析師根本不需要懂領域知識」 的觀點。他提到系統分析師所需要具備的知識與技巧是,如何與領域專家(Domain Expert)溝通,並懂得如何將其領域知識轉化為抽象的軟體模型。但他認為系統分析師並不需要懂領域知識,而是必須學會「純軟體」的技術,也就是如抽 象、封裝、界面、及相依性分析等相關觀念。

王克明認為系統分析師的專業是專注於軟體設計根本的思考與學習上。基本上,筆者同意這樣的觀點,然而我也認為系統分析師不懂問題領域知識很難把系統分析做好

筆者的實務經驗顯示,在未充分瞭解問題領域知識的情況下,想要依循封裝與抽象化的設計原則、落實界面與相依性分析的設計手法,這只不過是流於紙上談兵的空 談而已。在這種情況下,系統分析師通常只能解決自己認為重要的問題,而不是利害關係人(shareholder,通常是使用者)的問題,其所展現出來的只 是軟體設計的專門技術,而不是可以真正解決問題的系統分析專業。

實際上,需求的不確定性會讓系統分析師們無法獲得到明確而具體的需求,而很難將利害關係人的問題轉化成抽象的軟體模型。問題不在於他們沒有專注於軟體設計 的根本思考與學習,而是在於對問題領域不夠了解。雖然理論上可由利害關係人的溝通來加強系統分析師對問題的理解,但實際上卻常會因為對特定觀點的忽視或遺 漏、以及知識令人難以掌握,而使得系統分析師無法獲取完整而具體的需求。

尤其是,利害關係人之間常常會對系統存在不一樣的期待與目標,以致於對問題形成不同認知。例如以策略層面會站在如何達成策略目標來看待整體企業流程,但不 見得了解執行層面會遭遇的困難。但有時候為了解決實際作業層面的問題,就必須針對企業流程來進行調整。系統分析師必須對整個問題領域做全面性通盤的了解, 才能找出最適當的解決方案,否則很容易因為遺漏某部分觀點而使得需求不夠完整。因此,要找到能夠同時解決所有人問題的具體需求其實是很困難的。

另一方面,知識的抽象性常會增添人們對它理解與掌握的困難度,除非我們能對它加以應用、重組、並親身體驗,將知識內化才能認識知識的真實面貌。

相信許多從事軟體開發工作的朋友都體認到,不管在技術上或是管理上花費多少努力,需求的不確定性往往難以去除。如果我們無法避免需求改變的發生,那麼我們 就必須增進設計的彈性。當然許多設計建模方法、各種分析或設計樣式可幫我們提昇設計的彈性,但有時情況是:即使這些東西學得再多,如果無法適當使用,也難 以用它們展現系統分析的專業。

專業為何無法展現?

系統分析師當然應該專注於軟體設計根本的思考與學習上,卻也應該了解,所謂的設計是為了解決真實世界的問題。如果不了解問題而單純專注於設計,那是不可能,也不等於專業。專業並不在於我們學了什麼技術,而是在於了解什麼問題該用什麼技術來解決。換句話說,一旦我們看不到問題,專業就無從展現

筆者常發現有些人不能發揮系統分析的專業,其實並非技術學得不夠,而是學了很多的解決問題的方法,卻忽視問題本身才是最重要的。太執著於技術如何解決問 題,卻忘了問真正的問題是什麼,以致於無法將所學與現實問題做有效的關聯,問題與方法變成兩條永不交會的平行線。當某人用某種技術設計出解決方案時,卻不 知問題為何,那我們怎麼能相信他可以解決我們的問題呢?

當然筆者相信很多人在解決問題時,其實心中對事情存在著某種假設。

人們通常會對比過去經驗以做為解決問題的參考依據,總是會假設過去成功的解決方案在類似情境中也可以成功。但有時候,類似的情境所要解決的問題不盡相同,存在問題背後的基本假設與限制也不一樣。用經驗對比來取代思考的創新並非系統分析的專業。

在不同領域中,很容易因為價值觀或思考方式的不同而對事物產生執著或偏見。因此,如果想學習可以活用在跨問題領域上的系統分析,就應該學習整合不同觀點以創新價值。具體的方法又是如何呢?我們下次再談。

0 Comments:

Post a Comment

<< Home