《软件工程》第 4 章 - 需求获取

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

4.1 软件需求的初始表示

4.1.1 用例

用例是从用户角度描述系统提供的功能,它定义了系统与外部参与者之间的交互序列。一个用例代表系统的一个完整功能,例如在 "在线图书借阅系统" 中,"借阅图书""归还图书" 都可视为独立用例。

4.1.2 用例图

用例图是可视化展示用例的工具,通过图形化方式呈现参与者、用例以及它们之间的关系。以下是 "在线图书借阅系统" 的用例图:

4.1.3 用例的表示

用例通常采用文本形式详细描述,包含用例名称、参与者、前置条件、后置条件、基本事件流、扩展事件流等。以 "借阅图书" 用例为例:

用例名称:借阅图书

参与者:读者

前置条件:读者已登录系统,图书存在库存

后置条件:图书库存减 1,生成借阅记录

基本事件流

  1. 读者选择要借阅的图书;
  2. 系统验证图书库存;
  3. 系统更新图书库存并生成借阅记录;
  4. 系统提示借阅成功。

扩展事件流:若图书库存不足,系统提示 "图书已借完"。

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 需求获取的过程模型

需求获取的过程模型通常包括以下步骤:

  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 分解或合并用例

若 "管理用户" 用例包含 "添加用户""修改用户信息""删除用户" 等复杂操作,可将其分解为多个子用例,便于理解和实现;若 "查询图书" 和 "查询期刊" 用例流程相似,可考虑合并为 "查询资料" 用例,减少冗余。

本章通过理论结合案例、代码与图表的方式,系统讲解了需求获取的关键内容。需求获取是一个反复沟通和迭代的过程,实际项目中需灵活运用这些方法,确保获取到准确、完整的需求。如果对某个知识点想进一步深入了解,或希望补充更多案例,欢迎随时交流!

上述内容全面覆盖了需求获取相关知识。若你觉得案例、代码或表述方式需要调整,欢迎提出,我会进一步优化。

相关推荐
极创信息2 小时前
信创产品认证怎么做?信创产品测试认证的主要流程
java·大数据·数据库·金融·软件工程
早日退休!!!4 小时前
自动微分、数值微分、符号微分对比总结
软件工程
张较瘦_2 天前
[论文阅读] AI + 软件工程 | 突破LLM代码生成瓶颈:编程知识图谱(PKG)让检索增强更精准
论文阅读·人工智能·软件工程
肖有米XTKF86462 天前
河北奢源水光商城系统制度开发
人工智能·软件工程·团队开发·csdn开发云
肖有米XTKF86462 天前
二二复制裂变小程序系统制度(双轨制公排模式)
人工智能·小程序·软件工程·团队开发
思茂信息3 天前
CST软件如何进行参数化扫描?
运维·开发语言·javascript·windows·ecmascript·软件工程·软件需求
互联网推荐官3 天前
上海物联网应用开发技术路径拆解:从协议选型到平台架构的工程实践
大数据·人工智能·软件工程
极创信息3 天前
信创领域五种主流CPU架构(X86 / ARM / RISC-V / MIPS / LoongArch)
java·arm开发·数据库·spring boot·mysql·软件工程·risc-v
Thanks_ks3 天前
软件系统中的熵增定律:技术债的形成与重构的艺术
软件工程·敏捷开发·架构设计·状态管理·代码重构·技术债·康威定律
互联网推荐官4 天前
上海小程序开发实践:技术选型、场景分化与平台能力的全面审视
人工智能·软件工程