【UML用戶指南】-02-UML基本元素的介紹(二)

目錄

1、語法和語義規則

2、UML中的公共機制

(1)規約

(2)修飾

(3)通用劃分

(4)擴展機制

衍型/版型/類型(stereotype)

標記值?(tagged value)

約束(constraint)

3、系統的體系結構建模

用例視圖 (use case view)

設計視圖 (design view)

交互視圖 (interaction view)

實現視圖 (implementation view)

部署視圖 (deployment view)

4、軟件開發的生命周期

4.1、初始 (inception)

4.2、細化 (elaboration)

4.3、構造 (construction)

4.4、移交 (transition)


1、語法和語義規則

命名——為事物、關系和圖起的名字;

范圍——使名字具有特定含義的語境;

可見性——這些名字如何讓其他成分看見和使用;

完整性——事物如何正確、一致地相互聯系;

執行——運行或模擬一個動態模型意味著什么。

2、UML中的公共機制

(1)規約

UML 不僅僅是一種圖形語言。實際上,在它的圖形表示法的每部分背后都有一個規約,這個規約提供了對構造塊的語法和語義的文字敘述
?

(2)修飾

UML中的大多數元素都有唯一而直接的圖形表示符號,這些圖形符號對元素的最重要的方面提供了可視化表示。

圖中表明這個類是一個抽象類,

有兩個公共操作、一個受保護操作和一個私有操作。

(3)通用劃分

第一種方式是對類和對象的劃分。類是一種抽象,對象是這種抽象的一個具體表現。

在圖形上,UML是這樣區分對象的:采用與類同樣的圖形符號來表示對象,并且在對象名的下面畫一道線

有一個名稱為Customer的類,它有3個對象,分別為

Jan(它被明確地標記為Customer的對象)

:Customer(匿名的Customer對象)

Elyse(它在規約中被說明為一種Customer對象,盡管在這里沒有明確地表示出來)。

第二種方式是接口和實現的分離。接口聲明了一個合約,而實現則表示了對該合約的具體實施,它負責如實地實現接口的完整語義。

在這個圖中,有一個名稱為SpellingWizard.dll的構件,

它實現了接口IUnknown和接口ISpelling,

并且還需要使用一個由其他構件提供的名為IDictionary的接口。

第三種方式是類型和角色的分離。類型聲明了實體的種類(如對象、屬性或參數),角色描述了實體在語境中的含義(如類、構件或協作等)。

任何作為其他實體結構中的一部分的實體(例如屬性)都具有兩個特性:

從它固有的類型派生出一些含義

從它在語境中的角色派生出一些含義

(4)擴展機制

衍型/版型/類型(stereotype)

擴展了UML的詞匯,可以用來創造新的構造塊,這個新構造塊既是從現有的構造塊派生的,但是針對專門的問題。

例如,假設正在使用一種編程語言,如Java或C++,經常要對“異常事件”建模。在這些語言里,“異常事件”就是類,只是用很特殊的方法進行了處理。通常可能只想允許拋出和捕捉異常事件,沒有其他要求。

此時可以讓異常事件在模型中成為“一等公民”——可以像對待基本構造塊一樣對待它們,只要用一個適當的衍型來標記它們即可。

標記值?(tagged value)

擴展了UML衍型的特性,可以用來創建衍型規約的新信息。

例如,如果在制作以盒裝形式銷售的產品,隨著時間的推移,它經過了多次發行,那么經常會想要跟蹤產品的版本和對產品做關鍵摘要的作者。

版本和作者不是UML的基本概念,通過引入新的標記值,可以把它們加到像類那樣的任何構造塊中去。例如,在圖中,在類EventQueue上明確標記了版本和作者,這樣就對該類進行了擴展。

約束(constraint)

擴展了UML構造塊的語義,可以用來增加新的規則或修改現有的規則。例如,可能想約束類 EventQueue,以使所有的增加都按序排列。如上圖,對操作 add增加了一個約束,即{ordered},以明確標示這一規則。
?

3、系統的體系結構建模

不同人員關注各自的問題

用況:用例

用例視圖 (use case view)

由描述可被最終用戶、分析人員和測試人員看到的系統行為的用例組成。用例視圖實際上沒有描述軟件系統的組織,而是描述了形成系統體系結構的動力。

在UML中,該視圖的靜態方面由用例圖表現;動態方面由交互圖、狀態圖和活動圖表現

設計視圖 (design view)

包含了類、接口和協作,它們形成了問題及其解決方案的詞匯。這種視圖主要支持系統的功能需求,即系統應該提供給最終用戶的服務。

在UML中,該視圖的靜態方面由類圖和對象圖表現;動態方面由交互圖、狀態圖和活動圖表現。類的內部結構圖特別有用。

交互視圖 (interaction view)

展示了系統的不同部分之間的控制流,包括可能的并發和同步機制。該視圖主要針對性能、可伸縮性和系統的吞吐量。

在UML中,對該視圖的靜態方面和動態方面的表現與設計視圖相同,但著重于控制系統的主動類和在它們之間流動的消息

實現視圖 (implementation view)

包含了用于裝配與發布物理系統的制品。這種視圖主要針對系統發布的配置管理,它由一些獨立的文件組成;這些文件可以用各種方法裝配,以產生運行系統。它也關注從邏輯的類和構件到物理制品的映射。

在UML中,該視圖的靜態方面由構件圖表現,動態方面由交互圖、狀態圖和活動圖表現。

部署視圖 (deployment view)

包含了形成系統硬件拓撲結構的結點(系統在其上運行)。這種視圖主要描述組成物理系統的部件的分布、交付和安裝。

在UML中,該視圖的靜態方面由部署圖表現,動態方面由交互圖、狀態圖和活動圖表現。

4、軟件開發的生命周期

1)用例驅動

把用例作為一種基本的制品,用于建立所要求的系統行為、驗證和確認系統的體系結構、測試以及在項目組成員間進行交流。

2)以體系結構為中心

以系統的體系結構作為一種基本制品,對被開發的系統進行概念化、構造、管理和演化。

3)迭代的和增量

迭代:涉及到對一連串可執行的發布的管理。

增量:涉及到系統體系結構的持續集成,以產生各種發布,每個新發布都比上一個發布有所改善

總的來講,迭代和增量的過程是風險驅動的(risk-driven),每個新的發布都致力于處理和降低對于項目成功影響最為顯著的風險。

RUP四個階段,即軟件開發生命周期

4.1、初始 (inception)

在此階段,萌發的開發想法經過培育要達到這樣一個目標:至少要在內部奠定足夠的基礎,以保證能夠進入到細化階段。

4.2、細化 (elaboration)

在此階段定義產品需求和體系結構。在這個階段,將明確系統需求,按其重要性排序并劃定基線。可以按一般的描述,也可以按精確的評價準則來排列系統的需求,每個需求都說明了特定的功能或非功能的行為,并為測試提供了基礎。

4.3、構造 (construction)

在此階段軟件從可執行的體系結構基線發展到準備移交給用戶。針對項目的商業需要,這里也要不斷地對系統的需求,特別是對系統的評價準則進行檢查,并要適當地分配資源,以主動地降低項目的風險

4.4、移交 (transition)

在此階段把軟件交付給用戶。在這個階段,軟件開發過程很少能結束,還要繼續改善系統,根除錯誤,增加早期發布未能實現的特性。

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

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

相關文章

Java編程常見問題匯總四

系列文章目錄 文章目錄 系列文章目錄前言一、忽略所有異常二、重復包裝RuntimeException三、不正確的傳播異常四、用日志記錄異常五、異常處理不徹底 前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。…

[C/C++]_[初級]_[在Windows和macOS平臺上導出動態庫的一些思考]

場景 最近看了《COM本質論》里關于如何設計基于抽象基類作為二進制接口,把編譯器和鏈接器的實現隱藏在這個二進制接口中,從而使用該DLL時不需要重新編譯。在編譯出C接口時,發現接口名直接是函數名,比如BindNativePort,怎么不是_BindNativePort?說明 VC++導出的函數默認是使…

專轉本英語應該怎么學?

來吧,寶子們,學姐給你們分享專轉本英語如何備考的方法了,單詞+語法,兩不耽誤,快拿著你們的小手來截圖記筆記啦~ 1、基礎差直接背單詞 對于基礎差的人呢,本身我們對英語這個科目就不感…

Google Earth Engine精度評價方法

今天講講如何在GEE中做最后的精度評價。主要是因為在和許多讀者或通過交流群,或通過私聊溝通過程中,發現很多人還不是很理解在GEE中分類后精度評價的問題。 在進行評價之前,需要明晰在GEE中精度評價分為哪幾種情況。我們這里說的是兩種情況。…

收藏品NFT的開發流程

開發收藏品NFT的流程涉及多個階段,從概念化和設計到技術實現和市場推廣。以下是詳細的開發步驟,通過這些步驟,可以成功開發和發布收藏品NFT項目,吸引用戶和投資者,并確保項目的持續運營和成功。北京木奇移動技術有限公…

Fiddler入門(接口抓包及APP測試)

目錄 一、Fiddler基礎介紹 二、Fiddler的作用 三、Fiddler安裝 四、Fiddler界面功能介紹 1、界面介紹 1)、菜單欄介紹 2)、工具欄介紹 3)、會話欄介紹 五、Fiddler抓取https數據 (面試題) 六、Fiddler…

C++ lambda表達式的作用和代碼示例

Lambda 表達式是 C11 引入的一種匿名函數語法,它可以方便地創建臨時函數對象,用于在函數調用時作為參數傳遞或者作為局部函數使用。Lambda 表達式可以捕獲外部變量,并具有與普通函數相似的語法結構。 主要作用如下: 簡化代碼&am…

【刷題(17)】技巧

一 技巧基礎 二 136. 只出現一次的數字 1 題目 2 解題思路 哈希表map 其實看到題目數組中某個元素出現的次數也可以直接用unordered_map容器統計每一個元素出現的次數,然后在遍歷整個map容器查看是否有元素出現的次數等于1 3 code class Solution { public:in…

商城項目【尚品匯】07分布式鎖-2 Redisson篇

1 Redisson功能介紹 基于自定義setnx實現的分布式鎖存在下面的問題: 重入問題:重入問題是指 獲得鎖的線程可以再次進入到相同的鎖的代碼塊中,可重入鎖的意義在于防止死鎖,比如HashTable這樣的代碼中,他的方法都是使用…

LightGBM 進行回歸建模的流程

LightGBM 進行回歸建模的流程 文章最前: 我是Octopus,這個名字來源于我的中文名–章魚;我熱愛編程、熱愛算法、熱愛開源。所有源碼在我的個人github ;這博客是記錄我學習的點點滴滴,如果您對 Python、Java、AI、算法有…

將HTML頁面中的table表格元素轉換為矩形,計算出每個單元格的寬高以及左上角坐標點,輸出為json數據

export function huoQuTableElement() {const tableData []; // 存儲表格數據的數組let res [];// 獲取到包含表格的foreignObject元素const foreignObject document.getElementById(mydctable);if (!foreignObject){return ;}// 獲取到表格元素let oldTable foreignObject…

Nativefier : 將網址打包成exe桌面程序

1、需求場景 在日常開發中,需要針對一些網頁在一體機上使用,同時在瀏覽器上也可以使用,這里推薦大家用nativefier,對網址進行打包。以下是nativefier安裝命令: npm install nativefier -g 2、使用方法 --arch 系統 …

《混凝土壩監測儀器系列型譜》修訂中監測儀器分類方案解讀

隨著科技的不斷進步和監測需求的日益增加,對監測儀器分類方案進行修訂已成為必然的趨勢。本文旨在探討《混凝土壩監測儀器系列型譜》中對現有儀器分類方式的修訂,以及監測儀器選用的相關內容。希望對大家中有所幫助: 一、取消過時條目&#x…

服務器是一種高性能計算機

服務器是一種高性能計算機,專門設計用于在網絡中提供各種服務。它們通常具備比普通計算機更快的CPU運算能力、更可靠的運行性能、更大的I/O外部數據吞吐能力以及更好的擴展性。

java中方法引用

目錄 方法引用: 引用靜態方法 引用成員方法 引用構造方法 使用類名引用成員方法 引用數組的構造方法 練習 方法引用: 把已經有的方法拿過來用,當做函數式接口中抽象方法的方法體 在Java中,方法引用是一種簡化Lambda表達式的…

詳解Spring支持的幾種注入方式

在 Spring 框架中,Bean 的注入方式主要有以下幾種,其中一些是自動注入的。以下是詳細說明: 1. 構造函數注入 (Constructor Injection) 自動注入:使用 Autowired 注解時,Spring 容器會自動調用帶有 Autowired 注解的構…

教務管理系統-學員辦理體系介紹

隨著時代的快速開展,教育方面也沒落下,不僅是線下線上都呈現許多訓練校園,辦理軟件也順勢而為的呈現廣闊訓練校園面前,許多的校園和訓練組織也都在運用教務管理系統了。運用教務管理系統里邊的學員辦理體系可以讓相應的辦理人員更…

Redis的一致性

一、產生的原因 使用緩存,在進行寫操作的時候就會出現不一致的問題。 一致性分為三類:強一致性,弱一致性,最終一致性 二、方案 2.1 延時雙刪 在更新數據庫的操作前后分別進行一次刪除緩存的操作,并在更新數據庫之后…

《HelloGitHub》第 98 期

興趣是最好的老師,HelloGitHub 讓你對編程感興趣! 簡介 HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。 github.com/521xueweihan/HelloGitHub 這里有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種編程語言 Python、…

Docker大學生看了都會系列(三、常用幫助、鏡像、容器命令)

系列文章目錄 第一章 Docker介紹 第二章 2.1 Mac通過Homebrew安裝Docker 第二章 2.2 CentOS安裝Docker 第三章 Docker常用命令 文章目錄 前言環境常用命令幫助命令鏡像命令容器命令 總結 前言 前面2章學完了基礎概念,實操安裝使用。接下來了解一些日常中常用的命令…