《软件工程》第 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 分解或合并用例

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

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

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

相关推荐
啊阿狸不会拉杆21 小时前
《软件工程》实战— 在线教育平台开发
java·vue.js·软件工程·团队开发
红狐格格21 小时前
软件工程:关于招标合同履行阶段变更的法律分析
软件工程
许泽宇的技术分享21 小时前
AI与软件工程结合的未来三年发展路径分析
人工智能·软件工程
世冠科技21 小时前
世冠科技亮相中汽中心科技周MBDE会议,共探汽车研发数字化转型新路径
大数据·人工智能·matlab·软件工程
吕永强1 天前
大话软工笔记—分离之业务与管理
项目管理·软件工程
cloud studio AI应用2 天前
《基于AIGC的智能化多栈开发新模式》研究报告重磅发布! ——AI重塑软件工程,多栈开发引领未来
人工智能·aigc·软件工程
却道天凉_好个秋2 天前
软件工程(八):UML类图的几种关系
软件工程·uml
ruanjiananquan992 天前
软件工程 3.0:智能驱动的软件新时代
软件工程
计算机软件bs辅导2 天前
t009-线上代驾管理系统
毕业设计·软件工程·springboot·大学生·计算机软件·毕设辅导·代驾系统