在对工程实践项目进行建模分析前,我先简述一下我的工程实践项目:CTF(Capture The Flag)在线答题平台的搭建。
CTF起源于1996年DEFCON全球黑客大会,是Capture The Flag的简称。CTF的题型主要包括MISC、CRYPTO、PWN、REVERSE、WEB、APK、IoT等,该工程实践的目的是设计和实现CTF学习平台,搭建一个网络安全相关题目在线答题平台,用户可以在该平台获取题目的相关环境,并由提供的环境找寻到最终的正确的FLAG进行验证。
注:在CTF比赛中,题解被叫做WriteUp(WP)
2.用例建模 2.1项目用例与参与者分析用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。
本项目有两种参与者(Actor):正常用户与管理员用户。
正常用户可以触发的用例如下所示:(注:->表示扩展用例,: 表示应包含用例)
注册系统
登陆系统->找回密码
答题:查看题目
收藏题目
上传(题目/题解)
点赞(题目/题解)
访问商城:查看个人积分 ->积分兑换商品
查看排行榜
个人中心:查看答题统计,查看收藏题目,查看收到的赞个数
评论
查看题解
管理员用户可以触发的用例如下所示:
题目管理:增加题目,删除题目,修改题目
审查题目和题解
题解管理:发布题解,删除题解
查看用户
删除评论
发布公告
上架商品
2.2完整用例图 3.业务领域建模业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景,这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。
3.1业务领域建模的过程• 第一步,收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
• 第二步,头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
• 第三步,给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。
• 第四步,将结果用 UML 类图画出来。
3.2业务分析本例中,有两种用户:普通用户和管理员,两者自用户类派生而来。()内表示该类包含的属性和方法。
用户类(用户ID,用户名称,密码)
普通用户(积分,获得题目,获得题解,评论,点赞,收藏题目,答题....)
管理员(增加题目,删除题目,修改题目,增加题解,删除题解,修改题解,获得用户信息,删除评论....)
本例中,还包含问题Question类,并由此衍生出相关的题目解答与评论
问题类(序号,内容,分值,点赞数目....)
题解(作者,点赞数目,所属问题,内容....)
评论(作者,内容,序号....)
在线答题平台增设了商城,用户可以通过积分兑换奖品。
商城类(商城名称,包含商品)
商品类(商品名称,图片,价格,余量)
3.3 UML图我们将上述业务分析中的类通过UML图的方式进行表示,如下图所示:
4.数据模型 4.1物理数据模型 User表 列名 数据类型 数据长度 是否可能为NULL 是否唯一 是否为主键 注释
User_ID bigint 16 N Y Y 用户注册ID
User_Name varchar 16 N Y N 用户账号名称
Passwd varchar 20 N N N 登录密码
Forks set 1000 Y N N 收藏的题目
Answer_Question set 1000 Y N N 已解答题目
Score bigint 16 N N N 积分
Admin表 列名 数据类型 数据长度 是否可能为NULL 是否唯一 是否为主键 注释
Admin_ID bigint 16 N Y Y 管理员ID
Admin_Name varchar 16 N Y N 管理员账户名称
Passwd varchar 20 N N N 登陆密码
Daily_Record varchar 2000 Y N N 工作日志
Question表 列名 数据类型 数据长度 是否可能为NULL 是否唯一 是否为主键 注释
Question_ID bigint 16 N Y Y 问题号码
Content varchar 1000 N Y N 问题内容
Author varchar 16 N N N 提供问题作者
Score bigint 16 N N N 答对问题积分
WP_List set 2000 Y N N 该问题的题解集合
Comment text 1000 Y N N 问题的评论集合
Like_Number bigint 16 N N N 问题的点赞数目
Type varchar 16 N N N 问题种类
Comment表 列名 数据类型 数据长度 是否可能为NULL 是否唯一 是否为主键 注释
Comment_ID bigint 16 N Y Y 评论ID
Question_ID bigint 16 N N N 该评论所归属的问题ID
Author varchar 16 N N N 评论发表者
Content text 500 N N N 评论内容
WP表 列名 数据类型 数据长度 是否可能为NULL 是否唯一 是否为主键 注释
WP_ID bigint 16 N Y Y 题解ID
Question_ID bigint 16 N N N 题解所归属的问题ID
Author varchar 16 N N N 题解发表者ID
Content text 3000 N Y N 题解内容
Like_Number bigint 16 N N N 题解点赞数目