从一个抽奖系统的设计体会软件工程中《从需求分析到软件设计》22
从一个抽奖系统的设计体会软件工程中《从需求分析到软件设计》11
本文章对一个抽奖系统进行需求分析和概念原型设计,该抽奖系统通过管理员设置抽奖信息、创建抽奖项目并发布,用户只需使用微信扫码即可参与抽奖。
1. 需求分析
1.1 需求分析是什么?
需求就是对用户期望的软件行为的表述;
获取需求就是需求分析师通过关注用户的期望和需要,从而获得用户期望的软件行为,然后对其进行表述的工作;
需求分析是在获取需求的基础上进一步对软件涉及的对象或实体的状态、特征和行为进行准确描述或建模的工作。
1.2 管理员功能需求
管理员用户可以输入账号、密码登录系统。管理员可以对奖品进行增删查改,也可以对抽奖项进行增删查改并发布。
1.3 用户功能需求
用户只需使用微信扫码填写联系方式即可参与抽奖,并实时查看抽奖结果。
2. 项目用例建模
2.1 用例建模的基本步骤
第一步,从需求表述中找出用例,往往是动名词短语表示的抽象用例;
第二步,描述用例开始和结束的状态,用TUCBW和TUCEW表示的高层用例;
第三步,对用例按照子系统或不同的方面进行分类,描述用例与用例、用例与参与者之间的上下文关系,并画出用例图;
第四步,进一步逐一分析用例与参与者的详细交互过程,完成一个两列的表格将参与者和待开发软件系统之间从用例开始到用例结束的所有交互步骤都列举出来扩展用例。
其中第一步到第三步是计划阶段,第四步是增量实现阶段。
用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。
本项目有两种参与者(Actor):正常用户与管理员用户。
2.2 管理员用例图

2.3 用户用例图

3. 业务领域建模
3.1 业务领域建模简介与方法
业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景,这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。
业务领域建模的基本步骤如下:
①收集业务领域的信息。
②头脑风暴。列出业务领域概念、属性、关系。
③将这些业务领域概念分类为类、属性和关系。
④用UML图绘制上属关系。
3.2 业务分析
根据我们在需求分析和用例分析中得到的结果,我们不难可以提出下面五个类:奖品、抽奖项、用户、管理员。列出他们的属性如下:
| 类名 | 属性 |
|---|---|
| 奖品 | 名称,图片,奖品描述 |
| 抽奖项 | 名称,抽奖次数,期限,抽奖奖品类型及个数 |
| 用户 | 用户id,参与的抽奖,中奖信息,联系方式 |
| 管理员 | 账号,密码,邮箱 |
3.3 uml图实现业务类图

4. 数据模型
4.1 数据模型简介
数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分,分别是数据结构、数据操作和数据约束。
4.2 本项目的数据模型
1.用户表
| 列名 | 数据类型 | 数据长度 | 可否为null | 是否为主键 | 备注 |
|---|---|---|---|---|---|
| id | bigint | 16 | N | Y | 用户id |
| attend | set | 1000 | Y | N | 参加的抽奖项 |
| win | set | 1000 | Y | N | 获得的奖品 |
| contact | varchar | 20 | N | N | 联系方式 |
2.管理员表
| 列名 | 数据类型 | 数据长度 | 可否为null | 是否为主键 | 备注 |
|---|---|---|---|---|---|
| id | bigint | 16 | N | Y | 管理员id |
| account | varchar | 20 | N | Y | 账号 |
| password | varchar | 20 | N | N | 密码 |
| varchar | 20 | N | N | 邮箱 |
3.奖品表
| 列名 | 数据类型 | 数据长度 | 可否为null | 是否为主键 | 备注 |
|---|---|---|---|---|---|
| id | bigint | 16 | N | Y | 奖品id |
| name | varchar | 20 | N | N | 名称 |
| photoURL | varchar | 100 | N | N | 图片地址 |
| description | text | 1000 | Y | N | 奖品描述 |
4.抽奖项目表
| 列名 | 数据类型 | 数据长度 | 可否为null | 是否为主键 | 备注 |
|---|---|---|---|---|---|
| id | bigint | 16 | N | Y | 项目id |
| name | varchar | 20 | N | N | 项目名称 |
| times | bigint | 16 | N | N | 抽奖次数 |
| dateStart | varchar | 20 | N | N | 起始时间 |
| dateEnd | varchar | 20 | N | N | 截止时间 |
| prizeList | set | 1000 | N | N | 奖品 |
5. 概念原型及工作过程
5.1 概念原型
概念是人对能代表某种事物或者发展过程的特点及其意义所形成的思维结论,而概念原型是一种虚拟化的、理想化的软件产品形式。
概念原型=用例+数据模型。
5.2 概念原型工作过程
概念原型需要结合具体的用例与数据模型去分析,就好像程序是由算法和数据结构两部分组成的。
本项目中运用到了用户用例和管理员用例。涉及的数据模型为用户、管理员、奖品和抽奖项。
用户可以通过微信扫码参与抽奖,在抽奖之前需要填写自己的联系方式,还可以查看中奖信息。而管理员用户主要是对抽奖项目的管理与维护,他可以对奖品进行增删查改等设置,对抽奖项目进行增删查改、发布与回收等。
总结
这只是简要的勾画出一个大体轮廓,有了大致方向可以着手开发,但还需要在后续的开发中不断迭代与完善。

浙公网安备 33010602011771号