软件工程
计科1班
作业要求
团队作业3--需求改进&系统设计
作业目标
需求&原型改进,系统设计,Alpha任务分配计划,测试计划

 

队员学号:李文浩(3121004788),江楠(3121004652),林育鑫(3121004660),汤陶然(3121004751)(组长),练东晖(3121004738),艾山.依力哈木(3120005145),袁梓为(3121004844)

 

1.需求&原型改进:

问题1:学习系统是否需要分科目分年级

修改:在数据库中设计一个课程表,其中包括id(主键)、科目、年级等字段。在代码中,根据输入的年级和科目,执行SQL语句查询出对应的课程。

 

问题2:学习系统是否设置有原题库,老师是否能加入新题目

修改:在数据库中设计一个题库表,其中包括id(主键)、课程id(外键)、题型、题干、答案等字段。在代码中,执行相应的SQL语句将题目插入到题库表中

 

问题3:学习系统如何方便老师管理

修改:系统中有一个班级模块,老师可以管理自己负责的班级,包括添加学生、给学生分配课程等功能,同时还可以查看学生的学习进度和成绩。

 

2.修改完善需求规格说明书:

经过组内的讨论和上周课堂上老师的建议,我们计划在原有功能中加入班级模块,题库管理,分年级分科目的功能,修改后的描述如下:

一、系统功能描述:

1. 分年级分科目:这个系统支持按年级和科目进行学习资源的分类管理。具体来说,系统中有一个课程模块,允许管理员根据实际需要创建各种科目和年级的课程。每个课程都会跟年级和科目相关联。因此,学生和老师可以根据自己的需求方便的筛选出相关的课程。

2. 提供可插入题库:系统中有一个题库模块,可以方便的插入各种类型的题目,并且每个题目都可以关联到特定的课程。题库支持选择题、判断题、填空题、简答题等类型。题库可以由管理员或者老师进行管理。

3. 老师可以批改学生题目:系统提供一个批改功能,允许老师对学生的作答情况进行批改。老师可以在批改中给出自己的评语和建议,同时系统也会自动统计学生的得分。

4. 老师可以管理班级:系统中有一个班级模块,老师可以管理自己负责的班级,包括添加学生、给学生分配课程等功能,同时还可以查看学生的学习进度和成绩。

 

3、系统设计:

# 系统架构

在Spring Boot项目中,常见的三个层次是Controller层、Service层、Mapper层。它们各自承担着不同的职责,但彼此之间存在着紧密的联系。

## Controller层

Controller层是Spring Boot应用程序的入口点,用于处理外部请求并返回响应。它负责接收来自客户端的请求,并将请求委托给Service层来处理。在Controller层,你可以定义各种请求处理方法,包括GET、POST、PUT、DELETE等。Controller层通常处理请求的输入和输出,并负责验证输入数据的有效性。它将请求参数传递给Service层,然后将Service层的处理结果封装成适当的响应返回给客户端。

## Service层

Service层是业务逻辑的核心部分,负责实现具体的业务功能。它接收Controller层传递过来的请求,并调用相应的Mapper层方法来操作数据库。Service层应该包含业务规则的实现、事务管理和其他复杂的业务逻辑。Service层不应该直接与数据库交互,而是通过调用Mapper层的方法来实现对数据库的操作。在Service层中,你可以组织、处理和转换数据,以及应用业务规则和逻辑。此外,如果涉及到事务管理,Service层也是实现事务控制的地方。

## Mapper层

Mapper层(也称为Repository层)负责实现与数据库的交互操作。它提供了一组方法用于对数据库进行增删改查等操作。通常,Mapper层使用ORM(对象关系映射)框架来简化数据库操作,例如MyBatis或Hibernate。
Mapper层定义了各种数据库操作方法的接口,并由ORM框架自动实现。它将数据库操作细节封装起来,对上层提供简洁的接口,让开发人员能够更专注于业务逻辑的实现。

这三个层次之间存在着紧密的联系,它们共同协作以实现应用程序的功能。

Controller层接收来自客户端的请求,将请求参数传递给Service层,并将Service层的处理结果封装成适当的响应返回给客户端。
Service层负责实现具体的业务功能,它接收Controller层传递过来的请求,并调用Mapper层的方法来操作数据库。
Mapper层负责与数据库交互,通过ORM框架来简化数据库操作。它将数据库操作细节封装起来,为Service层提供简洁的接口。

 

![image-20231115195607684](/Users/yuanziwei/Library/Application Support/typora-user-images/image-20231115195607684.png)

 

**表1:Controller包文件组成**

| 类文件名 | 功能描述 |
| -------------------------- | ---------------------------------------------------- |
| ExamLabelController | 接受和处理关于标签的请求,包括新增、修改等请求 |
| ExamQuestionBankController | 响应关于操作题库信息的请求 |
| ExamQuestionsController | 响应关于操作试题信息的请求,包括新增试题、删除试题等 |
| ExamOptionController | 响应关于操作试题选项信息的请求。主要针对与选择题 |

Service层主要包含两部分内容,分别是定义接口的类文件和实现相应接口的文件,一个接口文件对应一个实现类文件,其中实现类文件存放到service包下的impl子包中。目录结构大致如下:

![img](file:////private/var/folders/_q/54c6gfz531j95vl1zk54kxph0000gn/T/com.kingsoft.wpsoffice.mac/wps-yuanziwei/ksohtml//wps1.jpg)

其中Service层的所有接口文件组成如下:

**表2:service包文件组成**

| 类文件名 | 功能描述 |
| --------------------------------- | ------------------------------------------------------------ |
| IExamLabelQuestionsService | 试题与标签的关系Service接口,可以查询、修改(批量)、新增(批量)试题的标签信息 |
| IExamLabelService | 标签Service接口,可以查询、新增、修改和删除标签信息 |
| IExamOptionService | 试题选项Service接口,主要处理试题选项的业务,包括增删改查等。 |
| IExamQuestionBankQuestionsService | 题库与试题关系Service接口,可以查询、修改和新增题库与试题的关系 |
| IExamQuestionBankService | 题库Service接口,主要操作是增删改查,并且可以根据题目来查询对应的题库 |
| IExamQuestionsService | 试题Service接口,可以根据不同条件(标签、题库、题目类型)来查询试题,以及试题的增删改操作。 |
| | |
| | |

Domain相当于数据库中的实体,主要用来存储数据对象。一个domain文件对应于数据库中的一张表。该包的所有文件如下所示。

**表3:Domain包文件组成**

| 类文件名 | 功能描述 |
| ------------------------- | ---------------------- |
| ExamLabel | 标签实体类 |
| ExamQuestions | 试题实体类 |
| ExamLabelQuestions | 标签和实体关系的实体类 |
| ExamQuestionBank | 题库实体类 |
| ExamQuestionBankQuestions | 题库与试题关系的实体类 |
| ExamOption | 选项实体类 |
| ExamQuestionBankRole | 题库与角色关系实体类 |

其中“角色”表示创建试题库的用户。在本系统设计中,角色有超级管理员、老师、学生等。

Mapper层主要负责与数据库中的实体进行交互,可以简单地理解为DAO,也就是数据操作对象。

Mapper层的类文件目录结构如下:

**表4:mapper包文件组成**

| 类文件名 | 功能描述 |
| ------------------------------- | --------------------------------- |
| ExamLabelMapper | 操作标签ExamLabel实体 |
| ExamLabelQuestionsMapper | 操作ExamLabelQuestions实体 |
| ExamOptionMapper | 操作ExamOption实体 |
| ExamQuestionBankMapper | 操作ExamQuestionBank实体 |
| ExamQuestionBankQuestionsMapper | 操作ExamQuestionBankQuestions实体 |
| ExamQuestionBankRoleMapper | 操作ExamQuestionBankRole实体 |
| ExamQuestionsMapper | 操作ExamQuestions实体 |

按照spring boot开发,还需要VO包和DTO包,其中VO包为View Object,也就是数据展示对象,VO的功能是按照前端需求把某个指定页面的展示数据封装起来,同时去掉一些敏感数据,比如用户id、密码等隐私。按照预想的数据展示,该包所包含的文件如下:

**表5:vo包文件组成**

| 类文件名 | 功能描述 |
| ----------------------- | ---------------------- |
| ExamBankQuestionCountVo | 统计题目数量 |
| ExamOptionVo | 可以展示的题目选项信息 |
| ExamQuestionShowVo | 可以展示的题目信息 |

而DTO是数据传输对象,一般用于展示层(View)和服务层(Service)之间的数据传输。该包所包含的文件如下。

**表6:dto包的文件组成**

| 类文件名 | 功能描述 |
| ---------------- | ------------ |
| ExamOptionDto | 题目选项信息 |
| ExamQuestionsDto | 题目信息 |

按照系统设计需求,需要做好题型以后有可能要扩展的准备,因此本子系统将题型封装到一个枚举类中,并且按照分包规范,将其放到enums包中,该包中包含了QuestionTypeEnum.java文件,用于保存目前支持的题型信息,如下所示。

![img](file:////private/var/folders/_q/54c6gfz531j95vl1zk54kxph0000gn/T/com.kingsoft.wpsoffice.mac/wps-yuanziwei/ksohtml//wps2.jpg)

 

![image-20231115195540885](/Users/yuanziwei/Library/Application Support/typora-user-images/image-20231115195540885.png)

系统的数据库表结构

![image-20231115195246207](/Users/yuanziwei/Library/Application Support/typora-user-images/image-20231115195246207.png)

 

4、Alpha任务分配计划:

# 测试计划

## 项目背景

(1)一个教师可以对多道题目进行操作(增删改查),而一道题目也可以被多个教师操作,因此教师和题目之间是多对多的关系;

(2)题型和标签也是多对多的关系。一道题目可能有多个标签(知识点),而一个标签也有多道题目;

## 测试术语

### 黑盒测试

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

### 压力测试

压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。

## 当期测试任务

主要进行黑盒测试:

- 测试教师对多到题目进行增加
- 测试教师对多到题目进行删除
- 测试教师对多到题目进行修改
- 测试教师对多到题目进行查找
- 测试题目的标签内容

 

5、测试计划:

### 3.1 Product Backlog:

 


### 3.2 Sprint Backlog:

 


### 3.3甘特图: