当前位置: 首页 > news >正文

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

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

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

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

相关文章:

  • 分布式事务处理方案
  • AtCoder Beginner Contest 407
  • Vue-模版绑定指令语法/什么是Vue组件
  • 关于OT IIOT系统远程访问的零信任安全
  • 力扣热题-有向图中最大颜色值
  • Leetcode-4 数组异或操作
  • 深入解读Qwen3技术报告(六):Qwen3性能评估
  • 自动化测试工具:Selenium详解
  • Docker 使用镜像[SpringBoot之Docker实战系列] - 第537篇
  • 本地依赖库的版本和库依赖的版本不一致如何解决?
  • Rust 1.0 发布十周年,梦想再度扬帆起航!
  • 【杂谈】STM32使用快速傅里叶变换库函数后如何比较准确地找到n次谐波幅值
  • 【生物信息学】k-mer的基本概念及应用
  • 限制 SSH 访问仅允许特定 IP 连接
  • 【Python-Day 18】玩转函数参数:*args 与 **kwargs 终极指南
  • 华为OD机试真题——考勤信息(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 树莓派4B 在系统环境安装snap7 西门子plc通讯包(佟掌柜专用)
  • 高电流测量新突破:借助铜进行温度补偿
  • 2025端午北海游玩攻略
  • ROS2基础知识
  • 青海哪家做网站的公司最大/开封搜索引擎优化
  • 网站建设干货图书/app网络推广方案
  • 如何做网站关键字优化/seo新手入门教程
  • 如何让百度快照找到自己的网站/南京seo整站优化技术
  • 响应适网站开发/aso优化推广公司
  • 哪里有做网站的平台/友情链接怎么弄