? ?在軟件工程中,需求獲取是挖掘用戶真實需求的關鍵步驟,它為后續的設計、開發和測試提供堅實基礎。本章將圍繞需求獲取的流程、方法及工具展開,結合實際案例與 Java 代碼,深入講解這一重要環節。
4.1 軟件需求的初始表示
4.1.1 用例
? ?用例是從用戶角度描述系統提供的功能,它定義了系統與外部參與者之間的交互序列。一個用例代表系統的一個完整功能,例如在 “在線圖書借閱系統” 中,“借閱圖書”“歸還圖書” 都可視為獨立用例。
4.1.2 用例圖
? ?用例圖是可視化展示用例的工具,通過圖形化方式呈現參與者、用例以及它們之間的關系。以下是 “在線圖書借閱系統” 的用例圖:
4.1.3 用例的表示
? ?用例通常采用文本形式詳細描述,包含用例名稱、參與者、前置條件、后置條件、基本事件流、擴展事件流等。以 “借閱圖書” 用例為例:
用例名稱:借閱圖書
參與者:讀者
前置條件:讀者已登錄系統,圖書存在庫存
后置條件:圖書庫存減 1,生成借閱記錄
基本事件流:
- 讀者選擇要借閱的圖書;
- 系統驗證圖書庫存;
- 系統更新圖書庫存并生成借閱記錄;
- 系統提示借閱成功。
擴展事件流:若圖書庫存不足,系統提示 “圖書已借完”。
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 需求獲取的過程模型
需求獲取的過程模型通常包括以下步驟:
- 與用戶溝通,了解業務背景和需求意向;、
- 策劃并實施需求調查(如訪談、問卷);
- 整理和分析收集到的信息;
- 定義軟件系統的初步輪廓;
- 創建框架用例并評審。
其流程圖如下:
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 分解或合并用例
? 若 “管理用戶” 用例包含 “添加用戶”“修改用戶信息”“刪除用戶” 等復雜操作,可將其分解為多個子用例,便于理解和實現;若 “查詢圖書” 和 “查詢期刊” 用例流程相似,可考慮合并為 “查詢資料” 用例,減少冗余。
? ?本章通過理論結合案例、代碼與圖表的方式,系統講解了需求獲取的關鍵內容。需求獲取是一個反復溝通和迭代的過程,實際項目中需靈活運用這些方法,確保獲取到準確、完整的需求。如果對某個知識點想進一步深入了解,或希望補充更多案例,歡迎隨時交流!
? 上述內容全面覆蓋了需求獲取相關知識。若你覺得案例、代碼或表述方式需要調整,歡迎提出,我會進一步優化。