--- title: 'SA/SD/SE 簡介' --- # SA/SD/SE 簡介 [TOC] 軟體開發流程 --- ### 瀑布式 ![](https://i.imgur.com/DcAHia4.png) ### 敏捷式 ![](https://i.imgur.com/VaxXmTB.png) 系統分析師(System Analyst, SA) --- ### 說明 * <font color="#f00">**SA較為偏重於在工作流程和處理邏輯的。**</font> * 主要的工作就是透過一系列的分析工作,把客戶想要的結果產生方式,以各種文件表達出來,讓開發團隊可以根據這些文件實作出這個結果。 * 透過SA,開發團隊才可以理出整個系統的架構,一種做事的脈絡,以及系統和工作間的關連性,這些結果都會被SA呈現在文件中,而非放在少數人的腦袋裡。 * SA不僅止是要針對電腦裡的東西去運作及規劃,還包括了現實世界裡的實體流程及組織。 ### 工作 * 系統分析員的實際工作內容,會因為公司制度、專案規模等因素而有所不同,但仍可歸納出幾個大方向: 1. 使用者訪談、需求分析 2. 專案可行性評估 3. 專案時程安排 4. 專案進度控管、監督 5. 書面文件撰寫:客戶訪談記錄、需求分析報告、系統規格書、系統測試報告 * 系統分析員的工作內容,依階段劃分大致可分為下述幾個階段: 1. 系統分析:分析現行系統:確定系統的功能需求;確定系統的資源:保護及績效需求,發展系統架構確定使用單位將面臨的環境及組織變遷。 2. 初步設計:劃分作業子系統。擬定子系統的輸入、輸出、介面及作業處理流程:子系統人工作業規格:邏輯資料庫設計:開列系統軟、硬體規格。 3. 細步設計:設計實體資料庫:設計人工作業程序;設計文件表格及輸出、入格式;擬訂程式規格及組步流程:確定公用常式與共用程式。 4. 系統測試:根據分析階段所訂定的各種功能。加以測試,錯誤資料收集與分析。 5. 資料轉換:整理及彙編文件。指派工作人員及進行訓練。進行資料轉換。 6. 系統維護:更正系統內潛伏的錯誤:因適應環境的改變而做適度的調整。 * 配合新系統的組織及流程,是要由SA來執行的,SA執行以下的工作: 1. 藉由系統需求書,使用者的現有標準作業流程來建立出符合期望的新作業流程及搭配流程的系統功能及模組規劃。 2. 依據功能及模組規劃案,定出初步的資料庫內容及系統與使用者間的權限搭配規範。 3. 定出各個軟體零件的規範,如物件、函數庫 ...等等。 4. 設計新的標準作業流程,並把系統功能或模組綁入這些流程中。 5. SA依據客戶的環境及需求,尋找合適的SD來搭配。 ### 必需具備的能力、資歷及專業訓練 1. 至少熟悉一種程式開發語言 2. 熟悉軟體工程, 對於開發工具的元素及特色熟悉 3. 對管理制度或作業流程設計熟悉 4. 熟悉UML或類似的系統描述工具 5. 邏輯能力良好 6. 良好的溝通能力, 主要作為瞭解需求之用 7. 相關的業界熟悉度 系統設計師(System Designer, SD) --- ### 說明 * <font color="#f00">**SA所規劃出來的要求及佈置,都只是邏輯上的構思,在不同的工具上,可能有更好的方法可以表現,也可能會難以展示,這都需要藉由SD對使用環境及開發工具的瞭解,來進行調整和規劃。**</font> * SD較為幕後的工作,在與客戶的溝通協調上,並不會有太高的要求,也較不需要公司管理層面的全局觀。 * 表面上看,SD沒有SA那麼多的工作要求,但實際上SD是最需要天賦的工作,不管是畫面的構成,操作的手順及調整,甚至於元件的定義及物件的規範,全都需要一些天賦。 * 很多軟體,功能很強,但怎麼看怎麼不順眼,或者怎麼用就怎麼憋扭,功能帶來的效益,全都被這些毛病給遮蓋掉了,這就是SD的問題。 * SD也扮演了系統最佳化的推手。 ### 工作 * 在一個客製化專案裡,SD的工作內容如下: 1. 設計畫面元素規範。 2. 設計頁面結構及規則。 3. 設計系統操作畫面, 並編定欄位規範及防呆處理。 4. 設計權限管理與系統操作機制。 5. 撰寫使用手冊。 6. 調整DB之各項定義, 使其符合畫面欄位規範及操作搭配。 7. 配合SA撰寫系統開發文件, 供程式師CODING之用。 8. 撰寫UI(使用者介面)測試計劃書。 ### 必需具備的能力、資歷及專業訓練 1. 至少對一個作業系統極為熟悉,對於這個作業系統的各個元件特性及API,有充分的瞭解。 2. 熟悉2種以上的開發工具,而專案所需的工具,必需是其擅長的之一,其熟悉度包含了標準安裝裡的各個函數庫、系統常數、物件定義、語法、主要的輔助工具開發廠商及重要的工具使用方法。 3. 具一定的美學感。 4. 至少能使用一種繪圖工具軟體。 5. 曾經擔任職業軟體工程師三年以上。 系統工程師(System Engineer, SE) --- ### 說明 * <font color="#f00">**系統工程師基本條件上,和SD最為接近,但有一點不同,就是不需要有很好的軟體開發經驗,也就是不太需要會寫程式,但要對作業系統,服務器系統,網路運用環境有相當程度的瞭解。**</font> * 就某種角度來看,SE對PM而言,算是萬金油,只要做IT專案,那就一定用得上,差別只是要選那一個專業的SE而已。 * 系統建置安裝要SE,使用者環境要SE,甚至到硬體選擇及佈建,都要用到SE,有什麼IT專案跟這個沒有關係呢 ? * 他們的工作基本上就是建構出一個可以執行系統的環境,系統要如何展現,SE可以給SA和SD一些建議,但建議時機通常都是在系統運行出了些非系統可以掌握的問題後。 ### 工作 1. 規劃及建置系統執行環境。 2. 安裝及設定使用者端環境。 3. SERVER安裝及設定。 4. 提供環境設置竟見給SA及PM。 5. 最佳化系統可靠度及效度。 6. 撰寫可靠度及效能測試計劃書。 7. 對電腦及相關週邊設備有一定熟悉度。 ### 必需具備的能力、資歷及專業訓練 1. 至少熟悉一種作業系統,尤其是讓系統的設定及微調等相關技術。 2. 至少熟悉一種網路伺服器作業系統,對如何設定及最佳化熟悉。 3. 曾任軟體工程師職務一年以上或熟悉一種開發工具。 4. 對網路環境有一定的認識,尤其是一些通訊設置。 5. 熟悉可靠度及效能的評估方法,並瞭解與系統環境相關之設定。 ## 參考文獻 * [SA,SD與SE](https://dennis74728.pixnet.net/blog/post/13012312) * [UML的使用案例圖、活動圖、類別圖練習 ~ 以網路選課為例](https://www.mysql.tw/2021/05/uml-usecase-activity-class.html) * [UML練習範例 : 線上商店 (Online Shopping) 的Use Case Diagram/Activity Diagram/ER Diagram/DFD/Class Diagram](https://www.mysql.tw/2021/05/uml-online-shopping.html) * [UML的使用案例圖、活動圖、類別圖練習 ~ 以網路選課為例](https://www.mysql.tw/2021/05/uml-usecase-activity-class.html) * [[守] 養成全局思考系統分析的能力](https://ithelp.ithome.com.tw/articles/10220308) ###### tags `系統`