《軟件工程》第 4 章 - 需求獲取

? ?在軟件工程中,需求獲取是挖掘用戶真實需求的關鍵步驟,它為后續的設計、開發和測試提供堅實基礎。本章將圍繞需求獲取的流程、方法及工具展開,結合實際案例與 Java 代碼,深入講解這一重要環節。

4.1 軟件需求的初始表示

4.1.1 用例

? ?用例是從用戶角度描述系統提供的功能,它定義了系統與外部參與者之間的交互序列。一個用例代表系統的一個完整功能,例如在 “在線圖書借閱系統” 中,“借閱圖書”“歸還圖書” 都可視為獨立用例。

4.1.2 用例圖

? ?用例圖是可視化展示用例的工具,通過圖形化方式呈現參與者、用例以及它們之間的關系。以下是 “在線圖書借閱系統” 的用例圖:

4.1.3 用例的表示

? ?用例通常采用文本形式詳細描述,包含用例名稱、參與者、前置條件、后置條件、基本事件流、擴展事件流等。以 “借閱圖書” 用例為例:

用例名稱:借閱圖書

參與者:讀者

前置條件:讀者已登錄系統,圖書存在庫存

后置條件:圖書庫存減 1,生成借閱記錄

基本事件流

  1. 讀者選擇要借閱的圖書;
  2. 系統驗證圖書庫存;
  3. 系統更新圖書庫存并生成借閱記錄;
  4. 系統提示借閱成功。

擴展事件流:若圖書庫存不足,系統提示 “圖書已借完”。

4.1.4 類圖

? ?類圖用于描述系統中的類、類的屬性和方法,以及類之間的關系(如關聯、繼承、聚合等)。在 “在線圖書借閱系統” 中,定義 “圖書” 類和 “讀者” 類的 Java 代碼及對應的類圖如下:

// 圖書類class Book {private String title; // 書名private String author; // 作者private int stock; // 庫存public Book(String title, String author, int stock) {this.title = title;this.author = author;this.stock = stock;}public boolean borrowBook() {if (stock > 0) {stock--;return true;}return false;}public void returnBook() {stock++;}// 省略getter和setter方法}// 讀者類class Reader {private String name; // 姓名private String id; // 讀者IDpublic Reader(String name, String id) {this.name = name;this.id = id;}public void borrow(Book book) {if (book.borrowBook()) {System.out.println(name + " 成功借閱 " + book.getTitle());} else {System.out.println(book.getTitle() + " 已借完");}}public void returnBook(Book book) {book.returnBook();System.out.println(name + " 成功歸還 " + book.getTitle());}// 省略getter和setter方法}

類圖:

4.1.5 活動圖

? ?活動圖用于描述系統中活動的流程,展示從一個活動到另一個活動的控制流,類似于流程圖。“借閱圖書” 的活動圖如下:

4.2 需求獲取的過程模型

需求獲取的過程模型通常包括以下步驟:

  1. 與用戶溝通,了解業務背景和需求意向;、
  2. 策劃并實施需求調查(如訪談、問卷);
  3. 整理和分析收集到的信息;
  4. 定義軟件系統的初步輪廓;
  5. 創建框架用例并評審。

其流程圖如下:

4.3 定義軟件問題

4.3.1 識別客戶和用戶

? ?在 “在線圖書借閱系統” 中,客戶可能是圖書館管理者(提出系統建設需求),用戶包括讀者(使用借閱功能)和管理員(管理圖書和用戶信息)。明確區分客戶和用戶,有助于精準獲取不同角色的需求。

4.3.2 理解業務背景

? ?通過與圖書館工作人員交流,了解圖書借閱的業務流程,如借閱規則(借閱期限、可借數量)、歸還流程、逾期處理等,為后續需求分析提供依據。

4.3.3 策劃并實施需求調查

? ?制定詳細的調查計劃,針對讀者設計問卷,了解他們對借閱流程便捷性、圖書檢索功能的期望;對管理員進行訪談,獲取圖書管理、用戶權限管理等方面的需求。

4.3.4 定義軟件系統的輪廓

? ?根據調查結果,確定系統核心功能為圖書借閱、歸還、庫存管理和用戶信息管理,明確系統邊界,如不涉及圖書采購、財務結算等功能。

4.4 創建框架用例

4.4.1 策劃并實施用例調查

? ?對系統主要功能進行梳理,確定 “借閱圖書”“歸還圖書”“查詢庫存”“管理用戶” 等用例,通過與用戶溝通,細化每個用例的基本操作流程。

4.4.2 以框架用例記錄調查結果

以文本形式記錄框架用例,例如 “借閱圖書” 框架用例:

參與者:讀者

主要操作:選擇圖書、提交借閱請求、獲取借閱結果

4.4.3 創建用例圖

根據框架用例,繪制用例圖(參考 4.1.2 小節的用例圖),直觀展示系統功能與參與者的關系。

4.4.4 整合并評審框架用例

? ?組織客戶、用戶和開發團隊對框架用例進行評審,收集反饋意見,如讀者提出希望增加 “續借圖書” 功能,根據意見對框架用例進行調整和完善。

4.5 精化用例

4.5.1 用例交互動作序列的描述方法

? 使用順序圖詳細描述用例中對象之間的交互動作序列。以 “借閱圖書” 為例,順序圖如下:

4.5.2 分解或合并用例

? 若 “管理用戶” 用例包含 “添加用戶”“修改用戶信息”“刪除用戶” 等復雜操作,可將其分解為多個子用例,便于理解和實現;若 “查詢圖書” 和 “查詢期刊” 用例流程相似,可考慮合并為 “查詢資料” 用例,減少冗余。

? ?本章通過理論結合案例、代碼與圖表的方式,系統講解了需求獲取的關鍵內容。需求獲取是一個反復溝通和迭代的過程,實際項目中需靈活運用這些方法,確保獲取到準確、完整的需求。如果對某個知識點想進一步深入了解,或希望補充更多案例,歡迎隨時交流!

? 上述內容全面覆蓋了需求獲取相關知識。若你覺得案例、代碼或表述方式需要調整,歡迎提出,我會進一步優化。

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

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

相關文章

react diff 算法

diff 算法作為 Virtual DOM 的加速器,其算法的改進優化是 React 整個界面渲染的基礎和性能的保障,同時也是 React 源碼中最神秘的,最不可思議的部分 diff 算法會幫助我們就算出 VirtualDOM 中真正變化的部分,并只針對該部分進行原…

Gin項目腳手架與標配組件

文章目錄 前言設計思想和原則? 技術棧視頻實況教程sponge 內置了豐富的組件(按需使用)幾個標配常用組件主要技術點另一個參考鏈接 前言 軟件和汽車一樣,由多個重要零部件組裝而成。 本文堆積了一些常用部件,還沒來得及好好整理。先放著。 神兵利器雖多…

【Webtrees 手冊】第 10章 - 用戶體驗

Webtrees 手冊/用戶體驗 < Webtrees 手冊 跳轉到導航跳轉到搜索 信息 手冊部分仍在建設中 請耐心等待或隨意貢獻自己的力量:-)。 第 10 章 - 用戶體驗 <- 章節概述 目錄 1多位系譜學家的合作 1.1家庭研究模型1.2“孤膽戰士”模型1.3示范“本地家庭書”1.4模特“俱樂部”…

Linux 進程概念(下)

目錄 前言 4.進程狀態 一.普遍的操作系統層面上宏觀概念&#xff1a; 二.具體的Linux操作系統的狀態&#xff1a; 5.進程優先級&#xff08;了解&#xff09; 6.其他概念 進程切換 前言 本篇是接著上一篇的內容繼續往下了解進程相關的一些概念&#xff01; 4.進程狀態 運…

使用java實現word轉pdf,html以及rtf轉word,pdf,html

word,rtf的轉換有以下方案&#xff0c;想要免費最靠譜的是LibreOffice方案, LibreOffice 是一款 免費、開源、跨平臺 的辦公軟件套件&#xff0c;旨在為用戶提供高效、全面的辦公工具&#xff0c;適用于個人、企業和教育機構。它支持多種操作系統&#xff08;Windows、macOS、…

IP證書的作用與申請全解析:從安全驗證到部署實踐

在網絡安全領域&#xff0c;IP證書&#xff08;IP SSL證書&#xff09;作為傳統域名SSL證書的補充方案&#xff0c;專為公網IP地址提供HTTPS加密與身份驗證服務。本文將從技術原理、應用場景、申請流程及部署要點四個維度&#xff0c;系統解析IP證書的核心價值與操作指南。 一…

GitLab 18.0 正式發布,15.0 將不再受技術支持,須升級【三】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

超簡單Translation翻譯模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻譯模型可以實現200多種語言翻譯&#xff0c;Helsinki-NLP/opus-mt-en-zh是其中英互譯模型。由于項目需要&#xff0c;在本地進行搭建&#xff0c;并記錄下搭建過程&#xff0c;方便后人。 1. 基本硬件環境 CPU&#xff1a;N年前的 Intel…

Go語言JSON 序列化與反序列化 -《Go語言實戰指南》

JSON&#xff08;JavaScript Object Notation&#xff09;是一種常見的數據交換格式。Go 標準庫提供了 encoding/json 包&#xff0c;用于方便地將結構體與 JSON 之間互轉。 一、序列化&#xff08;Marshal&#xff09; 將 Go 中的數據結構&#xff08;如結構體、map、slice 等…

免費PDF工具-PDF24V9.16.0【win7專用版】

【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取碼: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php

網絡 :序列和反序列化

網絡 &#xff1a;序列和反序列化 &#xff08;一&#xff09;序列和反序列 概念&#xff08;二&#xff09;實例1. 封裝socket 接口2. 制定協議&#xff08;用于實現序列和反序列化&#xff09;3. 計算(實現計算器功能)4. 服務器(將上面所有的類功能調用起來)5. 服務端6.客戶端…

LiveQing 視頻點播流媒體 RTMP 推流服務功能:搭建 RTMP 視頻流媒體服務詳細指南

LiveQing視頻點播流媒體RTMP推流服務功能&#xff1a;搭建RTMP視頻流媒體服務詳細指南 一、流媒體服務搭建二、推流工具準備三、創建鑒權直播間四、獲取推流地址五、配置OBS推流六、推流及播放七、獲取播放地址7.1 頁面查看視頻源地址7.2 接口查詢 八、相關問題解決8.1 大疆無人…

UE5 Niagara 如何讓四元數進行旋轉

Axis Angle中&#xff0c;X,Y,Z分別為旋轉的軸向&#xff0c;W為旋轉的角度&#xff0c;在這里旋轉角度不需要除以2&#xff0c;因為里面已經除了&#xff0c;再將計算好的四元數與要進行旋轉的四元數進行相乘&#xff0c;結果就是按照原來的角度繞著某一軸向旋轉了某一角度

【微服務】SpringBoot 對接飛書審批流程使用詳解

目錄 一、前言 二、前置準備 2.1 開通企業飛書賬戶 2.2 確保賬戶具備多維表操作權限 2.3 獲取飛書開放平臺文檔 2.4 創建應用 2.5 發布應用 2.6 應用添加操作權限 2.7 獲取SDK 三、審批流程對接過程 3.1 配置流程審批定義(流程審批模型) 3.2 自定義應用添加審批AP…

主鍵與唯一鍵詳解:概念、區別與面試要點

主鍵與唯一鍵詳解:概念、區別與面試要點 一、核心概念解析 1.1 主鍵(Primary Key) 主鍵是數據庫表中用于唯一標識每一行記錄的列或列組合,具有以下核心特性: 唯一性:主鍵值在整個表中必須唯一,不允許重復非空性:主鍵列不允許包含NULL值不可變性:主鍵值一旦確立,原則…

前端面試準備-1

1.NodeJS的優缺點 優點&#xff1a;   高并發&#xff08;最重要的優點&#xff09;   適合I/O密集型應用 缺點&#xff1a;   不適合CPU密集型應用&#xff1b;CPU密集型應用給Node帶來的挑戰主要是&#xff1a;由于JavaScript單線程的原因&#xff0c;如果有長時間運行的…

GO并發過高導致程序崩潰如何解決

#作者&#xff1a;曹付江 文章目錄 1.并發過高導致程序崩潰2. 如何解決2.1 利用 channel 的緩存區2.2 利用第三方庫 3 調整系統資源的上限3.1 ulimit3.2 虛擬內存(virtual memory) 1.并發過高導致程序崩潰 看一個非常簡單的例子&#xff1a; func main() {var wg sync.WaitG…

Linux -- gdb/cgdb的認識和使用

預備知識 程序的發布?式有兩種&#xff0c; debug 模式和 release 模式&#xff0c; Linux gcc/g 出來的?進制程 序&#xff0c;默認是 release 模式。 要使?gdb調試&#xff0c;必須在源代碼?成?進制程序的時候, 加上 -g 選項&#xff0c;如果沒有添加&#x…

window 顯示驅動開發-Direct3D 呈現性能改進(四)

調用資源創建、映射和取消映射函數的行為更改 對于 WDDM 1.3 及更高版本驅動程序實現的這些函數&#xff0c;Direct3D 運行時為映射默認方案提供一組受限的輸入值。 這些受限值僅適用于支持功能級別 11.1 及更高版本的驅動程序。 CreateResource (D3D11) 函數— 這些輸入 D3…

3.python操作mysql數據庫

前言&#xff1a;在現代應用程序中&#xff0c;數據庫扮演者至關重要的角色。mysql是一個流行的關系型數據庫管理系統&#xff0c;廣泛應用于各種規模的應用中。在pytho中&#xff0c;我們可以通過連接庫與mysql數據庫進行交互&#xff0c;實現數據的增刪改查操作。與此同時&am…