# 系統分析與設計-課輔 [TOC] ## Intro to IS and ISD ### IS (Information System) - type - Transaction Processing Systems (TPS) - Office Automation Systems (OAS) - Knowledge Work Systems (KWS) - Management Information Systems (MIS) - Decision Support Systems (DSS) - Expert Systems (ES) - Executive Support Systems (ESS) - Group Decision Support Systems (GDSS) - Computer-Supported Collaborative Work Systems (CSCWS) - level - ![image](https://hackmd.io/_uploads/SJ5oRlMbC.png) - 越低的層級代表系統提供越結構化的決策支援(Structured Decision making),越高代表越不結構化 - Structured Decision making : 在不同的固定的情況中,會有對應的固定的解決方法 - UnStructured Decision making : 提供相對不固定且抽象的解決方法,ex. 建議、評估 - Operational Level - TPS (Transaction Processing System) - 處理企業中日常的大量交易行為 - ex. 信用卡的金流處理 - Knowledge Level - OAS (Office Automation System) - 將辦公中的的部分流程自動化 - ex. Word - KWS (Knowledge Work System) - 支援更專業的工作,ex. 工程師 - ex. CAD (Computer Aided Design) - 專為創作者打造的技術,可用於設計、製圖和製作技術文件。 - 以數位優先流程取代手工繪製和製圖 - Higher Level - MIS (Management Information System) - 提供非常大範圍(不同種任務)的決策分析及制定 - ex. 分析商品在不同區域的銷售情況 - DSS (Decision Support System) - 主要提供決策者如何及要做出甚麼決策 - ex. 提供不同情境下要用多少預算完成某件專案 - ES (Expert System) - 用於在某些特定的領域提供決策方式 - Strategic Level - ESS (Executive Support System) - 提供非結構化的策略決策給決策者 - GDSS (Group Decision Support System) - 讓組員間能使用電子產品互相溝通 - ex. email ### SDLC (Systems Development Life Cycle) - 大部分的系統開發都會遵循此相同的流程 - 可以分為 4 階段(也有分成 7 階段的) 1. Planning - 找出現有制度或系統存在的問題 - 進行可行性測試 - 技術 - 經濟 - 組織 - 制定初始的工作計畫架構 - 招募相關人員 - 搞清楚此計畫的利害關係人 - 贊助商 - 會參與此計畫的人 - 會從此計畫中獲益或受害的人 - 對此計畫有興趣的人 - 系統需求需包含的內容 - 對於系統使用者和贊助商分別需要的需求 - 系統能夠帶來哪些價值 3. Analysis - 進行完整的市場研究 - 確認系統的功能 5. Design - 設計系統架構及介面 - 設計有哪些程式要寫 7. Implementation - 實際開發系統 - 訓練使用者安裝系統 - 持續維護系統 - 實作 SDLC 的方法 - Structured Development - Waterfall Development - 較傳統的開發方法,每個階段會從上一個階段結束才開始 - ![image](https://hackmd.io/_uploads/rks1qi4bA.png) - 缺點 - 當某一個階段結束後,較不容易再去更動該階段的內容,彈性較差 - 但也是優點,不易更動到架構而造成其他延伸問題 - 太專注於要在某個時間點內完成某個階段的任務,效率差 - Parallel Development - 將 Design & Implementation 階段分成不同子項目,並同時進行處理,最後再做整合 - ![image](https://hackmd.io/_uploads/HycW0sNZR.png) - 優點 - 減少整個計畫的執行時間 - 缺點 - 需要小心切割成不同子項目 - 整合子項目可能困難 - Rapid Application Development - 使用 iterative development - 可以接受一直重新更新開發不同版本,依據使用者的回饋,重新進行不同階段的開發 - ![image](https://hackmd.io/_uploads/Hy_VZhN-C.png) - 優點 - 使用者可以持續回饋需求,快速更新系統 - 缺點 - 使用者須使用相對不完整的系統 - Agile Development - 將大型專案切分為較小的產品功能,隨著專案的進行逐步依據用戶及市場的反應修正產品路線。可因應商業環境與市場需求的變化,快速進行調整。 - 可建立較短的開發循環,以漸進式的方式開發產品 - ![image](https://hackmd.io/_uploads/r1hZUSHZA.png) ### 系統分析的產出 - 需求面 - 問題定義 - 問題解決方法 - 系統面 - 解決需求的方法的標準 - 系統規格 - 介面 - 軟硬體 - 預算 - 排程 ### 總結 ![image](https://hackmd.io/_uploads/rkYVWLBbA.png) ## Project Manager Techniques ## Requirement Analysis ## Use Case - 定義 - 一個 Use Case 由 Actor, Use Case, System boundary 組成 - Actor : 使用系統的角色 - Use Case : 使用者的目的,以橢圓表示 - System boundary : 系統功能包含的範圍,因可能有多個系統串接 - relationship - 有四種關係 1. include : 必須包含在一個流程 2. extend : 可選擇的,不一定在同一個流程 3. association : actor 和 use case 的關係 4. generalization : 繼承關係 - ex. - ![image](https://hackmd.io/_uploads/Sk5syjNfR.png) - ![image](https://hackmd.io/_uploads/Hkxslo4M0.png) - ex. - ![image](https://hackmd.io/_uploads/HJSYa5EM0.png) - 練習 1. 圖書館系統的 use case diagram - Actor - 顧客 - 管理員 - Use Case - 借書 - 還書 - 查看借閱狀況 - 告知還書時間 - 新增、修改、刪除書籍 :::spoiler 參考 ans ![image](https://hackmd.io/_uploads/SkYNBoEM0.png) ::: ## Data Flow Diagram - 定義 - 資料輸入和輸出的流程圖 - 4 種符號 - entity, process, data store, data flow - ![image](https://hackmd.io/_uploads/B12pSoNMC.png) - 通常會有 context, level 0 diagram - context diagram - 比較抽象,僅列出實體和系統間的關係和主要功能 - ex. - ![image](https://hackmd.io/_uploads/SyyX_sEfR.png) - level 0 diagram - 展示出主要 process 的資料流以及 data store - ex. - ![image](https://hackmd.io/_uploads/HJ2eojNfC.png) - 練習 - 圖書館管理系統的 DFD,包含 context and level 0 diagram :::spoiler 參考 ans ![image](https://hackmd.io/_uploads/ByaRssEfA.png) ::: ## DB design ### normalization - 優點 - 可以降低重複儲存 - 避免 新增、修改、刪除 的異常 - 缺點 - 降低查詢的效率(因 join) 1. 1NF - 定義 - 去除多值,所有欄位為 atomic - 每個 record 有 pk - ex. - ![image](https://hackmd.io/_uploads/r13z8vmfA.png) - 有 新增、刪除、修改 異常 - 練習 - stu(snum, name, tel) :::spoiler 參考解答 ![image](https://hackmd.io/_uploads/HJN2szPQC.png) ::: 2. 2NF - 定義 - 符合 1NF - 去除對 pk 的部分相依 - ex. - ![image](https://hackmd.io/_uploads/SJRgEvXz0.png) - 仍有 新增、修改、刪除 異常 - 練習 - room(course_name, teacher_name, time, teacher_birth) :::spoiler 參考解答 ![image](https://hackmd.io/_uploads/SJQS3Mv70.png) ::: 3. 3NF - 定義 - 符合 1NF & 2NF - 去除非 key 的遞移相依 - ex. - ![image](https://hackmd.io/_uploads/ByjZEPXMR.png) - 練習 - room(course_name, teacher_name, time, teacher_birth, teacher_age) :::spoiler 參考解答 ![image](https://hackmd.io/_uploads/Bky03GDQC.png) ::: - 練習 - 訂單內容 ![image](https://hackmd.io/_uploads/ryTDF_mfC.png) - customer(cid, name) - product(pid, name, price) - order(oid, cid, pid, date time, num) ### ER Model - 將實體的關係結構的表示 - component - entity - 長方形 - attribute - 橢圓形 - key - 橢圓形加底線 - relationship - 菱形 - 種類 - 一對一 - 一對多 - 多對多 - ex. - ![image](https://hackmd.io/_uploads/BJMeG7P7C.png) - ![image](https://hackmd.io/_uploads/rk8MfQD70.png) - er model - ![image](https://hackmd.io/_uploads/B1e8N7P7A.png) ### ER Diagram - ex. - ![image](https://hackmd.io/_uploads/rynwfBCGC.png) - ref : https://miro.com/diagramming/how-to-draw-an-er-diagram/