团队作业2--《需求规格说明书》
团队作业2--《需求规格说明书》
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 团队项目 |
这个作业的目标 | 制作规格说明书,明确分工,制定计划安排 |
前端仓库 | 前端 |
后端仓库 | 后端 |
一. 团队介绍
1. 团队名称:码农探花队
2. 团队成员
姓名 | 班级 | 学号 |
---|---|---|
唐育健(组长) | 软件工程三班 | 3122004879 |
李宇康 | 软件工程三班 | 3122004871 |
陈境涵 | 软件工程三班 | 3122004775 |
张荆茂 | 软件工程三班 | 3122004884 |
阳昊 | 软件工程三班 | 3122007304 |
梁爽 | 软件工程三班 | 3122004872 |
二. 需求规格说明书
1. 详细描述&面向用户分析
我们团队的项目将会是一个前后端分离的音乐网站,我们秉承开源学习的目的,期待这个项目能被接受和使用,现阶段我们明确用户分为两类,一类是作为后台对歌曲,歌手,歌单等常用对象的管理并且添加对用户的管理,通过简单的页面布局,方便使用者快速上手与使用 ,另一类将作为前台用户实现日常使用的搜索,播放等功能,通过对用户小规模调研,如今我们打算在日后开发中加入对歌单的评价功能,为搜索增加更多模式,比如风格查询,也能对喜欢的歌单/歌进行收藏,甚至还添加了用户个人信息的补充与头像的修改,帮助用户更快找到知音,更多功能待补充(◍•ᴗ•◍)❤
2. 功能性需求
① 作为管理员(一个好的社区一定需要规范的管理)
- 实现用户管理、歌手管理、歌单管理
- 后台登陆管理(管理员身份验证)
② 歌手管理
- 增加、修改、删除
- 主键查询歌手、名字查询歌手、查询所有歌手
- 查询所有歌手
- 歌手图片上传
③ 歌曲管理
- 增加、修改、删除
- 主键查询歌单、歌单名查询歌单、风格查询歌单、查询所有歌单
- 歌单图片上传
- 歌单歌曲管理
④ 歌单管理
- 增加、修改、删除
- 主键查询歌单、歌单名名查询歌单、风格查询歌单、查询所有歌单
- 歌单图片上传
- 歌单歌曲管理
⑤ 用户管理
- 增加、修改、删除
- 主键查询用户、账号查询用户、查询所有用户
- 用户头像上传
- 修改密码功能
- 用户校验(不能重复)
⑥ 系统信息统计
- 歌曲总数、总人数、类型分布等
⑦ 页面管理
- 首页展示歌曲
- 歌单/歌曲搜索
- 播放歌曲
3. 技术需求
前端技术:
Typescript React Next.js Tailwindcss
shadcn 组件库
Zustand 状态管理
storybook 开发工具
vitest + cypress 测试
Docusaurus + MDX 文档系统
后端技术:
Springboot 后台框架
Mysql
Navicat MySql数据库管理工具
JDK
Intellij Idea JavaEE
Maven 项目管理器
4. 数据库表结构
表4.1管理员信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | admin | int | 11 | √ | 0 |
name | 账号 | varchar | 255 | 0 | |
password | 密码 | varchar | 255 | 0 |
表4.2用户信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | consumer | int | 11 | √ | 0 |
username | 账号 | varchar | 255 | 0 | |
password | 密码 | varchar | 255 | 0 | |
sex | 性别(1男0女) | tynyint | 1 | 0 | |
phone_num | 电话 | char | 15 | 0 | |
邮箱 | char | 30 | 0 | ||
birth | 生日 | datetime | 0 | 0 | |
introduction | 介绍 | varchar | 255 | 0 | |
location | 地址 | varchar | 255 | 0 | |
avator | 头像 | varchar | 255 | 0 | |
create_time | 创建时间 | datetime | 0 | 0 | |
update_time | 更新时间 | datetime | 0 | 0 |
表4.3歌曲信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | song | int | 11 | √ | 0 |
singer_id | 歌手id | int | 11 | 0 | |
name | 歌名 | varchar | 255 | 0 | |
introduction | 介绍 | varchar | 255 | 0 | |
create_time | 创作时间 | datetime | 0 | 0 | |
update_time | 更新时间 | datetime | 0 | 0 | |
pic | 歌曲照片 | varchar | 255 | 0 | |
lyric | 歌词 | text | 0 | ||
url | 歌曲地址 | varchar | 255 | 0 |
表4.4歌手信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | singer | int | 11 | √ | 0 |
name | 歌手歌名 | varchar | 255 | 0 | |
sex | 性别(1男0女) | varchar | 255 | 0 | |
pic | 歌手图片 | varchar | 255 | 0 | |
birth | 生日 | datatime | 0 | 0 | |
location | 地址 | varchar | 255 | 0 | |
introduction | 简介 | varchar | 255 |
表4.5歌单信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | song_list | int | 11 | √ | 0 |
title | 歌单名字 | varchar | 255 | 0 | |
pic | 歌单图片 | varchar | 255 | 0 | |
introduct | 介绍 | varchar | 255 | 0 | |
style | 风格 | datatime | 0 | 0 |
表4.6歌曲列表信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | list_song | int | 11 | √ | 0 |
song_id | 歌曲名字 | int | 11 | 0 | |
song_list_id | 歌单名字 | int | 11 | 0 |
表4.7收藏歌曲歌单信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | collect | int | 11 | √ | 0 |
user_id | 用户名字 | int | 11 | 0 | |
type | 收藏类型(0歌曲1歌单) | tinyint | 1 | 0 | |
song_id | 歌曲id | int | 11 | 0 | |
song_list_id | 歌单id | int | 11 | 0 | |
create_time | 收藏时间 | datetime | 0 | 0 |
表4.8歌曲歌单评论信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | comment | int | 11 | √ | 0 |
user_id | 用户名字 | int | 11 | 0 | |
type | 评论类型(0歌曲1歌单) | tinyint | 1 | 0 | |
song_id | 歌曲id | int | 11 | 0 | |
song_list_id | 歌单id | int | 11 | 0 | |
content | 评论内容 | varchar | 255 | 0 | |
create_time | 收藏时间 | datetime | 0 | 0 | |
up | 评论点赞数 | int | 11 | 0 |
表4.9评分信息表
字段名称 | 字段含义 | 字段类型 | 字段长度 | 是否主键 | 小数点 |
---|---|---|---|---|---|
id | rank | int | 11 | √ | 0 |
consumer_id | 用户名字 | int | 11 | 0 | |
song_list_id | 歌单id | int | 11 | 0 | |
score | 评分 | int | 11 | 0 |
5. 系统实现
基于Java的项目管理平台系统设计与实现的开发环境与工具包括以下几个方面:
- 开发环境
- Java Development Kit(JDK):JDK是Java开发的基础,它提供了Java编译器(javac)和Java虚拟机(JVM),开发者需要安装适当版本的JDK来编译和运行Java代码。
- 集成开发环境(IDE):IDE提供了丰富的开发工具和编辑器,能够提高开发效率和代码质量。常用的Java IDE有Eclipse、IntelliJ IDEA和NetBeans等,它们提供了代码自动完成、调试、测试等功能,可以简化Java应用的开发过程。
- 数据库创建管理
- MySQL:MySQL是一个开源的关系型数据库管理系统,具有高性能和可扩展性,适用于中小型应用。Java开发者可以使用JDBC技术与MySQL数据库进行交互。使用navicat工具创建数据库,该工具提供直观的用户界面,简化数据库的管理,可以轻松执行各类数据库的操作,大大节省了开发时间
- JUnit测试工具
- JUnit:JUnit是一种用于单元测试的框架,可以帮助开发者编写和执行测试用例,确保代码的正确性和稳定性。JUnit可以与Eclipse、IntelliJ IDEA等IDE集成,方便开发者进行单元测试。
三. 预计用户数量
团队处于开发初期,对用户调研不是很深刻,难以把握当下用户需求和爱好,在对小规模调研后,预计用户期望为100人,待项目开发完毕,持续维护过程中,对功能的完善以及用户需求的把握,希望能作为开源项目被更多人使用,期望达到一千人
四. 系统说明
-
真实性
音乐作为被广泛接受的艺术,已经牢固地扎根于每个人的日常生活中,虽然市面上已经存在大大小小的音乐软件,但是每个软件的歌曲难以互通,我们秉承在不侵犯版权的前提下鼓励用户上传包括但不限于自我创造的音乐,用户可以把本项目当作一个简单的音乐播放器亦可以将其做为自我艺术的传播途径,让更多人听见你的声音
-
可用性
本项目将秉承MIT开源协议,不会进行额外盈利,鼓励用户对项目进行建议改进,也可以自我修改代码实现个性化功能,用户可以将其当作简单的音乐播放器使用,而音乐的搜索也让用户可以听见更多不同的歌,享受自己喜欢的歌,个性化的个人信息与头像展示,让用户能迅速交友,实现心灵的共鸣
-
价值所在
作为开源项目,秉承开源精神,希望能为国内开源环境增添微小的贡献,项目面向广大音乐爱好者,音乐创作人,开发学习者,我们希望能将音乐传递,让音乐不只是音乐。我们期望能够为用户提供高质量的音乐平台,能够整合音乐资源,提供便利的音乐播放功能,也期望能发掘更多有潜力的个人音乐家,音乐不该有局限!
五. 计划安排
1. 原计划矫正
第 9周 | 1.团队组队、团队博客 |
2.团队介绍、成员展示、角色分配、选题确定 | |
3.制定团队计划安排,团队贡献分的规定 | |
第10周 | 1.需求规格说明书 |
2.原型设计,队员估计任务难度并学习必要的技术 | |
3.编码规范完成、平台环境搭建完成、初步架构搭建 | |
第11周 | 1.原型改进(给目标用户展现原型,并进一步理解需求) |
2.架构设计,WBS, 团队成员估计各自任务所需时间 | |
3.测试计划 | |
第12、13周 | 1. 团队项目Alpha任务分配计划 |
2. 连续7天的Alpha敏捷冲刺,7 篇 每日Scrum Meeting博客+代码提交 | |
第14周 | 1.用户反馈+测试计划改进 |
2. 团队Alpha阶段个人总结 | |
3. 团队项目Alpha博客:发布说明、测试报告、展示博客、项目管理 | |
第15周 | 1. 团队项目Alpha博客:事后分析 |
矫正过后的计划
第 9 周 | 1.团队组队、团队博客 |
2.团队介绍、成员展示、角色分配、选题确定 | |
3.制定团队计划安排,团队贡献分的规定 | |
第10周 | 1.小规模用户调研,需求分析,制作需求规格说明书 |
2.原型设计,队员估计任务难度并学习必要的技术 | |
3.编码规范完成、平台环境搭建完成、初步架构搭建 | |
4.解决开发之前的所有问题,对提出的功能二次评估 | |
第11周 | 1.增大规模的用户调研,原型改进 |
2.架构设计,WBS, 团队成员估计各自任务所需时间 | |
3.测试计划 | |
第12、13周 | 1. 团队项目Alpha任务分配计划 |
2. 连续7天的Alpha敏捷冲刺 | |
3.开启一次团队内测试,鼓励邀请同学小规模测试即时发现问题 | |
第14周 | 1.用户反馈+测试计划改进 |
2. 团队Alpha阶段个人总结 | |
3. 发布说明、测试报告、展示博客、项目管理 | |
第15周 | 1. 团队项目Alpha博客:事后分析 |
矫正方式:在确立功能需求之前,团队会进行小规模的用户调研,从身边人入手,了解我们熟悉的人的需求,以初步小规模调研确立基础功能,但考虑到团队成员初次参与项目开发,每个人实力参差不齐,不一定能完成所有功能实现,我们将会在第10周确立编码规范和环境搭建之后,进行一次个人实力与功能完善的评估,及时删去不影响使用但实现复杂且涉及技术栈之外的高阶功能(可能也会在开发之余进行扩展),而在第12、13周完成敏捷开发,项目定型后,我们打算在团队内部自测项目,随之邀请身边同学进行小规模内测,我们确信这样可以排查大部分显见的问题和小部分隐藏问题,使得后面发布项目更加稳定和实用
2. 分工公示
我们通过内部讨论重新确立了分工安排
内容 | 负责人 | 工作内容 |
---|---|---|
前端 | 李宇康,唐宇健,张荆茂 | 进行网页前端开发,页面美观,UI设计 |
后端 | 梁爽,阳昊,陈境涵 | 负责模块接口设计,数据库开发 |
测试 | 张荆茂,阳昊 | 保证所有问题都得到处理 |
项目管理 | 李宇康,梁爽 | 按约束条件交付产品 |
将会按预期执行由组长部署,确立安排,有板块负责人落实开发进度的计划
3. Issues截图
六. 现阶段进度及感想
1. 进度一览
内容 | 负责人 | 进度 |
---|---|---|
前端 | 李宇康,唐宇健 | 环境部署,系统基本框架构建,优化基本功能 |
后端 | 梁爽,阳昊,陈境涵 | 环境部署,基本功能接口初步设计,积极与前端沟通 |
测试 | 张荆茂,阳昊 | 需求规格说明书的撰写,小规模用户调研 |
项目管理 | 李宇康,梁爽 | 项目仓库的创建,Issues任务发布,追踪队员进度 |
2. 感想
姓名 | 感想 |
---|---|
张荆茂 | 团队合作十分注重队员配合与沟通,小规模的用户调研让我们确立了开发方向与基本功能,期待之后的开发 |
陈境涵 | 团队氛围很好,小组成员互相学习共同进步,对个人能力有很大的提升 |
唐育健 | 团队学习气氛很好,大伙们在讨论分工和对项目看法时都能畅所欲言,每个人都能参与进来,一起进步一起成长。 |
李宇康 | 在实践中学习感觉收获很多:对比了多个框架,了解到了前端开发中的最新趋势。重温了代码规范,参考了优秀开源项目,编写了代码规范文档。学习到了高效的软件开发流程和工具 |
阳昊 | 了解了项目开发流程,认识了很多软件以及编程规范。能够在共同协商下与团队成员交流各自想法的同时去认识整个开发框架,既收获了了知识同时增强了沟通能力。 |
梁爽 | 对项目开发流程更加的明确,在进行该项目时学到了有关springboot,mysql,以及GitHub的使用等知识。并且尝试解决开发过程中遇到的各类问题,为日后的开发积累了宝贵的经验 |