本学期工程实践我需要完成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,不能进行工具集下载和评论。