軟件工程---5.系統建模

從不同視角對系統建模

  1. 外部視角,上下文模型,對系統上下文或環境建模
  2. 交互視角,交互模型(功能模型),對系統與參與者或系統內構件之間的交互建模
  3. 結構視角,結構模型(靜態模型),對系統的組成或系統處理的數據結構建模
  4. 行為視圖,行為模型(動態模型),對系統的動態行為以及系統如何響應事件進行建模

UML同一建模語言

在這里插入圖片描述

UML動態圖

  1. 協作圖
  2. 順序圖
  3. 狀態圖
  4. 活動圖
UML靜態圖
  1. 用例圖
  2. 類圖
  3. 對象圖
  4. 構建圖
  5. 部署圖

UML可以用于建立系統開發中的多種模型

功能模型用例圖
對象模型類圖,對象圖
動態模型交互圖(順序圖),狀態圖,活動圖,協作圖
其他構件圖,部署圖

在這里插入圖片描述

交互模型(重點)

  1. 用例建模,系統與外部主體(人或其他系統)之間的交互,抽象層次高
  2. 順序圖,系統構件之間的交互,也可以包括外部主體,抽象層次低

用例建模

在這里插入圖片描述
對于上圖寫出用例詳述
在這里插入圖片描述

用例圖

在這里插入圖片描述

參與者

  1. 與系統交互的外部實體(人,其他系統)
  2. 定義系統邊界

標識參與者

  • 在標識參與者的初始階段,很難將參與者與對象區別開 來,例如一個數據庫可能是參與者,也可能是系統中對 象,可以通過確定系統邊界的方式來確定參與者
  • 標識參與者的時候需要考慮
    • 本系統與哪些參與者交互(人,其他系統)
    • 哪些參與者完成系統主要功能
    • 哪些參與者完成系統次要功能(維護,管理)

標識用例

  • 場景是用例的實例
  • 用例可以說明這一功能下的所有場景
  • 用例大多由參與者啟動
  • 用例貫穿系統事件的完整流程

用例詳述的寫法

  • 用動詞短語命名,清晰

    • 用戶登錄,打印信息,搜索網頁
  • 用名詞短語對參與者進行命名

    • 用戶,系統管理員,應用服務器
  • 系統邊界應該是清晰的

    • XX客戶端,需要對其功能范圍非常清楚
  • 事件流中使用主動語態,指明誰完成這一步驟

    • 用戶通過網銀結算,將貨款付到第三方支付機構
  • 事件流前后因果關系清晰

    • 用戶打開播放器
    • 搜索本地視頻文件
  • 應該描述一個完整的用戶事務流程

  • 異常情況應該分別描述

  • 無需描述系統接口

    • 不需描述用戶提交Web表單到服務器
  • 簡潔,明了

示例

在這里插入圖片描述

標識參與者與用例之間的關系

  1. 啟動,參與者啟動了該用例
  2. 參與,參與者參與了該用例

用例與用例之間的關系(牢記)

  1. 擴展,一個用例被定義為 基礎用例的擴展
  2. 包含,包含其他用例的行 為,減少用例之間的冗余
  3. 繼承,一個用例被泛化成 多個用例

順序圖

  • 順序圖主要用于對參與者與系統對象之間、系統對象自身之間的交互進行建模
  • 順序圖顯示對象之間的動態合作關系,它強調對象之間消息發送的順序,同時顯示對象之間的交互
  • 順序圖的一個用途是用來表示用例中的行為順序。當執行一個用例行為時,順序圖中的每條消息對應了一個類操作或引起狀態轉換的觸發事件

示例

注意長方形里,每寫一個要加冒號
在這里插入圖片描述

順序圖四要素(重點)

在這里插入圖片描述

  1. 示例或類元角色
  2. 消息流
  3. 對象生命線
  4. 注釋

結構模型

結構模型描述系統構件以及它們之間的關系

類圖

  1. 類圖以反映類的結構(屬性、操作)以及類之間的關系為主要目的,描述了軟件系統的結構,是一種靜態建模手段
  2. 類圖中的“類”與面向對象語言中的“類”的概念是對應的,是對現實世界中的事物的抽象

類之間的四種關系(重點)

  • 關聯、依賴、繼承、實現
  • 而其中關聯又有兩種特例:聚合和組合

關聯關系

聚合

在這里插入圖片描述

組合

在這里插入圖片描述

關聯和依賴的區別

  1. 從類之間關系的強弱程度來分,關聯表示類之間的很強的關系;依賴表示類之間的較弱的關系
  2. 從類之間關系的時間角度來分,關聯表示類之間的“持久”關系,這種關系一般表示一種重要的業務之間的關系,需要保存的,或者說需要“持久化”的,或者說需要保存到數據庫中的。比如學生管理系統中的Student類和Class(班級)類,一個Student對象屬于哪個Class是一個重要的業務關系,如果這種關系不保存,系統就無法管理。另外,**依賴表示類之間的是一種“臨時、短暫”關系,這種關系是不需要保存的,**比如Student類和StuEditScreen(學生登錄界面)類之間就是一種依賴關系,StuEditScreen類依賴Student類,依賴Student對象的信息來顯示編輯學生信息。
  3. 依賴是類與類之間的連接,依賴總是單向的。依賴關系代表一個類依賴于另一個類的定義。依賴在代碼中一般表示為方法的參數。
  4. 關聯是一種結構關系,說明一個事物的對象與另一個事物的對象相聯系。給定一個連接兩各類關聯,可以從一個類的對象導航到另一個類的對象。關聯可以有方向,即導航。一般不作說明的時候
  5. 導航是雙向的,不需要在線上標出箭頭。大部分情況下導航是單向的,可以加一個箭頭表示。關聯在代碼中一般表示為屬性(成員變量)。
  6. 設計類之間的關系是遵循的原則:首先判斷類之間是否是一種“關聯”關系,若不是再判斷是否是“依賴關系”,一般情況下若不是關聯,就是依賴關系。

聚合與組合

  1. 聚合關系也稱“has-a”關系,組合關系也稱“contains-a”關系。
  2. 聚合關系表示事物的整體/部分關系的較弱情況,部分的生命周期可以超越整體
  3. 組合關系表示事物的整體/部分關系的較強的情況,部分的生命周期不能超越整體,或者說不能脫離整體而存在。組合關系的“部分”,是不能在整體之間進行共享的。
  4. 聚合關系中,代表部分事物的可以屬于多個聚合對象,可以為多個聚合對象共享,而且可以隨時改變它。所從屬的聚合對象.代表部分事物的對象與代表聚合事物對象的生存期無關,一旦刪除了它的一個聚合對象不一定也就隨即刪除代表部分事物的對象。
  5. 在組合關系中,代表整體事物的對象負責創建和刪除代表部分事物的對象,代表部分事物只屬于一個組合對象.一旦刪除了組合對象,也就隨即刪除了相應的代表部分事物的對象

關聯關系的強度:關聯<聚合<組合。

泛化關系

在面向對象中一般稱為繼承關系,存在于父類與子類、父接口與子接口之間
在這里插入圖片描述

實現關系

對應于類和接口之間的關系
在這里插入圖片描述

總的來說,后四種關系所表現的強弱程度依次為:組合>聚合>關聯>依賴

行為模型

數據驅動的建模

行為驅動的建模

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383113.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383113.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383113.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件工程---6.體系結構設計

體系結構模型是什么&#xff1f; 體系結構模型&#xff0c;該模型描述系統如何被組織為一組相互通信的構件 體系結構分類 小體系結構關注單個程序的體系結構。在這個層次上&#xff0c;我們關注單個的程序是如何補分解為構件的。大體系結構關注包括其他系統、程序和程序構件…

【劍指offer】_06 變態跳臺階

題目描述 一只青蛙一次可以跳上1級臺階&#xff0c;也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 解題思路 鏈接&#xff1a;https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 關于本題&#xff0c;前提是…

【劍指offer】_07 矩形覆蓋

題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形&#xff0c;總共有多少種方法&#xff1f; 解題思路 依舊是斐波那契數列 2n的大矩形&#xff0c;和n個21的小矩形 其中target*2為大矩陣的大小 有以下幾種情形…

軟件工程---07.設計與實現

軟件設計和軟件實現 軟件設計是一個創造性的活動&#xff0c;在此活動中需要基于客戶需求識別軟件構件及其關系。軟件實現是將設計實現為一個程序的過程 為開發一個系統設計&#xff0c;你需要 理解并定義上下文模型以及系統的外部交互設計系統體系結構識別系統中的主要對象…

軟件工程---08.軟件測試

測試 測試的正向思維&#xff08;確認測試&#xff09; 向開發人員和客戶展示軟件滿足其需求測試的逆向思維&#xff08;缺陷測試&#xff09;找出可能導致軟件行為不正確原因。測試是更廣闊的軟件確認和驗證( Verification and Validation; V & V)過程的一部分。驗證和確…

軟件工程---15.軟件復用

復用的圖(牢記) 軟件復用的好處 開發加速有效的專家利用提高可依賴性降低開發成本降低過程風險符合標準 軟件復用的缺點 創建&#xff0c;維護以及使用一個構件庫查找&#xff0c;理解以及適配可復用構件維護成本增加缺少工具支持“不是在這里發明的”綜合癥 應用框架 現在…

軟件工程---16.基于構件的軟件工程

CBSE CBSE是定義、實現、集成或組裝松散耦合的獨立構件成為系統的過程。 基于構件的軟件工程的要素有: 完全由接口進行規格說明的獨立構件。構件標準使構件集成變得更為容易。中間件為構件集成提供軟件支持。開發過程適合基于構件的軟件工程。 CBSE的設計原則 構件是獨立的…

軟件工程---17.分布式軟件工程

分布式系統的5個優點 資源共享開放性并發性可伸縮性容錯性 分布式計算中必須考慮的設計問題 透明性&#xff1a;隱藏底層分布 開放性 可伸縮性 三個維度 規模&#xff1a;又分為增強擴展(單挑)&#xff0c;增加擴展(群毆)分布可靠性 信息安全性 主要防止以下類型的攻擊 攔…

軟件工程---18.面向服務的軟件工程

什么是Web服務 一個松耦合、可復用的軟件構件&#xff0c;封裝了離散的功能&#xff0c;該功能是分布式的并且可以被程序訪問。Web服務是通過標準互聯網和基于XML的協議被訪問的服務。 服務和軟件構件之間的一個重要的區別是 服務應該總是獨立的和松耦合的Web 服務沒有“請求…

【劍指offer】_08.數值的整數次方

題目描述 給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。 保證base和exponent不同時為0 解題思路 首先一個數的任意次方&#xff0c;這個數有可能是負數和正數和零&#xff0c;然后次方也有可能是負數和正數和零 當這個數是零時&#xff…

【劍指offer】_09二叉搜索樹的后序遍歷序列

題目描述 輸入一個整數數組&#xff0c;判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 解題思路 比如下面的這棵二叉搜索樹 它的后序遍歷為0214369875&#xff1b; 我們設當前根節點為root; 第一次…

【劍指offer】_10二叉樹和為某一路徑值

題目描述 輸入一顆二叉樹的跟節點和一個整數&#xff0c;打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解題思路 要求一路徑的和&#xff0c;那么必然終止條件為葉子結點&#xff0c;從根結點出發…

【劍指offer】_11整數中1出現的次數

題目描述 求出1~13的整數中1出現的次數,并算出100~1300的整數中1出現的次數&#xff1f;為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對于后面問題他就沒轍了。ACMer希望你們幫幫他,并把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的…

【劍指offer】_12 數組中的逆序對

題目描述 在數組中的兩個數字&#xff0c;如果前面一個數字大于后面的數字&#xff0c;則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。并將P對1000000007取模的結果輸出。 即輸出P%1000000007 解題思路 劍指offer的解法 看到這個題目&#xff0…

詳解Linux下通過yum安裝Mariadb/MySQL數據庫(騰訊云也適用)

1. 安裝Mariadb 安裝命令 yum -y install mariadb mariadb-server安裝完成MariaDB&#xff0c;首先啟動MariaDB systemctl start mariadb設置開機啟動 systemctl enable mariadbMariaDB的相關簡單配置 此命令進入到配置相關界面 mysql_secure_installation首先是設置密碼…

【劍指offer】_13 圓圈中最后的數

題目描述 年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小游戲。其中,有個游戲是這樣的:首先,讓小朋友們圍成一個大圈。然后,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱…

【劍指offer】_14 不用加減乘除做加法

題目描述 寫一個函數&#xff0c;求兩個整數之和&#xff0c;要求在函數體內不得使用、-、*、/四則運算符號。 解題思路 首先看十進制是如何做的&#xff1a; 5712&#xff0c;三步走 第一步&#xff1a;相加各位的值&#xff0c;不算進位&#xff0c;得到2。 第二步&#x…

海量數據處理(位圖和布隆過濾器)

哈希切割 給一個超過100G大小的log file, log中存著IP地址, 設計算法找到出現次數最多的IP地址&#xff1f; 與上題條件相同&#xff0c;如何找到top K的IP&#xff1f;如何直接用Linux系統命令實現 解決思路 找到出現次數最多的IP地址 要找到前TopK的IP地址&#xff0c;就…

C++11新特性的總結

C11新特性 auto關鍵字(C11&#xff09;基于范圍的for循環(C11&#xff09;. 指針空值nullptr(C11&#xff09;C動態內存管理序列式容器 array forward_list;繼承和多態:final overridedelete:不生成默認的成員函數default:強制編譯器生成默認的成員函數智能指針:unique_ptr,sh…

詳解C++中右值引用

98中的引用 概念特性引用的使用場景三種傳參方式效率的比較探索:引用的底層實現方式----->指針 T&------>T* constconst T&---->const T*const 引用和指針的區別 引用的總結 11中的右值引用 為什么要有右值引用 為了提高程序運行效率&#xff0c;C11中引…