抽奖系统--从需求分析到概念原型
参考文献:https://gitee.com/mengning997/se/blob/master/ppt/%E4%BB%8E%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90%E5%88%B0%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1.pptx
1,用例分析
1.1,什么是用例
用例(Use Case)的核心概念中首先它是一个业务过程(business process),经过逻辑整理抽象出来的一个业务过程,这是用例的实质。
1.2,系统角色划分
抽奖系统角色共分为三类,包括基础的抽奖用户,抽奖发布者,以及进行数据信息管理的后端管理员。
1.3,抽奖用户用例
抽奖用户有如下需求:
1,用户需要注册后才可以登录系统
2,用户可以修改个人信息,并且可以注销账户
3,用户可以搜索活动,可以收藏感兴趣的活动,活动开始时,可以参加抽奖活动
4,用户可以查看自己的中奖信息,并且填写奖品收货信息
根据抽奖用户的需求,可以获取以下用例:
登录、注册、修改个人信息、注销账户、搜索活动、收藏活动、参加活动、查看中奖信息、填写物流信息
对应的用例图如下:
1.4,抽奖发布者用户用例
抽奖发布者有如下需求:
1,用户需要注册后才可以登录系统
2,用户可以修改个人信息,并且可以注销账户
3,用户可以发布抽奖活动,可以删除已发布的抽奖活动,还可以修改已发布的抽奖活动
4,可以给中奖用户发放奖品
根据抽奖用户的需求,可以获取以下用例:
登录、注册、修改个人信息、注销账户、发布活动、删除活动、修改活动、发放奖品
对应的用例图如下:
1.5,系统管理员
系统管理员有如下需求:
1,可以管理抽奖用户和抽奖发布者用户
2,可以暂停或删除违规的抽奖活动
3,可以获取用户对系统的投诉与建议
根据管理员的需求可以获取如下用例:
管理抽奖用户、管理抽奖发布者用户、暂停抽奖活动、删除抽奖活动、获取投诉与建议
对应的用例图如下:
2,业务领域建模
2.1,是什么
业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。
2.2,基本步骤
• 第一步,收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
• 第二步,头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
• 第三步,给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。
• 第四步,将结果用 UML 类图画出来。
第一步更多地在获取需求的阶段已经完成。
2.3,使用头脑风暴列出应用业务领域概念
名词:抽奖用户、抽奖发布者、系统管理员、登录、注册、个人信息、抽奖活动、奖品
X of Y: 抽奖用户的个人信息、抽奖发布者的个人信息、系统管理员的个人信息
及物动词:参加、发布、删除、发放、管理
2.4,业务领域概念分类
抽奖用户、抽奖发布者和系统管理员本质都是系统的用户,是名词,所以是一个类,他们之间存在继承关系。
登录、注册都能够独立存在,所以是一个类。
抽奖活动是一个名词,能够独立存在,是一个类。
个人信息是一个名词,但个人信息是用户的个人信息,不能独立存在,所以是属性。
参加是一个及物动词,抽奖用户参加活动,表示抽奖用户类和活动类的关联关系
发布是一个及物动词,发布用户发布活动,表示发布用户类和活动类的关联关系
奖品是一个名词,奖品归属于某一次抽奖活动,是一个聚合关系
发放是一个及物动词,发布用户向中奖用户发放奖品,表示三者间的关联关系
管理是一个及物动词,管理员管理用户,表示管理员类和其他用户类之间的关联关系
2.5,UML类图
3,关联类及数据模型
3.1,两者间关系
关联关系是业务数据建模的关键,我们来专门研究一下关联关系,并引入一个关联类(Association Class)的概念,而且关联类为两个类的关联关系定义了一些属性和方法。
3.2,基础数据模型
用户数据模型:User_table
属性 |
类型 |
键值 |
注释 |
Id |
Int |
主键 |
记录id |
name |
String |
- |
用户名 |
password |
String |
- |
密码 |
tell |
String |
- |
电话 |
address |
String |
- |
地址 |
登录/注册数据模型:Login_table
属性 |
类型 |
键值 |
注释 |
Id |
Int |
主键 |
记录id |
Name |
String |
- |
用户名 |
Password |
String |
- |
密码 |
奖品数据模型:goods_table
属性 |
类型 |
键值 |
注释 |
Id |
int |
主键 |
记录id |
name |
String |
- |
奖品名称 |
color |
String |
- |
颜色 |
Price |
Float |
- |
价格 |
抽奖活动数据模型:activity_table
属性 |
类型 |
键值 |
注释 |
Id |
int |
主键 |
记录id |
name |
String |
- |
活动名称 |
gId |
int |
外键 |
关联奖品表 |
startTime |
Date |
- |
开始时间 |
stopTime |
Date |
- |
结束时间 |
pName |
String |
- |
发布者姓名 |
pTell |
String |
- |
发布者电话 |
pAddress |
String |
- |
发布者地址 |
3.3,关联类及关系数据模型
关系类图:
关系类数据模型:
join_table
属性 |
类型 |
键值 |
注释 |
Id |
int |
主键 |
记录id |
userId |
int |
外键 |
中奖用户编号 |
activityId |
int |
外键 |
活动编号 |
goodName |
String |
- |
奖品名称 |
goodPrice |
float |
- |
奖品价格 |
create_table
属性 |
类型 |
键值 |
注释 |
Id |
int |
主键 |
记录id |
publisherId |
int |
外键 |
发布者编号 |
activityId |
int |
外键 |
活动编号 |
4,业务概念原型
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。
概念原型是一种虚拟的、理想化的软件产品形式。
抽奖用户注册之后通过登录进入系统,可以管理自己的个人信息,用户可以搜索抽奖活动,对感兴趣的抽奖活动可以加入收藏夹,用户花费一定的积分参加抽奖活动,可以查看中奖信息,可以填写获取奖品的物流信息。
抽奖活动发布者可以发布抽奖活动,在抽奖过程中可以根据活动人数,动态更改奖品数量。
系统管理员管理抽奖用户,活动发布者,以及抽奖活动,如果抽奖活动有违规行为,可以暂停或者删除抽奖活动。