在软件工程中,需求获取是挖掘用户真实需求的关键步骤,它为后续的设计、开发和测试提供坚实基础。本章将围绕需求获取的流程、方法及工具展开,结合实际案例与 Java 代码,深入讲解这一重要环节。

4.1 软件需求的初始表示
4.1.1 用例
用例是从用户角度描述系统提供的功能,它定义了系统与外部参与者之间的交互序列。一个用例代表系统的一个完整功能,例如在 "在线图书借阅系统" 中,"借阅图书""归还图书" 都可视为独立用例。
4.1.2 用例图
用例图是可视化展示用例的工具,通过图形化方式呈现参与者、用例以及它们之间的关系。以下是 "在线图书借阅系统" 的用例图:

4.1.3 用例的表示
用例通常采用文本形式详细描述,包含用例名称、参与者、前置条件、后置条件、基本事件流、扩展事件流等。以 "借阅图书" 用例为例:
用例名称:借阅图书
参与者:读者
前置条件:读者已登录系统,图书存在库存
后置条件:图书库存减 1,生成借阅记录
基本事件流:
- 读者选择要借阅的图书;
- 系统验证图书库存;
- 系统更新图书库存并生成借阅记录;
- 系统提示借阅成功。
扩展事件流:若图书库存不足,系统提示 "图书已借完"。
4.1.4 类图
类图用于描述系统中的类、类的属性和方法,以及类之间的关系(如关联、继承、聚合等)。在 "在线图书借阅系统" 中,定义 "图书" 类和 "读者" 类的 Java 代码及对应的类图如下:
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; // 读者ID
public 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 分解或合并用例
若 "管理用户" 用例包含 "添加用户""修改用户信息""删除用户" 等复杂操作,可将其分解为多个子用例,便于理解和实现;若 "查询图书" 和 "查询期刊" 用例流程相似,可考虑合并为 "查询资料" 用例,减少冗余。
本章通过理论结合案例、代码与图表的方式,系统讲解了需求获取的关键内容。需求获取是一个反复沟通和迭代的过程,实际项目中需灵活运用这些方法,确保获取到准确、完整的需求。如果对某个知识点想进一步深入了解,或希望补充更多案例,欢迎随时交流!
上述内容全面覆盖了需求获取相关知识。若你觉得案例、代码或表述方式需要调整,欢迎提出,我会进一步优化。