本学期工程实践我需要完成ctf赛题学习与安全工具分享平台的搭建,对此进行用例建模和业务领域建模,以及数据建模,最终形成概念原型。
一、用例图
用例建模主要分为四个步骤:
第一步是从需求表述中找出用例,往往是动名词短语表示的抽象用例;
第二步是描述用例开始和结束的状态;
第三步是对用例按照子系统或不同的方面进行分类,描述用例与用例、用例与参与者之间的上下文关系,并画出用例图;
第四步是进一步逐一分析用例与参与者的详细交互过程,完成一个两列的表格将参与者和待开发软件系统之间从用例开始到用例结束的所有交互步骤都列举出来扩展用例。
其中第一步到第三步是计划阶段,第四步是增量实现阶段。
对业务过程进行分析,主体分为未注册用户、参赛者(即注册用户)、管理员。因为后期会考虑引进在线比赛,所以以参赛者代称已注册用户。未注册用户经过注册后可以进行解题与编写writeup(即ctf比赛中的题解)等操作,否则只能查看赛题与writeup。同时,工具及的下载也只允许注册用户操作。管理员则有着管理用户、赛题和审查安全工具、writeup的权利。

二、类图
业务领域建模同样基本分为四步:
第一步是收集应用业务领域的信息。聚焦在功能需求层面,也考虑其它类型的需求和资料;
第二步就是头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
第三步是给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系;
第四步就是将结果用UML类图画出来。
简单分析下:参赛者与管理员都可以继承于抽象用户类,未注册用户也是继承于抽象用户类,只是多了一个查看别人writeup和工具集的方法。而参赛者与管理员除了有自己的特殊信息,如昵称密码这类的,还可以进行更多的操作,比如参赛者可以进行writeup的撰写和工具集的上传,管理员可以对各种元素信息进行管理等等,图中有具体描述就不再赘述。
对于每一个问题而言,其背后是有参赛者给出的writeup的,一对多的关系。每一个writeup或者问题都可以由自己对应的类别(本身ctf比赛的题目就分为5类)。每一篇writeup还有评论和访问量等信息。评论来自于其他参赛者,访问量来自于所有可访问用户。每一个writeup同时会附上作者使用的安全工具链接,供其他学习者下载使用。当然,为了保证工具的安全性以及合法性,管理员需要对工具进行审查与分类。

三、数据模型
根据上文所述的用例建模和类图,可以得出如下数据模型:
管理员表:
| 名称 | 类型 | 注释 |
| userId | int | 管理员Id |
|
userName |
varchar | 管理员名称 |
| password | varchar | 管理员密码 |
参赛者表:
| 名称 | 类型 | 注释 |
| userId | int | 参赛者Id |
| userName | varchar(10) | 参赛者昵称 |
| password | varchar(20) | 参赛者密码 |
| portrait | varchar() | 参赛者头像的存储路径 |
| gender | bool | 参赛者性别 |
问题表:
| 名称 | 类型 | 注释 |
| questionId | int | 赛题Id |
| category | varchar(10) | 赛题分类 |
安全工具表:
| 名称 | 类型 | 注释 |
| toolName | varchar(10) | 安全工具名称 |
| category | varchar(10) | 安全工具分类 |
| downloadUrl | varchar() | 安全工具下载链接 |
评论表:
| 名称 | 类型 | 注释 |
| commentId | int | 评论Id |
| writeUp | int | 该评论所属的writeup的id |
| user | int | 评论者id |
| addTime | bigint | 评论发布时间 |
| content | text | 评论内容 |
writeup信息表:
| 名称 |
类型 |
注释 |
| writeUpId | int | writeup的Id |
| question | int | 所属问题id |
| visit | int | 访问量 |
| addTime | bigint | 发布时间 |
| content | text | 内容 |
| uesr | int | 发布者 |
| title | varchar(20) | 标题 |
| tools | varchar | 安全工具下载链接 |
四、概念原型
概念原型是一种虚拟的、理想化的软件产品形式。
对于概念原型,我们有如下公式:
概念原型 = 用例 + 数据模型
整个流程大致如下:经过注册的参赛者可以为赛题撰写writeup并附上使用的工具集,同时可以对别的参赛者发表的writeup进行评论、对工具集进行下载;
管理员有权利对所有元素,包括writeup、工具集和评论等信息进行维护管理;
未注册用户只能浏览赛题和writeup,不能进行工具集下载和评论。
浙公网安备 33010602011771号