# SA系統分析與設計(Study) https://hackmd.io/@learnik/ByKhCkToq # 物件導向的模型與技術 * 對於資料庫應用而言,物件導向帶來兩層面影響: * 應用系統的資料模型:物件導向可提供較佳的資料描述環境與方法 ex.電腦輔助設計與製造 * 應用系統的開發:GUI藉由物件導向,使軟體元件的再用率提高,設計圖型化介面時,就可以建立在物件基礎上;所謂「快速應用系統開發RAD」-要靠現有軟體元件堆砌才可達成 # O-O SA流程圖 https://gitmind.com/app/docs/f50o7y2v ## 系統開發方法 * 結構化分析:SDLC,與PM配合 * 物件導向分析:物件用來表示人、物、事件or交易,階段間有較多的互動(O-O) * 快捷法:密集的分組分工,成員須有較高的技術與溝通能力(JIRA系統的便條貼Dashboard) ## SDLC 系統設計發展週期 ### 五階段 Phase1. Planning 規劃 Phase2. Analysis 分析 Phase3. Design 設計 Phase4. Implementation 建置 Phase5. Support & Security 安全與支援 #### Phase 1.規劃 | 說明 |系統請求,找出系統(現有系統分析)/企業流程(企業個案分析)現有問題以及想要調整的方案, | -------- | -------- | 目的 |做出初步調查,評估與IT相關的機會與問題 EX.可能做到甚麼程度、會有甚麼問題 | 可交付成果|初步調查報告 #### Phase 2.分析 | 說明 |建立新系統的邏輯模型 | -------- | -------- | 目的 |理出需求思緒,需求塑模、資料與流程塑模、物件塑模、開發策略,為了了解系統的商業程序 | 可交付成果|系統需求文件SRD,說明客戶需求、成本、效益、策略 | 步驟|2.1需求定義->2.2功能塑模->2.3結構塑模->2.4行為塑模 ## 標準化物件導向分析程序  | 流程 | 說明| 最終文件 | | -------- | -------- | -------- | | 2.1需求分析| 了解現有系統與新系統間的差異|系統規劃書/系統分析文件 | | 2.2功能塑模 | 針對商業程序找出使用案例|1.使用案例圖 2.活動圖 | | 2.3結構塑模 | 找出基礎類別、類別的屬性、類別間的關係|1.類別圖 2.物件圖 | | 2.4行為塑模 | 找出類別的行為|1.序列圖 2.溝通圖/互動圖 3.行為狀態機 | ##### 2.1需求分析 * 需求分析的結果就是系統模型system modeling:資料流向圖DFD、語意資料模型Semantic data model * 資料流向圖DFD:得知模組之間輸入、輸出的資料  * 語意資料模型Semantic data model:描述資料的型態與資料之間的關係  * 蒐集需求的技術(現代化方式) * 聯合的應用設計(Joint Application Design,JAD):把跟專案相關的分析師、使用者、管理者都找來,由SA主導進行互動跟溝通 * 選擇參與者->設計JAD議程->準備工作->進行JAD會議->後續的追蹤 * 群組支援群組(group support system):解決JAD多人會議不敢發言的問題。EX.讓JAD參與者透過電腦匿名地輸入自己的意見 * CASE工具 * 雛型化 * 系統規劃書架構: | 主要內容項目 | 說明 | | -------- | -------- | | 工作計畫|擬定專案工作計畫| | 可行性分析|經濟、技術、組織可行性| | 需求定義|列出需求分析所得到的需求定義| | 功能模型|使用案例圖、活動圖| | 結構模型|CRC卡、類別圖、物件圖| | 行為模型|序列圖、溝通圖、行為狀態機、CRUDE陣列| | 附錄|問卷調查結果、訪談紀錄、統計資料等| ##### 2.2功能塑模  * 描述商業程序以及IS與周圍環境之間的互動 ##### 2.2.1 使用案例圖 Use case * 了解需求的過程中一邊建立Use case,記載使用者使用系統的方式  * 從圖形化使用者介面的雛型來找尋 * 從目前使用中的軟體系統來找尋   1. 判斷角色與使用案例:有哪些類型的使用者? 這些使用者分別會使用哪些功能(使用案例)? 2. 繪製系統邊界 3. 找出角色/使用案例的關係 * (2.1)結合關係:使用者使用某功能,user與use case間就存在結合關係。 *  * (2.2)包含關係:將一use case再切割 *  * (2.3)延伸關係:延伸功能,通常依附在一個use case裡 *  * (2.4)一般關係:繼承關係 *  4. 找出多重性:1對1/1對多/多對多 ##### 2.2.2 活動圖 * 擺脫物件的概念,完全以描述商業程序的功能為目標,且有能力描述持續程序的複雜性 EX.同時執行、分岔的條件   * 控制流:描述執行路徑,只能連結動作或活動 * 物件流:描述物件的流動,一邊連物件一邊連動作/活動  * 繪製步驟 1. 選擇商業程序(從案例圖中找程序) 2. 找出活動 3. 找出控制流與節點 4. 找出物件流與節點 5. 配置內容與繪製 ##### 2.2.3 使用案例描述 use-case descriptions * 詳細描述商業程序的正式文件,涵蓋了原本確認的需求、使用案例圖(Overview)、活動圖(Detail)  * 建立流程 1. 選擇使用案例 2. 建立概略的描述 3. 描述正常的事件流程 4. 檢查事件流程 5. 確認例外的事件流程 6. 檢視使用案例描述 7. 反覆進行上述步驟 ##### 2.2.4 功能模型 * 使用案例圖+使用案例描述+活動圖=功能模型 * 規則 1. 使用案例描述中的事件<-->活動圖的active/activity 2. 活動的物件會在使用案例描述中說明 3. 使用案例描述中事件的順序<-->活動圖中的活動順序 4. 使用案例描述1<-->1使用案例 5. 使用案例描述的角色都會出現在使用案例圖中 6. 使用案例描述中敘述的關係應該都有出現在使用案例圖中 ###### * BP(Business Progress)企業流程-報價系統  ###### * FDD(Function Decomposition Diagram)功能分解圖 建構商業功能模型,顯示功能之間的上下關係,並進而轉化為應用程式中的程式模組  ---  ###### * DFD(Data Flow Diagram, DFD)資料流程圖 參考連結 https://ithelp.ithome.com.tw/m/articles/10267483 ##### 2.3 結構塑模  * | INPUT|PROCESS|OUTPUT| | -------- | -------- | -------- | | 使用案例圖與敘述|文本分析 |找出結構模型所需元素| * 文本分析 1.普通名稱=物件形成的類別 2.專有名詞=類別的案例 3.動詞=操作 4.Be動詞=物件與類別之間的關係 5.副詞=關係或操作的屬性 --- * 結構模型透過**CRC卡**、**類別圖**、**物件圖**來建立 * CRC卡:試著找出類別及其相關資訊 * 類別圖 * 類別:物件的特徵,分為實體類別和抽象類別 * 實體類別concrete classes:ex.學校裡的老師、學生 * 抽象類別abstract classes:ex.用人員類別來集合老師類別與學生類別的共同特性 * **領域類別domain classes:與應用領域的事物相關的類別(The most important!!!)**(找出類別,以及對類別的屬性、操作加以定義) * 使用者介面類別user-interface classes * 資料結構類別data structure classes * 其他類別:檔案結構類別、作業環境類別、文件類別 * 關係 | 分類|說明 | 例子 | | -------- | -------- | -------- | | 一般關係| a-kind-of,也會衍伸出父類別跟子類別|老師與學生(子類別)都屬於人(父類別/超類別)這個類別| | 聚集關係|a-part-of|引擎是車子的一部分| | 結合關係|不屬於前者的關係|學生與課程| * 物件圖 * 物件:類別的案例(instance) * 結構模型描述的重點:系統建立與其使用的**物件** * 先建領域模型(domain model)->再建成結構模型 * 領域模型:交付概念式的類別圖,描述軟體系統使用的資料,以邏輯組織的方式來描述  ##### 2.4行為塑模  #### Phase 3.設計 | 說明 |設計使用介面,資料設計(識別Input->Process->Output、內外部控制) | -------- | -------- | 目的 |讓user清楚看到需求具體化,與相關解決方案 | 可交付成果|系統設計規格(讓管理者/user審查) ##### 資料庫設計 ###### Step1選擇儲存體的格式 檔案系統/**關聯式資料庫**(廣為使用)/物件關聯式資料庫/物件導向資料庫 ###### Step2將問題領域類別對應到關聯式資料庫 ###### Step3最佳化儲存體 #### Phase 4.建置 | 說明 |建置新系統,含Coding,Testing,Documented,Installed | -------- | -------- | 目的 |交付一套功能完整、運作正常、文件完整的系統 | 可交付成果|功能齊全的系統、操作手冊 #### Phase 5.安全與支援 | 說明 |進行系統維護、加強、資安、更版 | -------- | -------- | 目的 |持續性的維護 | 可交付成果|運行無阻的系統
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up