目錄
- 1 必做題
- 1.1 狀態機圖
- 1.2 活動圖
- 1.3 統一軟件開發過程RUP
- 2 需求分析
- 2.1 數據流圖DFD
- 2.2 ER圖
- 2.3 狀態轉換圖STD
- 2.4 數據字典
- 2.5 流程圖
- 2.6 需求評審
- 2.7 設計類
- 2.8 FAST分析
- 2.9 常見的關系類
- 3 嵌入式
- 3.1 容器技術
- 3.2 虛擬機技術
- 3.3 虛擬機和容器的不同點
- 4 數據庫
- 4.1 NoSQL數據庫
- 4.2 云數據庫
- 5 架構設計
- 5.1 中間件
- 5.2 SOA
- 6 其他
- 6.1 數據脫敏方法
- 6.2 訂單服務
- 6.3 區塊鏈
系統分析師考試時候自己整理的資料,僅供參考。
1 必做題
1.1 狀態機圖
狀態機圖用來描述對象狀態和事件之間的關系,強調一個實體基于事件反應的動態行為,顯示了該實體如何根據當前所處狀態對不同事件做出的反應。狀態圖包含開始、結束標志,狀態及轉換等。
狀態機圖是對屬性值(狀態)變化的的描述,描述對象狀態及狀態之間的轉移。它關注的是對象的狀態和行為。
1.2 活動圖
活動圖描述業務流程或工作流中的操作序列,強調了行為活動的順序和條件控制。它著重表現系統的行為,活動圖中一個活動結束后立即進入下一個活動,通過活動圖可以看到各個活動之間的銜接關系內容。包含開始、活動、判斷、結束標志等。
活動圖是對流程的描述,它關注的是功能的實現和操作的順序。
1.3 統一軟件開發過程RUP
9個核心工作流,6個核心過程工作流:業務建模、需求、分析和設計、實現、測試、部署
3個核心支持工作流:配置和變更管理、項目管理、環境
業務建模:描述了如何為新的目標組織開發了一個構想,并基于這個構思在商業用例模型和商業對象模型中定義組織的過程、角色和責任。
需求:描述系統應該做什么,并使開發人員和用戶就這一描述達成共識。
分析和設計:將需求轉化成未來下系統的設計,為系統開發一個健壯的結構并調整設計使其實現環境相匹配,優化其性能。
實現:以層次化的子系統形式定義代碼的組織結構;以組件的形式(源文件、二進制文件、可執行文件)實現類和對象;將開發出的組件作為單元進行測試以及集成由單個開發者(或小組)所產生的結果,使其成為可執行的系統。
測試:要驗證對象間的交互作用,驗證軟件中所有組件的正確集成,檢驗所有的需求已被正確的實現,識別并確認缺陷在軟件部署之前被提出并處理。
部署:描述了那些與確保軟件產品對用戶具有可用性相關的活動,成功的生成版本并將軟件分發給最終用戶。
配置和變更管理:描繪了如何在多個成員組成的項目中控制大量的產物,提供了準則來管理演化系統中的多個變體,跟蹤軟件創建過程中的版本。
項目管理:平衡各種可能產生沖突的目標,管理風險,克服各種約束并成功交付使用戶滿意的產品。
環境:向軟件開發組織提供軟件開發環境,包括過程和工具。
2 需求分析
2.1 數據流圖DFD
DFD是結構化分析中的重要方法和工具,是表達系統內數據的流動并通過數據描述系統功能的一種方法。DFD從數據傳遞和加工的角度,利用圖形符號通過逐層細分地描述系統內各個部件的功能和數據在它們之間傳遞的情況,來說明系統所完成的功能。
描述系統數據流程的圖形工具。它展示了系統中數據的流動路徑,從輸入到輸出,幫助開發人員理解數據的處理過程。
過程(Process):表示數據處理的步驟或功能。通常用圓形或橢圓形表示,內部寫上過程名稱或編號。
數據流(Data Flow):表示數據在過程之間的移動。用帶箭頭的直線表示,箭頭指向數據的流向,線上標注數據名稱。
加工:對數據流的變換處理
數據存儲(Data Store):表示系統中存儲數據的地方。用開放矩形(或兩條平行線)表示,內部寫上數據存儲名稱或編號。
外部實體(External Entity):描述了與系統交互的事務表示系統外部的實體,如用戶、外部系統等。用矩形表示,內部寫上實體名稱。
2.2 ER圖
描述數據庫中實體及其關系的圖形表示。它展示了系統中各個實體之間的聯系,幫助開發人員理解數據的結構。
2.3 狀態轉換圖STD
描述系統狀態的變化和轉換。它展示了系統在不同狀態之間的轉換路徑,幫助開發人員理解系統的行為和邏輯。
2.4 數據字典
定義系統中所有數據元素的詳細說明。它包括了數據的名稱、類型、長度、描述等信息,是開發人員編寫代碼和進行測試的重要參考。
2.5 流程圖
能清晰展示業務執行的流程順序,強調控制流。
2.6 需求評審
需求評審主要評審需求范圍與目標、需求文檔細節、完整性與一致性、技術可行性、業務價值與優先級、法律風險與合規性、用戶體驗與可用性,以及需求變更管理。
作用:發現遺漏需求、確保需求的質量和準確性、降低開發風險、促進團隊溝通和協作、提高項目的透明度和可控性、為項目干系人在需求問題上達成共識提供支撐、提高軟件質量。
2.7 設計類
實體類:映射需求中的每個實體,保存需要存儲在永久實體中的信息,例如員工信息、請假申請表
控制類:用于控制用例工作的類,用于對一個或幾個用例所特有的控制行為進行建模,例如:提交請假、審批請假
邊界類:用于封裝在用例內、外流動的信息或數據流,邊界例如:請假申請頁面、請假審批單、讀者證
2.8 FAST分析
需求分析案例
范圍定義:又叫初始研究階段或計劃階段等。列出問題和機會、協商項目的初步范圍、評估項目價值、計劃項目進度表和預算、匯報項目計劃
問題分析階段:又叫研究階段或可行性分析階段等。研究問題領域、分析問題和機會、分析業務過程、制定系統改進目標、修改項目計劃、匯報調查結果和建議
需求分析階段:定義需求、排列需求的有限次序、此U改項目計劃、交流需求陳述
邏輯設計:結構化功能需求、建立功能需求的原型(可選)、驗證功能需求、定義驗收測試用例
決策分析階段:確定候選方案、分析候選方案、比較候選方案、修改項目計劃、推薦一種系統
系統約束條件可以分為四類:進度、成本、技術、政策
需求定義:
一份需求定義文檔可能是項目文檔中被閱讀和引用得最多的文檔。應該包含以下內容:
系統應該提供的功能和服務。
非功能需求,包括系統的特征、特點和屬性;限制系統開發或者系統運行必須遵守的約束條件。
系統必須連接的其他系統的信息。
系統所有者和用戶使用需求定義文檔來確認需求以及任何可能產生的變化,并作為驗收的依據。
系統分析人員、設計人員和構造人員使用它來理解需要什么以及處理需求變更,開發用于驗證系統的測試用例。
項目經理使用它作為制定項目計劃、處理變更及驗收的依據。
2.9 常見的關系類
(1)關聯關系。關聯提供了不同類的對象之間的結構關系,它在一段時間內將多個類的實例連接在一起。關聯體現的是對象實例之間的關系,而不表示兩個類之間的關系。其余的關系涉及類元自身的描述,而不是它們的實例。
(2)依賴關系。兩個類 A 和 B,如果 B 的變化可能會引起 A 的變化,則稱類 A 依賴于類 B。依賴可以由各種原因引起,例如,一個類向另一個類發送消息、一個類是另一個類的數據成員、一個類是另一個類的某個操作參數等。
(3)泛化關系。泛化關系描述了一般事物與該事物中的特殊種類之間的關系,也就是父類與子類之間的關系。繼承關系是泛化關系的反關系,也就是說,子類繼承了父類,而父類則是子類的泛化。
(4)繼承關系。本質上就是泛化關系。繼承是在某個類的層次關聯中不同的類共享屬性和方法的一種機制。父類與子類的關系是一般與特殊的關系,一個父類可以有多個子類,這些子類都是父類的特例。
(5)聚合關系。表示類之間的整體與部分的關系,其含義是“部分”可能同時屬于多個“整體”,“部分”與“整體”的生命周期可以不相同。例如,汽車和車輪就是聚合關系,車子壞了,車輪還可以用;車輪壞了,可以再換一個。
(6)組合關系。表示類之間的整體與部分的關系。與聚合關系的區別在于,組合關系中的“部分”只能屬于一個“整體”,“部分”與“整體”的生命周期相同,“部分”隨著“整體”的創建而創建,也隨著“整體”的消亡而消亡。例如,一個公司包含多個部門,它們之間的關系就是組合關系。公司一旦倒閉,也就無所謂部門了。
(7)實現關系。實現關系將說明和實現聯系起來。接口是對行為而非實現的說明,而類中則包含了實現的結構。一個或多個類可以實現一個接口,而每個類分別實現接口中的操作。
3 嵌入式
3.1 容器技術
容器是一個不依賴操作系統運行的應用程序的環境。它通過linux的Namespace和Cgroups技術對應用程序進行隔離和限制;Namespace的作用是隔離,它讓應用程序只能看到Namespace內的世界;而Cgroups的作用是限制分配給進程的宿主機資源。但對于宿主機來說,這些被隔離了的進程跟其他進程并沒有太大區別。容器只是運行在宿主機上的一種特殊進程,多容器之間使用的還是同一個宿主機的操作系統內核,該特點導致隔離性比虛擬機差。
應用場景:多租戶云服務、開發與測試環境、災難恢復與備份
優點:資源隔離性強、操作系統多樣性、成熟的管理工具
缺點:性能開銷大、啟動時間長、占用資源多
3.2 虛擬機技術
虛擬機技術是指通過軟件的技術將一臺物理主機虛擬化為多臺邏輯計算機,每臺邏輯計算機可獨立運行不同的操作系統和各種應用程序。通過虛擬機技術,使得每臺虛擬計算機都擁有自己的虛擬硬件(虛擬CPU、網卡、內存等),并讓運行在虛擬機的操作系統認為自己獨占一臺物理主機。
應用場景:微服務架構、持續集成/持續部署(CI/CD)、跨平臺部署
優點:輕量級、一致性、易于部署和擴展、支持快速擴展、可以快速啟動和銷毀
缺點:隔離性不如虛擬機、依賴宿主操作系統、管理復雜性
3.3 虛擬機和容器的不同點
虛擬機和容器對資源的隔離層次不同,虛擬機從系統層面出發,通過虛擬化硬件資源達到隔離不同的操作系統,從而隔離不同的應用;容器是從進程層面出發,運行在操作系統之上的進程,通過分離進程資源達到隔離不同的應用。容器的優勢在于性能和效率;虛擬機的優勢在于穩定和安全。
系統升級的初衷是資源快速提升,對系統資源和性能要求更高,所以選擇了容器技術。
4 數據庫
4.1 NoSQL數據庫
在線社交網絡服務(SNS)中的即時通訊系統,需要存儲的數據種類多,比如圖片、視頻、文件、語音、文字,需要存儲的數據量大。傳統關系型數據庫的特點是適合存儲結構化數據,NoSQL數據庫比如鍵值存儲、列存儲、圖存儲等都適合SNS應用場景。它們的特點:擴展性好,靈活性強,大數據量,大量操作時性能高,支持復雜的圖形算法、高可用等。
4.2 云數據庫
云數據庫是指被優化或部署到一個虛擬計算環境中的數據庫,可以實現按需付費、按需擴展、高可用性以及存儲整合等優勢。根據數據庫類型一般分為關系型數據庫和非關系型數據庫(NoSQL 數據庫)。
云數據庫的特性有:實例創建快速、支持只讀實例、讀寫分離、故障自動切換、數據備份、Binlog 備份、SQL 審計、訪問白名單、監控與消息通知等。
5 架構設計
5.1 中間件
消息中間件:可選著消息中間件技術對突發流量進行削峰、異步、解耦。消息中間件是基于隊列與消息傳遞技術,在網絡環境中為應用系統提供異步或同步、可靠的消息傳輸的支撐性軟件系統。優勢:
異步通信:消息中間件支持異步通信,發送方不需要等待接收方的響應,從而提高系統的響應速度和吞吐量。
可靠性:消息中間件通常支持消息的持久化和事務處理,確保消息能夠被可靠地傳輸和處理,從而提高系統地可靠性和穩定性。
解耦合:消息中間件可以將應用程序之間地直接依賴關系解耦,從而提高系統地可擴展性和可維護性。
靈活性:消息中間件支持多種消息傳遞模式,如點對點和發布/訂閱。
透明性:消息中間件可以提供監控、追蹤、統計等功能,方便開發人員繼續寧調試和性能優化。
消息緩沖:消息中間件可以作為消息緩沖區,暫時存儲未處理的消息,從而平衡系統的負載和壓力。
5.2 SOA
6 其他
6.1 數據脫敏方法
數據脫敏的方法主要包括替換法、掩碼法、加密法、數據擾動、數據分割、偽數據生成、數據屏蔽、數據分類、虛擬化以及數據分區
?替換脫敏?:將敏感數據替換為符合規則的非敏感數據。例如,將姓名替換為隨機生成的字符串,將手機號碼替換為統一格式的虛擬號碼?
?加密脫敏?:對敏感數據進行加密處理,只有具有解密密鑰的人才能還原數據。常見的加密算法有對稱加密(如AES)和非對稱加密(如RSA)?
?通用化脫敏?:將敏感數據通用化處理,使其失去特定意義,但保留數據的格式和結構。例如,將日期統一替換為一個特定的日期,將地址替換為一個特定的地點?
?刪除脫敏?:直接刪除敏感數據,只留下其他非敏感數據。這種方法適用于身份證號碼、銀行卡號等敏感程度較高的數據項?
?掩碼法?:類似于替換法,但更為靈活,適用于具有固定格式的敏感數據。例如,信用卡號常保留前六位和后四位,中間部分用星號或其他字符替換?
?數據擾動?:通過在數據集中引入微小、隨機的變化,使個體數據點難以被識別,但保持整體數據分布、相關性和趨勢不變。常見的擾動技術包括差分隱私和加噪(如拉普拉斯噪聲、高斯噪聲)?
?數據分割?:將敏感數據拆分為多個部分,并分別存儲在不同的物理或邏輯位置,通過分散存儲降低單一攻擊導致數據泄露的風險?
?偽數據生成?:生成與原始數據相似的合成數據,這些數據在保留原始數據特性的同時,不包含任何真實的敏感信息?
?條件脫敏?:根據設定的條件(如時間、地點、用戶角色等)來決定是否對數據進行脫敏處理?
?實時脫敏?:在查詢數據庫時,根據用戶權限和需求,實時對數據進行脫敏處理?
6.2 訂單服務
訂單服務接收訂購請求,創建一個訂單,該記錄狀態為未支付,發布一個創建訂單事件;支付服務接收創建訂單事件,記錄為支付信息,發布一個支付完成事件;訂單服務接收支付完成事件,修改訂單記錄狀態為已支付。
6.3 區塊鏈
特性:
去中心化:區塊鏈采取了分布式計算和存儲,不存在中心化的硬件或管理機構,因此使得任意節點的權利和義務都是均等的。
開放性:區塊鏈系統的一個開放性性質,除了交易各方的私有信息被加密外,區塊鏈的數據對所有人公開的。
自治性(可共同維護):在整個區塊鏈系統中,無論是價值的提供者還是價值的接收者,都可以充當維護者,共同維護整個區塊鏈信息的可靠性。
匿名性(信息不可篡改):區塊鏈上的個人信息都是加密之后的,是一串數字和字母組成的字符串,不會出現信息泄露的問題。
技術:
分布式交易賬本:分布式賬本是區塊鏈的基礎,它將數據分散存儲在多個節點上,每個節點都保存一份完整的賬本數據。這種去中心化的存儲方式提高了數據的冗余度和容錯性,確保了數據的真實性和可靠性。
公私鑰簽名:使用非對稱加密機制,做簽名,以驗證持有人以及防止偽造效果,這種技術極難被破解,能驗證持有人自然能一定程度解決數據可信度的問題。
哈希散列函數:將繁雜的交易信息加密壓縮成固定字節的簡單哈希值,并成為該區塊的標識,保證區塊鏈中交易信息不被篡改。
時間戳:時間戳是一種數字簽名技術,通過將數據與特定時間點關聯起來,確保數據在該時間點之后無法被篡改。