高考备考网络平台的需求分析和概念原型
1 引言
在学习了《高级软件工程》中需求分析与概念设计相关内容后,本文拟针对所参与的项目进行需求分析、用例建模、业务领域建模、数据建模并最终形成概念原型,对于所学内容进行总结和升华。
2 项目背景
做一个项目之前,分析清楚项目的大致作用和目的是非常重要的。下面简要介绍一下项目的背景和想要达成的目标。
对于高考备考生来说,在传统的高考备考中,学生通过学校安排复习阶段,老师课堂授课和课外大量刷题的方式进行备考。他们想要获取高考相关的热点信息,一般通过学校、老师的通知获知,或者自己在网上进行查找。学生在学习中遇到问题,大多数情况是向老师或者同学请教,而在时间上往往是受限制的。
互联网不断发展的过程中,在线学习受到越来越多学生的青睐,而线上平台是在线学习不可缺少的一部分。如何在众多的学习平台和软件中获取自己想要的信息则显得十分重要。学生要查看最新的高考动态,需要到各大新闻网站或者教育网站进行查看,搜索信息便花费了大量的时间。想要知道往年学校的录取分数,需要实体的志愿填报指导书或者到网站上搜索,缺少对比。
因此,将高考备考辅导和网络学习结合起来,设计一个备考网络平台,为学生提供辅导帮助,可让学生了解到更多的高考动态,获取更多的学习资源,对学生和社会来说,具有现实价值和意义。
3 需求分析
3.1 需求分析概述
需求分析是软件工程重要的一环,简而言之,就是确定你的项目使用者具体有什么需求,这是在之前项目背景之上再进一步,对象达到了用户的粒度。下面介绍两个名词:
需求: 对用户期望的软件行为的表述
需求分析: 确定新系统的目的、范围、定义和功能时所要做的所有工作
对于需求而言,可能是无限的,所以可能出现“五彩斑斓的黑”这样的需求;然而需求的作用对象是项目,需求分析是为了项目服务的,而项目是骨感的,只能实现有限的需求,所以在进行需求分析的时候也需要尽可能体现项目的价值、减少工作量。
3.2 本项目的需求分析
高考备考平台主要就是给高考考生提供一个在线学习、信息交流的平台。我们从两方面来分析考生和管理者的需求:
1)功能性需求:
1.a) 考生:
- 注册和登录: 鉴权实现
- 修改个人信息:包括头像·、性别、隐私信息等
- 在线学习:包括做题练习和在线考试
- 查询信息: 目标高校录取政策和分数线、新闻和视频等
- 讨论区: 使用论坛进行学习上或生活上的讨论
1.b) 管理员:
- 用户管理: 用户信息的维护
- 信息更新: 使用各种方式更新数据和题目等
2)非功能性需求:
高并发: 支持多用户同时访问平台
高可用: 平台能抵御一些可预见和不可预见的问题
4 用例建模
4.1 用例建模方法
4.1.a 用例定义
用例是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。
4.1.b 用例的基本要素
- 一个用例应该由业务领域内的某个参与者所触发;
- 用例必须能为特定的参与者完成一个特定的业务任务;
- 一个用例必须终止于某个特定参与者,也就是特定参与者明确地或者隐含地得到了业务任务完成的结果
4.1.c 用例建模的基本步骤
- 第一步,从需求表述中找出用例,往往是动名词短语表示的抽象用例;
- 第二步,描述用例开始和结束的状态,用TUCBW和TUCEW表示的高层用例;
- 第三步,对用例按照子系统或不同的方面进行分类,描述用例与用例、用例与参与者之间的上下文关系,并画出用例图;
- 第四步,进一步逐一分析用例与参与者的详细交互过程,完成一个两列的表格将参与者和待开发软件系统之间从用例开始到用例结束的所有交互步骤都列举出来扩展用例;
4.1.d 用例提取
用例一般是需求中与业务领域相关的动名词和动名词短语,验证业务领域相关的动名词或动名词短语是不是用例的标准是满足四个必要条件:
- 是一个业务过程
- 是由某个参与者触发开始
- 是显式地或隐式地终止于某个参与者
- 是为某个参与者完成了有用的业务工作
4.2 项目用例分析和绘图
3.2中的分析已经基本上覆盖了所有用户和系统的交互。用例图如下:

5 业务领域建模
5.1 业务领域概述
业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中, 他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景, 这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。开发团队获取业务领域知识的过程一般包括收集业务领域相关佇自执行团队头脑风暴、对业务领域相关的知识概念进行分类, 最后用类图将业务领域知识图形化展示。
其中包括了:
- 收集应用业务领域的信息。聚焦在功能需求层面,也考虑其它类型的需求和资料;
- 头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
- 给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系;
- 将结果用UML类图画出来。
业务建模也可以分成四个方向:
- 组织机构和人员模型。包括工作内容,职责,以及因此带来的制度规范的变化。
- 业务/处理模型。可以根据需要作层次化的细化。
- 信息模型。信息模型至少包括了静态的信息形式化后的数据表示,数据规范,数据标准,数据字典、术语、元数据定义等等静态的东西。
- 环境模型。环境模型描述了软件系统所运行需要的环境,例如软件环境,OS,数据库,web服务器。
5.2 业务领域分析
处于复杂度分析,本部分绘制了用户和管理员对于信息修改的操作类图。用户能登录、注册、修改个人信息,管理员可以查询、修改用户的信息。

6 数据建模
6.1 数据建模概述
数据建模是一种用于定义和分析数据的要求和其需要的相应支持的信息系统的过程,即是对现实世界各类数据的抽象组织,确定数据库需管辖的范围、数据的组织形式等直至转化成现实的数据库。 将经过系统分析后抽象出来的概念模型转化为物理模型后,在工具建立数据库实体以及各实体之间关系的过程。
6.2 数据建模分析
平台的ER图如图所示:

所作数据建模如下:
(1)用户表:
用户表用于存储用户和管理员的个人信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
u_id |
int |
用户编号 |
否 |
是 |
|
type |
int |
用户类型 |
否 |
否 |
|
user_name |
varchar(20) |
用户名 |
否 |
否 |
|
pass_word |
varchar(20) |
密码 |
否 |
否 |
|
nick_name |
varchar(20) |
昵称 |
是 |
否 |
|
|
varchar(100) |
绑定邮箱 |
是 |
否 |
|
sign |
varchar(200) |
个人签名 |
是 |
否 |
|
avatar |
varchar(100) |
头像 |
是 |
否 |
(2)发言表:
发言表用于存储论坛模块中用户的发言信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
art_id |
int |
发言编号 |
否 |
是 |
|
au_id |
int |
作者编号,外键 |
否 |
否 |
|
content |
varchar(500) |
发言内容 |
是 |
否 |
|
com_counts |
int |
评论数 |
是 |
否 |
|
art_date |
varchar(30) |
发言日期 |
是 |
否 |
(3)评论表:
评论表用于存储与发言表相关联的评论,以用户表的用户编号,发言表的文章编号作为外键引用
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
com_id |
int |
评论编号 |
否 |
是 |
|
u_id |
int |
作者编号,外键 |
否 |
否 |
|
art_id |
int |
文章编号外键 |
否 |
否 |
|
com_date |
varchar(30) |
评论日期 |
是 |
否 |
|
com_content |
varchar(300) |
评论内容 |
是 |
否 |
(4)新闻表:
新闻表用于存储管理员上传的站内新闻信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
news_id |
int |
新闻编号 |
否 |
是 |
|
title |
varchar(100) |
新闻标题 |
是 |
否 |
|
content |
varchar(2000) |
新闻内容 |
是 |
否 |
|
date |
varchar(30) |
上传日期 |
是 |
否 |
(5)试卷表:
试卷表用于存储试卷的题目信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
paper_id |
int |
试卷编号 |
是 |
是 |
|
question_type |
int |
题目类型 |
是 |
是 |
|
question_id |
int |
题目编号 |
是 |
是 |
(6)考试表:
考试表用于存储考试的基本信息,以试卷编号作为外键获取试卷信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
exam_code |
int |
考试编号 |
是 |
是 |
|
description |
varchar(255) |
考试试卷标题 |
是 |
否 |
|
subject |
varchar(20) |
科目 |
是 |
否 |
|
paper_id |
int |
试卷编号,外键 |
是 |
否 |
|
exam_date |
vchar(10) |
组卷日期 |
是 |
否 |
|
total_time |
int |
考试时长 |
是 |
否 |
|
total_score |
int |
卷面总分 |
是 |
否 |
|
tips |
varchar(255) |
考试提醒 |
是 |
否 |
(7)填空题表:
填空题表用于存储填空题的基本信息,因为各个题型的存储信息不同,所以分成多个表进行存储
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
question_id |
int |
题目编号 |
否 |
是 |
|
subject |
varchar(10) |
科目 |
是 |
否 |
|
question |
varchar(500) |
问题 |
是 |
否 |
|
picture |
varchar(100) |
问题插图 |
是 |
否 |
|
answer |
varchar(255) |
正确答案 |
是 |
否 |
|
analysis |
varchar(255) |
答案解析 |
是 |
否 |
|
score |
int |
题目分值 |
是 |
否 |
|
level |
varchar(10) |
题目难度 |
是 |
否 |
(8)简答题表:
简答题表用于存储简答题的基本信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
question_id |
int |
题目编号 |
否 |
是 |
|
subject |
varchar(10) |
科目 |
是 |
否 |
|
question |
varchar(500) |
问题 |
是 |
否 |
|
picture |
varchar(100) |
问题插图 |
是 |
否 |
|
answer |
varchar(255) |
正确答案 |
是 |
否 |
|
analysis |
varchar(255) |
答案解析 |
是 |
否 |
|
score |
int |
题目分值 |
是 |
否 |
|
level |
varchar(10) |
题目难度 |
是 |
否 |
(9)选择题表:
选择题表用于存储选择题的基本信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
question_id |
int |
题目编号 |
否 |
是 |
|
subject |
varchar(10) |
科目 |
是 |
否 |
|
question |
varchar(255) |
问题 |
是 |
否 |
|
picture |
varchar(100) |
问题插图 |
是 |
否 |
|
choice_a |
varchar(255) |
选项a |
是 |
否 |
|
choice_b |
varchar(255) |
选项b |
是 |
否 |
|
choice_c |
varchar(255) |
选项c |
是 |
否 |
|
choice_d |
varchar(255) |
选项d |
是 |
否 |
|
answer |
varchar(4) |
正确答案 |
是 |
否 |
|
analysis |
varchar(255) |
答案解析 |
是 |
否 |
|
score |
int |
题目分值 |
是 |
否 |
|
level |
varchar(10) |
题目难度 |
是 |
否 |
(10)视频表:
视频表用于存储视频的基本信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
v_id |
int |
视频编号 |
是 |
是 |
|
subject |
varchar(5) |
科目 |
是 |
否 |
|
pic |
varchar(150) |
视频封面 |
是 |
否 |
|
title |
varchar(20) |
视频标题 |
是 |
否 |
|
inner_html |
varchar(300) |
视频链接 |
是 |
否 |
|
type |
varchar(10) |
视频类型 |
是 |
否 |
(11)学校表:
学校表用于存放高校的基本信息
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
uni_id |
int |
学校编号 |
是 |
是 |
|
uni_area |
varchar(15) |
学校省份 |
是 |
否 |
|
uni_name |
varchar(20) |
学校名称 |
是 |
否 |
(12)录取情况表:
录取情况表用于存放各高校的录取情况,以学校编号为外键引用
|
字段名 |
类型 |
说明 |
是否为空 |
关键字 |
|
line_id |
int |
录取编号 |
是 |
是 |
|
uni_id |
int |
学校编号,外键 |
是 |
否 |
|
stu_area |
varchar(15) |
学生所在省份 |
是 |
否 |
|
year |
int |
录取年份 |
是 |
否 |
|
low_line |
int |
录取最低分 |
是 |
否 |
|
height_line |
int |
录取最高分 |
是 |
否 |
|
stu_number |
int |
录取人数 |
是 |
否 |
|
wenli |
varchar(3) |
文理分科情况 |
是 |
否 |
7 概念原型工作流程
7.1 概念原型概述
概念原型是一种虚拟的、理想化的软件产品形式。它可以表示为: 用例 + 数据模型。
7.2 项目概念原型分析
由上述分析可知,平台的概念原型是:
未注册用户进行注册,注册用户登录后可以实现个人信息修改、在线学习、查询信息、在线讨论的功能。
管理员可以在登录后进行用户管理和信息更新。
8 总结
经过本次分析,对于软件工程的需求分析和概要设计有了一定程度的理解。需求分析需要由有充分的经验、技术知识和语言技巧的专家来完成,所以在进行需求分析的时候需要非常耐心、仔细,概要设计要绘制UML类图及ER图,对于数据库设计有一定指导作用,所以在概要设计的时候也需要小心谨慎。

浙公网安备 33010602011771号