# 系統分析與設計-課輔
[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
- 
- 越低的層級代表系統提供越結構化的決策支援(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
- 較傳統的開發方法,每個階段會從上一個階段結束才開始
- 
- 缺點
- 當某一個階段結束後,較不容易再去更動該階段的內容,彈性較差
- 但也是優點,不易更動到架構而造成其他延伸問題
- 太專注於要在某個時間點內完成某個階段的任務,效率差
- Parallel Development
- 將 Design & Implementation 階段分成不同子項目,並同時進行處理,最後再做整合
- 
- 優點
- 減少整個計畫的執行時間
- 缺點
- 需要小心切割成不同子項目
- 整合子項目可能困難
- Rapid Application Development
- 使用 iterative development
- 可以接受一直重新更新開發不同版本,依據使用者的回饋,重新進行不同階段的開發
- 
- 優點
- 使用者可以持續回饋需求,快速更新系統
- 缺點
- 使用者須使用相對不完整的系統
- Agile Development
- 將大型專案切分為較小的產品功能,隨著專案的進行逐步依據用戶及市場的反應修正產品路線。可因應商業環境與市場需求的變化,快速進行調整。
- 可建立較短的開發循環,以漸進式的方式開發產品
- 
### 系統分析的產出
- 需求面
- 問題定義
- 問題解決方法
- 系統面
- 解決需求的方法的標準
- 系統規格
- 介面
- 軟硬體
- 預算
- 排程
### 總結

## 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.
- 
- 
- ex.
- 
- 練習
1. 圖書館系統的 use case diagram
- Actor
- 顧客
- 管理員
- Use Case
- 借書
- 還書
- 查看借閱狀況
- 告知還書時間
- 新增、修改、刪除書籍
:::spoiler 參考 ans

:::
## Data Flow Diagram
- 定義
- 資料輸入和輸出的流程圖
- 4 種符號
- entity, process, data store, data flow
- 
- 通常會有 context, level 0 diagram
- context diagram
- 比較抽象,僅列出實體和系統間的關係和主要功能
- ex.
- 
- level 0 diagram
- 展示出主要 process 的資料流以及 data store
- ex.
- 
- 練習
- 圖書館管理系統的 DFD,包含 context and level 0 diagram
:::spoiler 參考 ans

:::
## DB design
### normalization
- 優點
- 可以降低重複儲存
- 避免 新增、修改、刪除 的異常
- 缺點
- 降低查詢的效率(因 join)
1. 1NF
- 定義
- 去除多值,所有欄位為 atomic
- 每個 record 有 pk
- ex.
- 
- 有 新增、刪除、修改 異常
- 練習
- stu(snum, name, tel)
:::spoiler 參考解答

:::
2. 2NF
- 定義
- 符合 1NF
- 去除對 pk 的部分相依
- ex.
- 
- 仍有 新增、修改、刪除 異常
- 練習
- room(course_name, teacher_name, time, teacher_birth)
:::spoiler 參考解答

:::
3. 3NF
- 定義
- 符合 1NF & 2NF
- 去除非 key 的遞移相依
- ex.
- 
- 練習
- room(course_name, teacher_name, time, teacher_birth, teacher_age)
:::spoiler 參考解答

:::
- 練習
- 訂單內容 
- customer(cid, name)
- product(pid, name, price)
- order(oid, cid, pid, date time, num)
### ER Model
- 將實體的關係結構的表示
- component
- entity
- 長方形
- attribute
- 橢圓形
- key
- 橢圓形加底線
- relationship
- 菱形
- 種類
- 一對一
- 一對多
- 多對多
- ex.
- 
- 
- er model
- 
### ER Diagram
- ex.
- 
- ref : https://miro.com/diagramming/how-to-draw-an-er-diagram/