目录
(二)分析上述方法工具对软件开发过程的管理和软件质量的提升具有哪些作用
一、软件开发计划
(一)团队成员介绍
课程相关信息 | 具体内容 | 主要完成工作内容 |
---|---|---|
团队项目任务 | 2023年秋 软件工程课程团队项目任务安排——设计与实现-CSDN社区 | 诗词系统 |
江超宇 | 学号:Z23181002 | 总体博客撰写、代码梳理汇总、个人总结 |
马超 | 学号:M23185402 | 飞花令游戏代码编写、梳理方法以及作用、个人总结 |
李家鑫 | 学号:M23181001 | 登录功能实现、软件设计相关内容、个人总结 |
冯琰玮 | 学号:M23181108 | 注册功能实现、项目过程管理与记录、个人总结 |
曾沅伟 | 学号:M23120103 | 成语接龙游戏代码编写、功能测试、界面设计、个人总结 |
(二)各个阶段工作
阶段 | 主要工作 | 计划起始时间 | 计划终止时间 | 实际起始时间 | 实际终止时间 |
---|---|---|---|---|---|
需求1 | 明确开发系统所需要的环境、语言类型、框架 | 10.17 | 10.28 | 10.18 | 10.29 |
需求2 | 分析诗词系统功能及性能要求 | 10.20 | 10.23 | 10.20 | 10.23 |
需求3 | 编写需求规格说明、用户手册概要、测试计划、项目开发计划 | 10.20 | 10.30 | 10.22 | 10.30 |
设计1 | 建立系统总体结构以及功能模块 | 11.8 | 11.16 | 11.9 | 11.17 |
设计2 | 构件设计 | 11.8 | 11.16 | 11.9 | 11.17 |
设计3 | 数据设计-E-R图 | 11.8 | 11.16 | 11.9 | 11.17 |
设计4 | 数据设计-逻辑建模 | 11.8 | 11.16 | 11.9 | 11.17 |
设计5 | 数据设计-物理建模 | 11.8 | 11.16 | 11.9 | 11.17 |
实现1 | 代码实现 | 11.18 | 11.30 | 11.18 | 12.2 |
实现2 | 功能调试 | 11.18 | 11.30 | 11.18 | 12.2 |
测试 | 功能测试 | 12.3 | 12.5 | 12.3 | 12.5 |
发布1 | 正式生成诗词系统 | 12.4 | 12.4 | 12.3 | 12.4 |
发布2 | 维护与更新 | 12.4 | 12.8 | 12.5 | 12.8 |
(三)里程牌
二、软件设计
(一)系统体系结构设计
系统构件:
1、用户界面(User Interface, UI):负责处理用户输入和显示输出,包括注册页面,登录页面,游戏首页,个人中心,飞花令游戏页面、成语接龙游戏界面,诗词库管理页面、游戏历史记录查看页面。
2、业务逻辑层(Business Logic Layer):处理业务规则和逻辑,包括用户注册,用户登录,游戏逻辑,诗词库、成语库查看,游戏历史记录查询等功能。
3、数据访问层(Data Access Layer):负责与数据库交互,包括用户信息,古诗词、成语数据信息,游戏历史记录信息的增删改查实现。
4、数据库(Database):存储系统的数据,包括用户信息,古诗词、成语数据信息,以及游戏历史记录信息。
构件之间的依赖关系:
1、用户界面依赖于业务逻辑层:用户界面会调用业务逻辑层的方法来处理用户请求。
2、业务逻辑层依赖于数据访问层:业务逻辑层会调用数据访问层的方法来访问数据库。
(二)构件设计
定义构件间的接口;对系统体系结构中的每个构件进行细化:设计类(由需求阶段细化),定义类的之间的关系,类的属性定义,及关键算法的描述;
1、用户登录
功能名称:用户登录
UML用例:
需求描述:用户通过浏览器访问ip:8888/auth/login,进入登录页面,用户在该页面中进行用户登录和用户注册。用户选择注册按钮后进入注册页面,按提示输入相关信息,点击注册,将数据添加到数据库用户表中。用户在登录页面填写用户名和密码后点击登录,后台登录接口会根据用户名和密码查询数据库对用户数据进行匹配校验。
用户信息实体类:
字段名称 | 数据类型 | 字段描述 |
---|---|---|
id | Long | 主键,唯一标识 |
name | String | 姓名 |
password | String | 密码 |
avatar | String | 头像 |
lastLogin | Date | 最后登录时间 |
createTime | Date | 注册时间 |
updatedTime | Date | 更新时间 |
deleted | Integer | 是否删除 |
关键算法描述:
用户输入用户名和密码后,后台接口接收请求参数,并对用户名和密码进行格式校验,参数数据未通过格式校验时,响应回错误信息;格式校验通过后,开始查询用户信息表,对用户名和密码进行匹配校验,若不符合则提示相关信息,若符合则用户登录成功,将用户信息保存到Session中并返回Cookie。
2、用户注册
功能名称:用户注册
用户注册信息实体类:
字段名称 | 数据类型 | 字段描述 |
---|---|---|
id | Long | 主键,唯一标识 |
username | String | 姓名 |
password | String | 密码 |
authCode | String | 验证码 |
sessionId | String | Session ID |
rememberMe | Boolean | 是否选中自动登录,true 选中,false 未选中 |
关键算法描述:
用户按要求输入相关信息数据,点击确定访问注册接口,后台对相关数据进行校验,若不符合要求则返回提示信息;符合要求后,对密码进行加密处理,并追加一些账号信息,然后保存到用户信息表。
3、飞花令游戏
功能名称:飞花令游戏
关键算法描述:
用户登录成功后进入游戏选项首页,默认展示的为飞花令游戏,点击开始游戏后,出现关键字选项,用户选中某个关键字,确认后游戏开始,后台根据用户选择的关键字创建一个“房间”,封装一些信息后存入到Redis缓存中,每次用户输入一句诗词句后,后台就会对该语句进行判断,是否包含指定关键字,未包含则返回提示信息,包含则将该语句加入到语句列表字段中,判断用户得分,然后根据关键字从诗词表中随机选择一句并返回给前端,在前端进行展示。
4、诗词库
用户进入个人中心后,可以通过点击诗词库后选择朝代、作者等选项查看诗词库中的诗词数据。
5、历史记录
用户在个人中心选择历史记录功能,可以根据今天、昨天、其他记录等选项查看游戏历史记录内容。
(三)数据设计
1、E-R图
(1)用户信息实体E-R图
(2)古诗词实体E-R图
(3)成语实体E-R图
(4)游戏历史记录实体E-R图
2、逻辑建模
(1)用户表
字段名称 | 数据类型 | 长度 | 允许空 | 字段描述 |
---|---|---|---|---|
id | 自动编号 | 20 | 否 | 主键,唯一标识 |
name | 文本 | 32 | 是 | 姓名 |
password | 文本 | 64 | 是 | 密码 |
avatar | 文本 | 是 | 头像 | |
last_login | 日期时间 | 是 | 最后登录时间 | |
create_time | 日期时间 | 是 | 注册时间 | |
updated_time | 日期时间 | 是 | 更新时间 | |
deleted | 整型 | 1 | 是 | 是否删除,0为未删,1为已删 |
(2)古诗词表
字段名称 | 数据类型 | 长度 | 允许空 | 字段描述 |
---|---|---|---|---|
id | 自动编号 | 20 | 否 | 主键,唯一标识 |
title | 文本 | 256 | 是 | 题目 |
dynasty | 文本 | 64 | 是 | 朝代 |
author | 文本 | 64 | 是 | 作者 |
content | 文本 | 是 | 内容 |
(3)成语表
字段名称 | 数据类型 | 长度 | 允许空 | 字段描述 |
---|---|---|---|---|
id | 自动编号 | 20 | 否 | 主键,唯一标识 |
content | 文本 | 是 | 内容 |
(4)游戏历史记录表
字段名称 | 数据类型 | 长度 | 允许空 | 字段描述 |
---|---|---|---|---|
id | 自动编号 | 20 | 否 | 主键,唯一标识 |
user_id | 整型 | 20 | 是 | 用户id |
poetry_content | 文本 | 是 | 对战内容 | |
poetry_id_list | 文本 | 是 | 诗词或成语对应id | |
game_mark | 整型 | 是 | 得分 | |
key_word | 文本 | 20 | 是 | 关键字 |
start_time | 日期时间 | 是 | 游戏开始时间 | |
game_type | 文本 | 256 | 是 | 游戏类型:飞花令、成语接龙 |
3、物理建模
(1)用户表
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`
(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键id',
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`password` varchar(64) DEFAULT NULL COMMENT '密码',
`avatar` text DEFAULT NULL COMMENT '头像',
`last_login` datetime null comment '最后登录时间',
`created_time` datetime null comment '注册时间',
`updated_time` datetime null comment '更新时间',
`deleted` int1 null comment '是否删除',
primary key (`id`)
);
(2)古诗词表
DROP TABLE IF EXISTS `ap_poetry`;
CREATE TABLE `ap_poetry`
(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键id',
`title` varchar(256) DEFAULT NULL COMMENT '题目',
`dynasty` varchar(64) DEFAULT NULL COMMENT '朝代',
`author` varchar(64) DEFAULT NULL COMMENT '作者',
`content` text DEFAULT NULL COMMENT '内容',
primary key (`id`)
);
(3)成语表
DROP TABLE IF EXISTS `ap_ciyu`;
CREATE TABLE `ap_ciyu`
(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键id',
`content` text DEFAULT NULL COMMENT '内容',
primary key (`id`)
);
(4)游戏记录表
DROP TABLE IF EXISTS `ap_game`;
CREATE TABLE `ap_game`
(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键id',
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`poetry_content` text DEFAULT NULL COMMENT '内容',
`poetry_id_list` text DEFAULT NULL COMMENT '诗词语句对应id',
`game_mark` int DEFAULT NULL COMMENT '得分',
`key_word` varchar(20) DEFAULT NULL COMMENT '关键字',
`start_time` datetime NULL COMMENT '游戏开始时间',
`game_type` varchar(256) DEFAULT NULL COMMENT '游戏类型:飞花令 成语接龙',
primary key (`id`)
);
三、代码实现(小组共同完成)
gitee码云地址:ancient-poetry-system: 诗词系统 (gitee.com)
简单列举如下,具体代码详见gitee代码仓库:
四、项目过程管理与记录
(一)工作完成情况
燃尽图
(二)代码仓库地址
ancient-poetry-system: 诗词系统 (gitee.com)
(三)各个功能运行视频
诗词系统具体功能操作
(四)项目改善计划
为了促进后续开发进度,制订以下项目改善计划:
1、流程改进
- 优化需求管理流程:确保需求的准确性和完整性,减少后期变更。
- 引入代码审查流程:通过代码审查来提高代码质量和可维护性。
- 设立定期会议:定期进行项目进展和问题讨论,及时发现和解决障碍。
2、方法改进
- 推行测试驱动开发(TDD):在编写代码之前编写测试用例,确保代码的质量和稳定性。
- 引入持续集成(CI)和持续交付(CD):自动化构建、测试和部署过程,加快软件交付速度和反馈周期。
- 实施敏捷开发方法:采用迭代开发和增量交付方式,更好地应对需求变化和及时调整。
3、工具改进
- 使用项目管理工具:例如Jira、Trello等,帮助团队进行任务分配、跟踪和协同工作。
- 利用持续集成工具:如Jenkins、Travis CI等,实现自动化构建、测试和部署流程。
- 引入代码质量工具:例如SonarQube、FindBugs等,用于静态代码分析和质量评估。
通过优化流程、改进方法和运用适当的工具,可以提高开发效率、降低错误率,并促进后续开发进度。同时,及时的沟通和团队协作也是保证项目顺利进行的关键要素。
五、项目中软件工程的体现
(一)项目过程中使用的软件工程方法和工具
我们小组在项目开发的过程中,采用了敏捷软件开发方法。通过迭代和增量的方式,我们能够更加灵活地应对需求的变化,并及时进行调整和优化。为了更好地管理项目,我们使用了 Maven 和 Git 这两个常用的工具进行项目构建和版本控制。同时,我们基于 Spring Boot 框架进行后端开发,它提供了便捷的开发环境和丰富的功能模块,加快了开发速度和质量。在前端方面,我们利用 HTML、CSS、JavaScript 和 Bootstrap 技术,实现了用户友好的界面和良好的用户体验。数据库方面,我们选择了 MySQL 作为主要的存储介质,并通过 Redis 数据库来提升系统的性能和缓存效果。这些软件工程方法和工具的应用,使得我们能够高效地开发和管理项目,提供稳定可靠的软件解决方案。
(二)分析上述方法工具对软件开发过程的管理和软件质量的提升具有哪些作用
- Maven:Maven 是一款强大的项目管理工具,可以帮助项目统一管理依赖库和构建过程。通过使用 Maven,可以简化项目的构建和部署流程,统一依赖管理,减少版本冲突和依赖问题,提高项目的可维护性和稳定性。
- Git:Git 是分布式版本控制工具,可以帮助项目团队进行代码版本管理和协同开发。通过使用 Git,可以轻松地管理代码的变更、回滚和合并,保证代码的可追溯性和稳定性。同时,Git 还提供了分支管理、代码审查等功能,有助于提高团队协作效率和代码质量。
- Spring Boot:Spring Boot 是一款快速构建应用程序的框架,它提供了自动配置和快速启动的特性。通过使用 Spring Boot,可以大大简化项目搭建和配置过程,提高开发效率。同时,Spring Boot 集成了各种常用的开发组件和工具,如 Spring MVC、Spring Data等,有助于提高代码质量和系统稳定性。
- HTML、CSS、JavaScript 和 Bootstrap:这些前端技术和框架可以帮助开发人员构建美观、响应式的用户界面。通过使用这些技术,可以提高用户体验和界面交互性,从而提升软件质量。
- MySQL 和 Redis:MySQL 是一款关系型数据库,Redis 是一款高性能的键值对存储系统。通过使用这两种数据库,可以有效地存储和管理项目中的数据。MySQL 提供了强大的事务支持和查询优化,有助于保证数据的一致性和可靠性。而 Redis 则可以用于缓存和高速读写,提高系统的性能和响应速度,从而提升软件质量。
综合而言,上述方法和工具在这个具体项目中的应用,能够帮助项目更好地管理依赖、代码版本和构建过程,简化开发流程,保证代码质量和系统稳定性。同时,这些工具和技术还能够提升用户界面的质量和用户体验,改善系统的性能和响应速度。
(三)给出方法和工具使用的代表性截图
六、个人总结
江超宇个人总结:探索软件开发的艺术与科学——软件工程课程个人总结-CSDN博客
马超个人总结:《软件工程》课程总结:在迷茫到实践的过程中获取真知-CSDN博客
李家鑫个人总结:http://t.csdnimg.cn/IRkCs
冯琰玮个人总结:http://t.csdnimg.cn/hDqMD
曾沅伟个人总结:《软件工程》课程个人总结-CSDN博客
七、其他任务
(一)慕课学习
江超宇学习情况:
马超学习情况:
李家鑫学习情况:
冯琰玮学习情况:
曾沅伟学习情况:
(二)《梦断代码》读书笔记
《梦断代码》这本书以软件开发项目为主线,讲述了一群年轻人在追求梦想的过程中所经历的挫折、困惑和成长。作为一名研究生,我在阅读这本书的过程中,不仅对软件开发有了更深入的了解,还从中得到了许多关于团队合作和个人成长的启示。
首先,从团队软件开发的角度来看,《梦断代码》以其真实的软件开发过程,展示了一个充满挑战与机遇的团队工作场景。在这个过程中,队员们面临着诸如需求变更、技术难题和时间压力等挑战。通过不断地沟通、协作和创新,他们最终成功完成了项目。这让我深刻地认识到,软件开发不仅是一项技术工作,更是一项需要团队协作、沟通能力和创新精神的工作。
在研究生学习的过程中,尤其是完成《软件工程》课程任务的过程中,我们也曾面临过类似的挑战。在短时间内需要掌握编程、算法、代码仓库学习等知识,解决环境配置等各类问题,同时还要成员间紧密协作、合理分工筹划完成各阶段计划目标。在这个过程中,我深刻体会到了团队合作的重要性。我们需要与老师、同学等人员进行深入的交流和合作,以便更好地解决问题。此外,还需要具备良好的沟通能力,以便将自己的想法和成果有效地传达给他人。
其次,《梦断代码》中的团队成员们在面对困难时展现出了顽强的毅力和不屈的精神。即使在项目失败后,他们也没有选择放弃,而是从中吸取教训,继续前进。这让我明白到,作为一名研究生,在面对困难和挫折时,我们也需要保持积极的心态,勇敢地去面对和解决问题。只有这样,我们才能在学术道路上不断成长和进步。
在软件开发的过程中,我们也会遇到许多困难和挫折。有时候,我们可能会对自己的水平、方向和成果产生怀疑,甚至想要放弃。然而,《梦断代码》中的团队成员们教会了我们,我们要相信自己的能力,勇敢地面对困难,不断地学习和进步。只有这样,我们才能各种项目中不断成长,在历练中提升素质。
最后,《梦断代码》中的团队成员们在项目失败后进行了深刻的反思。他们分析了自己在项目中的失误,找出了导致项目失败的原因,并在此基础上制定了新的计划。这让我认识到,无论是在软件开发还是研究生学习中,我们都需要具备反思和总结的能力。只有通过不断地反思和总结,我们才能从过去的经验中汲取教训为未来的成功奠定基础。
总之,《梦断代码》这本书给我带来了许多启示。它让我明白了团队合作、沟通能力、创新精神、毅力和反思能力在软件开发和研究生学习中的重要性。在未来的学习和工作中我将不断地学习和应用这些宝贵的经验,努力使自己成为团队机器中一颗合格螺丝钉。