最近接到新案子
不是叫桃子當以往的Programer 或 SE
改成要當SA
這下可傷腦筋了我...
人家喜歡當SE說.....

上網去查了一下相關的資料
就當教育自己~也留個紀錄吧<( ̄︶ ̄)>

(文章出處:http://blog.xuite.net/thoughtofgenius/thought/16712980)

[SA,系統分析師]

SA是 System Analysis 的縮寫,一般稱為系統分析,主要的工作就是透過一系列的分析工作,把客戶想要的結果產生方式,以各種文件表達出來,讓開發團隊可以根據這些文件實作出這個結果。

這樣的解釋比較文縐縐一點,用個通俗一點的方式比喻,就像是要做出一道宮保雞丁時,就會有食譜一樣,裡面會介紹需要的材料及做菜的順序,然後裡面也會強調要以怎樣手法才能產生出某種效果,以促進色香味。

這樣的過程裡,SA是較為偏重於在工作流程和處理邏輯的,透過SA,開發團隊才可以理出整個系統的架構,一種做事的脈絡,以及系統和工作間的關連性,最重要的,是這些結果都會被SA呈現在文件中,而非放在少數人的腦袋裡。

SA不僅止是要針對電腦裡的東西去運作及規劃,還包括了現實世界裡的實體流程及組織。在很多的情況下,配合新系統的組織及流程,是要由SA來執行的。總結起來,在一個開發案裡,SA執行以下的工作:

· 藉由系統需求書,使用者的現有標準作業流程來建立出符合期望的新作業流程及搭配流程的系統功能及模組規劃
· 依據功能及模組規劃案,定出初步的資料庫內容及系統與使用者間的權限搭配規範
· 定出各個軟體零件的規範,如物件,函數庫,...等等
· 設計新的標準作業流程,並把系統功能或模組綁入這些流程中
· S.A依據客戶的環境及需求,尋找合適的SD來搭配

而SA也有以下的特色:
· 對於系統在怎樣的環境及用什麼開發工具,並不十分在意,良好的S.A產生出來的文件,使用不同的開發工具都應該可以完成,產生相同的結果,但那一種最合適,由SD決定
· SA偏重於流程及執行邏輯的表達
· SA著重於軟體邏輯,對開發工具的學習並不是十分重要,所以會一種語言即可,主要是以該語言工具來實踐邏輯觀。
· SA一定要有全局觀,也就是不能拘泥於一個角度或是一個局部去思考問題,這一點是尋找優秀SA時最困難的。因為在規劃模組及功能時,一定要同時考量到所有直接相關及間接相關的程序及邏輯問題,因此要有全局觀。

相較於SD,SA更側重在邏輯及工作順序搭配的表達,SA並不需要去關切使用什麼作業系統或是什麼開發工具,如前特色所述,好的SA文件,可以用任何一種開發工具來實現。當然,SA不受限於IT技術,但卻會有專業領域的限制。

很少有SA同時專精於數個領域的,熟悉汽車業運作規範的SA,在金融業的開發案裡,就很難討好,反之亦然。但SD沒有這種限制,基本上SD可以和任何行業的專案開發團隊配合運作。

會如此的原因是SA是偏重於流程及管理分析及重新再造工作的。而作業流程,除了少數領域裡共通性高,在核心流程上,是需要長期鑽研的。前面提及的汽車及金融業就是一例。

所以,一個SA必需具備以下的能力,資歷及專業訓練:

1. 至少熟悉一種程式開發語言
2. 熟悉軟體工程,對於開發工具的元素及特色熟悉
3. 對管理制度或作業流程設計熟悉
4. 熟悉UML或類似的系統描述工具
5. 邏輯能力良好
6. 良好的溝通能力,主要作為瞭解需求之用
7. 相關的業界熟悉度

在三者之中,SA是最接近PM的,所以SA在做生涯規劃時,不妨以PM做為下一個發展的專業目標。

[SD,系統設計師]

一般來說,SD在生涯規劃裡,並不是SA或是PM。當然,一定要硬來一次也沒有什麼不可以,但要走這條路,就要趁早轉職,因為SD畢竟是較為幕後的工作,在與客戶的溝通協調上,並不會有太高的要求,也較不需要公司管理層面的全局觀。

表面上看起來,SD沒有SA那麼多的工作要求,但實際上SD是最需要天賦的工作,不管是畫面的構成,操作的手順及調整,甚至於元件的定義及物件的規範,全都需要一些天賦。很多軟體,功能很強,但怎麼看怎麼不順眼,或者怎麼用就怎麼憋扭,功能帶來的效益,全都被這些毛病給遮蓋掉了,這就是SD的問題。

另外,SD也扮演了系統最佳化的推手。SA所規劃出來的要求及佈置,都只是邏輯上的構思,在不同的工具上,可能有更好的方法可以表現,也可能會難以展示,這都需要藉由SD對使用環境及開發工具的瞭解,來進行調整和規劃。

舉例來說,同樣是一套財務軟體,在WINDOWS XP,MAC,X WINDOWS下,就會有很不一樣的展現模式和技巧。如果再搭配上不同的開發工具,如C++,JAVA,.NET,PHP,...那差異更多。對SA而言,這些東西他都不用去考慮,但SD就不同了,這些不同的地方,並不僅僅只是如此而已,有時還會包括了開發成本及時間問題,SD的重要度,由此可知。

在一個客製化專案裡,SD的工作內容如下:

· 設計畫面元素規範
· 設計頁面結構及規則
· 設計系統操作畫面,並編定欄位規範及防呆處理
· 設計權限管理與系統操作機制
· 撰寫使用手冊
· 調整DB之各項定義,使其符合畫面欄位規範及操作搭配
· 配合SA撰寫系統開發文件,供程式師CODING之用
· 撰寫UI(使用者介面)測試計劃書

而做為一名稱職的SD,以下的條件,是必要的:

1. 至少對一個作業系統極為熟悉,對於這個作業系統的各個元件特性及API,有充分的瞭解
2. 熟悉2種以上的開發工具,而專案所需的工具,必需是其擅長的之一,其熟悉度包含了標準安裝裡的各個函數庫,系統常數,物件定義,語法,主要的輔助工具開發廠商,及重要的工具使用方法
3. 具一定的美學感
4. 至少能使用一種繪圖工具軟體
5. 曾經擔任職業軟體工程師三年以上

可以這樣說,SA給了系統靈魂和神經系統,SD則是給了系統軀體和外觀,兩者的結合,才能產生出正確,美觀又好用的系統。如果你覺得自己是個不太愛和太多人打交道的IT人,又對使用者介面有那麼點執著及天賦,那麼,SD絕對是適合你的好選擇。

[SE,系統工程師]

就某種角度來看,SE對PM而言,算是萬金油,只要做IT專案,那就一定用得上,差別只是要選那一個專業的SE而已。系統建置安裝要SE,使用者環境要SE,甚至到硬體選擇及佈建,都要用到SE,有什麼IT專案跟這個沒有關係呢 ?

當然,雖然SE是到處都吃得開,但相對的也是專案裡面最沈默及少有聲音的一群。他們的工作基本上就是建構出一個可以執行系統的環境,系統要如何展現,SE可以給SA和SD一些建議,但建議時機通常都是在系統運行出了些非系統可以掌握的問題後。

系統工程師基本條件上,和SD最為接近,但有一點不同,就是不需要有很好的軟體開發經驗,也就是不太需要會寫程式。但要對作業系統,服務器系統,網路運用環境有相當程度的瞭解。

SE通常是三者中最為博學一員,好的SE雖然不一定要程式寫的呱呱叫,但卻不能對編程一無所知,對作業系統及開發工具也要有一定的熟悉度,甚至部份網管有關的工作也要有所涉獵,所以算得上是專案裡的萬金油。

在專案裡,SE所要執行的工作如下:

· 規劃及建置系統執行環境
· 安裝及設定使用者端環境
· SERVER安裝及設定
· 提供環境設置竟見給SA及PM
· 最佳化系統可靠度及效度
· 撰寫可靠度及效能測試計劃書
· 對電腦及相關週邊設備有一定熟悉度

而一名SE則有下列基本要求:

1. 至少熟悉一種作業系統,尤其是讓系統的設定及微調等相關技術
2. 至少熟悉一種網路伺服器作業系統,對如何設定及最佳化熟悉
3. 曾任軟體工程師職務一年以上或熟悉一種開發工具
4. 對網路環境有一定的認識,尤其是一些通訊設置
5. 熟悉可靠度及效能的評估方法,並瞭解與系統環境相關之設定

基本上,如果擁有了像SD一樣的技術背景及個性,但在美學上實在令人不敢恭維,那麼SE算是極佳的選擇了。一般而言,SE的下一個生涯規劃,會比較偏重於技術性兵種,像是DBA或是網管,對於IT產品比較有狂熱或愛好的人,SE是極佳的出路。

[在專案中的運用時機]

基本上SE是萬金油,只要是IT的案子裡就一定要塞一個SE進去,因為沒有IT專案不需要使用工程技術的,差別只在使用何種工程技術而已。在套裝軟體的導入專案裡,SE負責處理軟體使用環境,解決非系統性問題,安置及調整資料庫和網路環境,然後安裝啟動。所有系統運行所需要的條件,都要由SE來解決和處理,但這些工作全都不會出現在眾人的面前,但卻又重要無比,算得上是幕後的英雄。

會同時運用到SA,SD及SE的專案,還是以客製化開發為主的。

在開發型專案裡,SA團隊要負責初期的需求調查及整體架構的規劃,將所有的系統開發工作內容轉化成井井有條的文件,並且適度的分割及派送,並確保未來這些被分割的開發結果能夠在未來可以正確運作。

SD 則在SA的文件中去尋求系統呈現的一致性,易用性及保證開發工具可以正確無誤的展現SA的要求結果。所以SD要負責操作界面的外觀設計,訂定一致的展現規範,設計系統操作畫面及操作手順,同時配合SA完成系統開發文件。基本上,開發文件中,是包含系統使用手冊初稿的。

SD在設計時,必需與SA充分配合,以確保設計的系統符合需求及運作要求。

除了上述的工作內容外,這三者都要撰寫測試計劃,SA著重在於資料的流動符合原先規劃的順序及結果測試,SD則著重在操作畫面中的防呆測試及操作介面的正確性,而SE則在系統可靠度上進行規劃。

[軟體工程師何時轉職 ?]

每一個寫程式的人心裡都明白,這工作不可能做一輩子。不單單是體力及腦力問題,最重要的是寫程式,經濟價值實在有限。

我不會否認有很多的程式高手,但重點不在於你有多優秀,而是有多少老闆願意付出和你努力成正比的薪資來顧用你。不是沒有這種工作,而是如同鳳毛麟角,而且,這種工作通常你也做不久,因為壓力太大,消耗青春太劇烈了。

退一步來說,你也不值得付出這麼多,在良好的SA及SD的規劃下,工程師只要達成一般標準,就可以解決掉九成以上的軟體開發需求,除非是機緣巧合,或是你很有興趣,否則另外那一成的工作,你是很難有機會碰上,或者,就算碰上,也沒法子養活你一輩子。

軟體工程師總有一天要轉職的,這是他們的宿命。

當要轉職時,他們有幾個選擇,SA,SD,SE,出去當老闆及換一行等諸多選擇。看起來雖多,但其實晚景淒涼,因為寫程式都是關起來寫,長期自閉的結果,當他們想轉職時,很難擁有足夠的人脈來支撐他們換個前途光明的事業。一般人羨慕IT人的高薪,卻不曉得只是寅支卯糧,沒有妥善的規劃,後勢看跌的。

前面的五個選項,基本上最後兩項只是充場面,只有少數人才能選那兩個,大多數軟體工程師還是要在前三者中選一個來發展的。

SA看起來最風光,未來也是潛力最好的,但很遺憾的,軟體工程師裡,只有少數人適合這個職務。因為這個工作是很需要和別人打交道的,而好的軟體工程師通常這一點非常不擅長。

因此,如果你自認為擅於溝通,三姑六婆都是你的紅顏知己,邏輯能力不錯,又對管理有興趣,那麼SA是你很好的選擇,程式功力並不是你要考慮的重點。

相對的,你對使用者介面很有心得,而且在美感上也獲得了同事的一致讚賞,程式功力也有那麼一點自信,討厭和不是搞IT的人打屁聊天,那不要懷疑,SD是你最佳的歸宿。

最後,你覺得IT的世界對你充滿了吸引力,無論是作業系統,開發工具或是軟體及IT設備都是如此的吸引你,人與人的接觸對你來說並不是人生的首要需求,層出不窮的IT科技讓你陶醉其中,那麼,SE絕對是你的首選。

要如何轉職,每一個軟體工程師是要誠實面對自己的,而不是依前途來決定自己要選什麼職務,如果你依這種方式選,以我個人在職場生涯的經驗,這樣的人很難散發出光芒,也難以有他期望的成就。所以,現在在寫程式,正在想要轉職的工程師,請謹慎而且誠實的面對自己,做出恰當的選擇。


關於SA SD的重要性
(補充資料取自
:http://blog.blueshop.com.tw/tigerlin901/archive/2007/10/31/53214.aspx)
內容如下:

 嗯!今天是難得的颱風假,研究完技術的同時也就來寫一下最近在 BS TEAM 工作的心得吧!

其實時間過的很快,轉眼間兩個星期就過去了,在 BS TEAM 工作的這段期間其實讓我的工作模式改變的跟之前截 然不同。以前在某補習班當 IT 以及 遊戲公司當 RD 的時候...每每開始一個程式或是架構變更專案的開始都只是簡單的規劃,通常不會很詳細的去進行 SA & SD ,有的話也大概就只是很簡單的幾張 Paper 而已 (意思紀錄一下的感覺 Orz)

這可能跟台灣的資訊環境有關係吧,當我開始要寫第一份「完整又詳細」的 SA 時,心裡真的有錯愕以及碎碎唸了一下:「寫程式都沒時間了還要用這種 SA 啊!還有 SD ~那程式寫的時間呢?」。正當不知道如何撰寫的時候,撰寫文件非常有經驗的專案經理 **豪哥** 親自指導我,以下是我們的對話 --

================= 對話分隔線開始 =================

豪:「SA主要是給 User 看的文件,每一個介面都要解說,功能欄位也都要詳細說明,尤其是下拉選單,裡面的選項也都要一一列出。」

才剛開始聽到我就已經六神無主了...一向是 IT 與 RD 的我要撰寫的這樣的 Document 會吐血吧@@,但他又追加的跟我說了一個更重要的觀念

豪:「SA的用意除了要給user看以外,其實最重要的是在系統開始進行開發之前可以避免細節的地方遺漏了,例如說:今天你設計的DB欄位有五個,如果突然想到一個功能的時候,以前的作法都是直接在DB插入一個新欄位,那程式是不是都要改過了呢?

我:「對啊!以前在撰寫的過之中,總會突然想到一兩個 idea!但是 DB 又必須新增欄位,老實說,應用程式小還 OK 啦!但是大的話...我有改兩個 DB 欄位改快一小時的經驗」

想起以前撰寫程式的時候,通常都是馬上動手,並沒有經過縝密的規劃就寫,當一個功能寫完了以後回頭審視就會發現「這裡似乎加這一個功能也不錯」的想法浮上心頭。好吧...在加入一個功能吧..這時候的作業程序為:

  • 進入 SQL 管理界面

  • 對要修改的資料表插入一個欄位

  • 修改程式,將 SQL 相關的程式修改語法

  • 進行測試

以上這四個步驟是想到一個功能的時候所必須做的流程,程式的規模小就算了,如果遇到相關page很多的程式...慢慢改吧,人力與時間就浪費在上面了 = =a

豪:「所以寧可多花一些時間規劃一番,也不要後面在浪費人力修改 ^_^」

我:「那這樣說來,網路設備中附上的說明書或是 PDF 的User Guide也可以說是 SA 文件嗎?」

豪:「那可以說是 SA 了啊~ 只是比較沒那麼詳細而已,但是拿他們來作入門藍本其實是 OK 的啦~」

我:「感謝指導!我知道怎麼開始了 ^^y~ Thanks~」

================= 對話分隔線結束 =================

經過這一次撰寫 SA 之後,我發現有以下的好處:

  • 可以仔細審視 UI 的排列與設計,不用等到事後在修改

  • 可以將功能性完整的考量到,將使用者以及系統功能寫的更完善

  • 不用在浪費時間作新增欄位與修改程式這種浪費時間的功夫

  • 以後系統要修改的時候,不用仔細拼命的思考以前事怎麼寫的

  • 接手系統的人相對的也輕鬆

  • 節省教育訓練的時間

可見不管是 IT or RD ,事前規劃與分析都是很重要的,也許寫文件事很枯燥又乏味的事情,但是依照文件的制定來進行,會比後面要花更多時間修補還要來的更值得!除了系統 & IT架構的規劃要良好以外,你的人生是否也有了良好的規劃了呢 ^^b ?

P.S 可以參考一下 Vigor (居易) 設備的說明書,針對介面他們都有詳細的說明,想入門 SA 或是不知道 SA 意義的可以參考看看~記得!!!!是參考,不是說該文件就是 SA 唷!

arrow
arrow
    全站熱搜

    薄荷桃子 發表在 痞客邦 留言(0) 人氣()