团队作业3--需求改进&系统设计

①针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改

问题 修改
系统仅提供图书借阅和归还功能,缺少对电子书和在线阅读的支持,可能无法满足数字化阅读需求。 扩展系统支持电子书管理与在线阅读功能,新增FR-E1:电子书上传与存储,FR-E2:在线阅读器模块(支持书签、笔记、高亮),并在验收标准中增加“电子书阅读体验测试”。
当前图书分类和搜索功能较为简单,无法满足用户快速查找特定主题或作者的需求。 优化分类与搜索功能,新增FR-S1:多维度搜索(按主题、作者、出版社、出版日期),FR-S2:智能推荐(基于借阅历史和评分),在前端增加搜索建议和筛选条件。
系统未设计图书库存预警机制,容易出现图书缺货或重复借出的情况。 增加库存管理与预警模块,FR-I1:实时库存监控,FR-I2:库存下限报警与自动补货建议,后台提供库存报表和统计分析功能,保证借阅流程稳定性。
用户管理功能缺乏对家庭或团队共享账号的支持,无法体现特色服务。 新增家庭/团队借阅功能,FR-U1:家庭账号绑定(最多5名成员),FR-U2:共享借阅权限与日志追踪,前端增加成员管理界面,后台实现借阅审批与借阅统计功能,强化系统特色。
加分部分:
  1. 目标用户群体分析
    目标用户群体:

学生群体:频繁借阅教材、参考书和文学作品。
家庭用户:希望通过家庭共享账号进行图书借阅,特别是在孩子们进行课外阅读时,家长希望监控借阅记录和建议书籍。
办公人员/职场用户:喜欢借阅专业书籍,提升工作技能和个人发展。
老年群体:倾向于通过系统借阅书籍进行娱乐和学习,操作简易性和舒适度非常关键。
核心需求:

便捷的书籍搜索、借阅与归还功能。
支持电子书管理和在线阅读功能。
共享家庭账号功能,方便多人使用。
智能推荐系统,帮助用户发现有兴趣的书籍。
痛点:

图书管理系统功能单一,未能满足所有用户需求。
查找书籍和借阅功能不够便捷,尤其是缺少智能推荐。
没有针对家庭用户的账号共享或借阅日志功能,家长无法跟踪孩子的借阅情况。
老年群体在操作时遇到困难,界面过于复杂,不易使用。
2. 用户调研过程
2.1 调研方式与方法:

  1. 用户访谈(线上/线下):

我们通过与学生、家庭用户以及老年群体进行面对面的访谈,收集他们的使用体验和对图书管理系统的期望。重点询问他们在传统借阅系统中的痛点、他们借阅书籍的频率、需求以及对借阅功能的期望。

  1. 用户问卷调查:

通过在线问卷收集大规模的反馈,涵盖用户对搜索功能、借阅界面、电子书需求、账号共享等方面的看法。问卷中包括量化题(如评分系统)和开放性问题(如用户建议)。

  1. 可用性测试:

针对系统原型进行可用性测试,邀请目标用户群体实际操作系统,观察他们在使用过程中的问题与反馈,记录他们的操作习惯和常遇到的困难。

2.2 调研结果与发现:
学生群体:

需求:希望能快速找到参考书、教材,并能方便地查看电子书内容。
痛点:现有系统搜索功能过于简单,无法快速定位到需要的书籍,借阅时间较长,体验感较差。
家庭用户:

需求:需要一个家庭共享账号,方便多个人借阅同一书籍,并且家长可以查看孩子的借阅记录。
痛点:目前系统缺乏家庭共享的功能,导致借阅操作繁琐,孩子借阅的书籍家长无法追踪。
老年群体:

需求:需要系统界面简单,操作直观,字体大、按钮清晰。
痛点:当前的系统对老年用户不够友好,按钮小、字体不清晰,操作时易出错。
3. 展示原型与产品改进
3.1 原型展示:
原型1:搜索与借阅页面

产品前:原系统的书籍搜索功能简单,只有按书名和作者搜索,缺少主题或类别筛选。
产品后:新增多维度搜索功能,可以按书名、作者、出版社、出版日期、主题进行筛选,并引入智能推荐系统,根据用户借阅历史自动推荐书籍。
原型2:家庭共享功能

产品前:没有家庭账号共享功能,多个家庭成员只能单独借阅书籍,无法共享记录。
产品后:添加家庭账号功能,每个家庭最多可绑定5名成员,支持共享借阅权限,家长可以查看孩子的借阅历史,设置阅读目标。
原型3:老年用户界面

产品前:系统界面设计复杂,文字过小,操作不直观。
产品后:优化界面设计,增加大字体、简洁图标、简化操作流程,专为老年用户打造的友好界面。
3.2 用户使用前后对比:
产品前:

学生借阅一本书需要通过复杂的分类和搜索,耗时较长。
家庭用户无法共享借阅记录,家长无法掌控孩子的阅读内容。
老年用户操作困难,经常需要他人帮助。
产品后:

学生通过智能推荐和多维度搜索能迅速找到所需书籍,借阅体验大大提升。
家庭共享功能让家长可以轻松监控孩子的借阅记录,家庭成员之间可以共享书籍。
老年用户界面设计简洁,操作流程清晰,提升了他们的使用体验。
4. 展示照片或视频:
为了更好地展现这些变化和调研过程,可以通过以下方式收集资料:

照片:用户操作界面之前与之后的对比截图,展示原型在不同用户群体中的实际效果。
视频:拍摄用户访谈过程和可用性测试,记录用户使用前后感受的变化,展示产品功能的实际应用。
5. 总结与后续步骤:
需求分析:通过调研发现的痛点,我们做出了相应的产品功能改进,进一步提升了系统的便捷性与用户体验。
后续开发:基于原型与用户反馈的结果,继续优化系统功能,特别是对家庭共享和老年用户的细节设计,确保不同用户群体的需求都能得到满足。
反馈循环:在系统上线后,继续收集用户反馈,并进行不断的改进与优化。

②修改完善上周提交的需求规格说明书
故事阐述不具体,情景不完善
修改部分:“
用户故事:家庭共享功能
场景描述:
李女士是一位家庭主妇,平时有些空闲时间喜欢阅读小说和杂志。她的两个孩子分别在小学和初中,李女士希望能通过一个简单的系统来管理家人的阅读需求。她经常给孩子们借书,但有时候孩子们自己挑选的书籍并不适合他们,或者他们已经读过了,而李女士又没有时间检查。

另外,李女士也想知道每个孩子的借阅情况,以便为他们推荐合适的书籍和监督他们的阅读习惯。她需要一个平台,可以让她轻松监控孩子的借阅记录,并共享她自己的书籍。

用户需求:
李女士希望:

自己和家里的孩子们能共享一个账号进行借书。
可以查看孩子们的借阅记录,并为他们推荐适合的书籍。
方便地查看每个孩子已经借阅的书籍和未归还的书籍。
有能力限制孩子们借书的数量,避免他们借太多书。”
③系统设计:
一、系统架构设计
一个常见的、符合现代开发标准的图书管理系统架构通常会采用分层架构。分层架构能有效地实现模块化,确保不同开发人员可以分别关注不同的层次,减少相互依赖,提高开发效率。具体来说,系统可以分为以下几个主要层次:

表示层(前端层)

功能:与用户交互,展示图书信息,用户登录、注册、浏览图书、借阅、归还、推荐等功能。前端层通过与后端的API进行数据交互。
技术选择:HTML、CSS、JavaScript,框架如React、Vue.js,或者是基于模板的MVC框架(如Spring MVC)。
业务逻辑层(服务层)

功能:处理核心的业务逻辑,如图书借阅、归还、库存管理、用户管理等。它充当前端和数据层之间的中介,执行复杂的操作并做数据验证。
技术选择:Java(Spring Boot、Spring Cloud)、Python(Django、Flask)、Node.js等。
数据访问层(DAO层)

功能:与数据库直接交互,负责数据库操作(增、删、改、查)。该层通过定义接口向上层提供数据访问的服务。
技术选择:JDBC、Hibernate、MyBatis(Java),SQLAlchemy(Python)等。
数据层(数据库)

功能:存储系统中的所有数据,包括图书信息、借阅记录、用户信息、历史记录等。采用关系型数据库(如MySQL)或非关系型数据库(如MongoDB)进行存储。
技术选择:MySQL、PostgreSQL等关系型数据库,MongoDB等NoSQL数据库。
分层架构图:
plaintext
+-----------------------------------+
| 用户界面层 (UI) |
+-----------------------------------+
|
+-----------------------------------+
| 业务逻辑层 (服务层) |
+-----------------------------------+
|
+-----------------------------------+
| 数据访问层 (DAO层) |
+-----------------------------------+
|
+-----------------------------------+
| 数据层 (数据库) |
+-----------------------------------+
接口定义:
UI层 → 业务逻辑层:通过HTTP API(如RESTful API)进行通信,提交用户的请求。
业务逻辑层 → 数据访问层:通过数据库接口调用,如通过DAO模式进行数据库操作。
数据访问层 → 数据层:执行SQL语句操作数据库,获取或更新数据。
二、数据库设计
对于一个图书管理系统,我们需要设计合理的数据库结构来支持系统的各种操作。系统需要跟踪图书信息、用户信息、借阅记录以及一些辅助功能如推荐系统等。以下是数据库的基本设计:

  1. 表结构设计
    用户表(Users)

功能:存储用户的基本信息。
字段:
user_id (INT, 主键, 自增) : 用户唯一ID
username (VARCHAR) : 用户名
password (VARCHAR) : 密码
email (VARCHAR) : 用户邮箱
role (ENUM: 'user', 'admin') : 用户角色,区分普通用户与管理员
created_at (TIMESTAMP) : 账户创建时间
sql
CREATE TABLE Users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255),
role ENUM('user', 'admin') DEFAULT 'user',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
图书表(Books)

功能:存储所有图书的详细信息。
字段:
book_id (INT, 主键, 自增) : 图书唯一ID
title (VARCHAR) : 图书标题
author (VARCHAR) : 作者
isbn (VARCHAR) : ISBN号
published_year (YEAR) : 出版年份
category (VARCHAR) : 图书类别
available_count (INT) : 可借数量
total_count (INT) : 图书总数量
created_at (TIMESTAMP) : 图书添加时间
sql
CREATE TABLE Books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author VARCHAR(255),
isbn VARCHAR(13),
published_year YEAR,
category VARCHAR(50),
available_count INT DEFAULT 0,
total_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
借阅记录表(BorrowRecords)

功能:存储每个用户的借阅记录。
字段:
borrow_id (INT, 主键, 自增) : 借阅记录ID
user_id (INT, 外键) : 用户ID,关联到Users表
book_id (INT, 外键) : 图书ID,关联到Books表
borrow_date (DATE) : 借书日期
due_date (DATE) : 归还日期
return_date (DATE) : 实际归还日期(为空表示未归还)
status (ENUM: 'borrowed', 'returned') : 借阅状态,借阅中或已归还
sql
CREATE TABLE BorrowRecords (
borrow_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
book_id INT,
borrow_date DATE,
due_date DATE,
return_date DATE,
status ENUM('borrowed', 'returned') DEFAULT 'borrowed',
FOREIGN KEY (user_id) REFERENCES Users(user_id),
FOREIGN KEY (book_id) REFERENCES Books(book_id)
);
推荐表(Recommendations)(可选,用于推荐系统)

功能:根据用户历史借阅记录生成推荐书籍。
字段:
recommendation_id (INT, 主键, 自增) : 推荐记录ID
user_id (INT, 外键) : 用户ID,关联到Users表
book_id (INT, 外键) : 图书ID,关联到Books表
created_at (TIMESTAMP) : 推荐时间
sql
CREATE TABLE Recommendations (
recommendation_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
book_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES Users(user_id),
FOREIGN KEY (book_id) REFERENCES Books(book_id)
);
2. 关系图(ER图)
在数据库设计中,我们可以根据上述表的字段创建ER图,定义表之间的关系:

Users ↔ BorrowRecords:一对多关系,一个用户可以借阅多本书。
Books ↔ BorrowRecords:一对多关系,一本书可以被多次借阅。
Users ↔ Recommendations:一对多关系,一个用户可以有多个推荐记录。
Books ↔ Recommendations:一对多关系,一本书可以被多个用户推荐。
④Alpha阶段任务分配计划
一、Product Backlog功能项选择
首先,依据项目组能够提供的总时间、功能模块的优先级以及模块之间的依赖关系,在Product Backlog中选择待实现的功能项。假设项目目标是完成一个图书管理系统的Alpha阶段,并且小组只有黄思聪一人负责开发工作。

项目总时间: 1周 (假设为40小时工作时间)

主要模块:

用户管理模块
图书管理模块
借阅管理模块
系统配置与权限管理模块
根据优先级和依赖关系,选定的功能模块如下:

用户管理模块:
用户注册与登录
用户角色与权限管理
图书管理模块:
添加图书
查询图书
借阅管理模块:
借阅图书
归还图书
选定功能项:

用户注册和登录功能
用户角色管理(普通用户、管理员)
图书添加功能
图书查询功能
借阅和归还图书功能
二、Sprint Backlog任务分解
接下来,我们对选定的功能项进行进一步分解。将功能模块拆分为小任务,每个任务的预计完成时间控制在1-10小时之间。任务分解后,可以确保黄思聪在40小时的工作时间内完成任务。

任务分解:

用户管理模块

用户注册与登录功能
编写数据库表结构(用户表设计) - 2小时
实现用户注册接口(前后端交互) - 4小时
实现用户登录接口(前后端交互) - 4小时
测试与修复注册、登录功能 - 3小时
用户角色与权限管理
设计用户角色权限表 - 1小时
实现权限管理接口 - 3小时
测试与修复权限功能 - 2小时
图书管理模块

添加图书功能
编写数据库表结构(图书表设计) - 1小时
实现添加图书功能接口 - 3小时
测试添加图书功能 - 2小时
图书查询功能
实现图书查询接口(支持按标题、作者等检索) - 4小时
测试图书查询功能 - 2小时
借阅管理模块

借阅图书功能
编写借阅记录表结构 - 1小时
实现借阅图书接口(包括借阅状态管理) - 4小时
测试借阅图书功能 - 3小时
归还图书功能
编写归还记录表结构 - 1小时
实现归还图书接口(包括归还状态更新) - 3小时
测试归还图书功能 - 2小时
Sprint Backlog汇总:
任务 预计时间(小时)
用户注册与登录功能 9小时
用户角色与权限管理 6小时
添加图书功能 6小时
图书查询功能 6小时
借阅图书功能 8小时
归还图书功能 6小时
总计 40小时
三、甘特图(迭代冲刺计划)
根据任务分解和每个任务的工作量,我们可以绘制一个甘特图,合理安排每一天的工作进度。假设开发周期是1周(5个工作日),每一天的工作时间为8小时,总工作量为40小时。

迭代冲刺计划:

plaintext
+-------------------------+--------+--------+--------+--------+--------+
| 任务 | 第一天 | 第二天 | 第三天 | 第四天 | 第五天 |
+-------------------------+--------+--------+--------+--------+--------+
| 用户注册与登录功能 | 2小时 | 2小时 | 2小时 | 2小时 | |
+-------------------------+--------+--------+--------+--------+--------+
| 用户角色与权限管理 | 1小时 | 2小时 | 2小时 | 1小时 | |
+-------------------------+--------+--------+--------+--------+--------+
| 添加图书功能 | 2小时 | 2小时 | 2小时 | | |
+-------------------------+--------+--------+--------+--------+--------+
| 图书查询功能 | 2小时 | 2小时 | 2小时 | | |
+-------------------------+--------+--------+--------+--------+--------+
| 借阅图书功能 | 2小时 | 2小时 | 2小时 | 2小时 | |
+-------------------------+--------+--------+--------+--------+--------+
| 归还图书功能 | 2小时 | 2小时 | 2小时 | | |
+-------------------------+--------+--------+--------+--------+--------+
| 总计 | 9小时 | 10小时 | 10小时 | 8小时 | 3小时 |
+-------------------------+--------+--------+--------+--------+--------+
⑥测试计划
一、测试目标
测试计划的主要目标是确保开发的产品符合预期功能,并且系统在不同场景下能够稳定运行。测试将贯穿整个开发过程,从功能实现到系统集成阶段,持续进行。

产品定义:
本次开发的产品是一个图书管理系统,包括以下核心功能:

用户注册与登录
用户角色与权限管理
图书添加与查询
借阅与归还图书
二、测试类型
根据项目需求和阶段,测试将覆盖以下几种类型:

单元测试(Unit Testing):

目标: 确保各个功能模块中的每个单元(如函数、方法、模块)都能按预期工作。
内容: 主要测试注册、登录、添加图书、借阅和归还功能等的基本功能是否正常。
负责人: 开发人员黄思聪负责。
集成测试(Integration Testing):

目标: 验证不同模块之间的接口和数据传递是否正常。
内容: 测试用户注册后是否可以正确登录、借阅图书后是否能更新借阅状态、图书查询功能是否能显示正确数据。
负责人: 黄思聪负责,协助开发测试环境配置。
功能测试(Functional Testing):

目标: 验证系统是否按照需求文档中的功能描述工作。
内容: 测试所有主要功能:用户注册、角色管理、图书添加、查询、借阅和归还功能。
负责人: 测试人员(如果有专门测试人员)。
用户界面测试(UI Testing):

目标: 确保用户界面友好且符合设计要求。
内容: 测试界面的响应时间、布局、可用性。
负责人: 黄思聪负责前端界面检查与反馈。
回归测试(Regression Testing):

目标: 确保系统新增功能不会破坏现有功能。
内容: 每次更新或修复后,确保先前已通过的功能没有受到影响。
负责人: 开发人员黄思聪负责。
性能测试(Performance Testing):

目标: 确保系统在负载下的表现良好。
内容: 模拟多用户并发操作,检查系统在高负载下的响应速度和稳定性。
负责人: 如果需要,可以引入性能测试工具或使用开发环境进行自测。
安全性测试(Security Testing):

目标: 检查系统在用户认证、数据存储、权限控制等方面的安全性。
内容: 测试登录功能的安全性,检查是否有潜在的SQL注入等漏洞。
负责人: 开发人员黄思聪负责。
三、时间安排
测试将在开发过程中并行进行,测试计划的时间安排如下:

任务 时间安排 负责人
单元测试 开发过程中逐步进行 黄思聪
集成测试 开发完成后进行 黄思聪(协助)
功能测试 开发完成后进行 测试人员(如有)
用户界面测试 每完成一个功能模块后进行 黄思聪
回归测试 每次开发变更后进行 黄思聪
性能测试 在系统初步完成后进行 专项测试人员(如有)
安全性测试 开发完成后进行 黄思聪
四、测试资源
测试过程中将使用以下资源来确保测试的有效性:

硬件资源:

测试服务器或开发环境服务器,运行数据库和后台服务。
用户终端设备(电脑、浏览器、移动设备等),用于进行UI和功能测试。
软件资源:

测试工具:例如Postman(接口测试)、Selenium(UI自动化测试)、JMeter(性能测试)等。
开发环境:如IDE(IntelliJ IDEA、Visual Studio Code)、数据库管理工具等。
人力资源:

开发人员(黄思聪): 负责大部分的功能测试、单元测试、回归测试,并配合集成测试。
测试人员(如有): 专门负责功能测试和UI测试,确保产品的质量。
性能测试工具: 如果需要进行负载测试,可能需要使用专业的测试工具或请求外部性能测试支持。
五、风险和应对措施
开发延迟: 如果开发进度延误,测试可能无法按时开始。应对措施是,在开发工作未完全完成前,提前开始单元测试和UI测试,缩短测试周期。

环境不一致: 测试和开发环境不一致可能导致测试结果不准确。应对措施是,确保开发和测试环境的一致性,使用虚拟机或Docker等工具确保环境统一。

缺乏专业测试人员: 由于只有一名开发人员,测试任务可能过于繁重。应对措施是,开发人员需合理分配时间,优先进行关键模块的测试,并适时安排时间进行性能和安全测试。

posted @ 2025-11-22 23:08  黄思聪  阅读(0)  评论(0)    收藏  举报