概要设计规约 - XLab-Tongji/KAOSer GitHub Wiki
概要设计规约
原型设计
登陆界面UI主要由左边的系统简要介绍以及右边的用户输入组成
登录UI原型如下图所示
文档管理界面主要由操作按钮、项目展示模块和文档展示模块组成
文档管理UI原型如下图所示
画图界面UI主要由四个模块组成:
- 上方的文件编辑和绘图操作菜单栏
- 左侧的KAOS图形栏
- 右侧的KAOS图形外观编辑栏
- 中间的KAOS画板
画图UI原型如下图所示:
业务架构
系统业务主要可分为两大部分:
- KAOS模型绘制
该部分主要负责图形性绘制相关功能。
(1)在用户层,用户可以通过系统实现KAOS图形的创建、删除、修改和拖动,同时能够连接不同的图形,并对图形文本内容进行修改。
(2)在控制层,实现了一个绘图控制器,其中包括KAOS语法检测算法。期望在用户连接图形时,能达到根据KAOS语法规则自动检测错误并发出警示的功能。
(3)在模型层,对不同类型的KAOS图形分别存储。
- 文件管理
该部分主要负责模型文件和需求文档的管理。
(1)在用户层,用户可以通过系统实现创建、删除和重命名KAOS模型文件,同时用户可以导出选定的文件到本地,并且为现有的KAOS模型生成需求文档模型。
(2)在控制层,实现了一个文件资源管理器,以及需求模板生成算法。
(3)在模型层,存储了用户创建的文件及文档模板。
技术架构
- UI层
构建了一个Web端的应用,用户通过浏览器进入并使用系统。前端以Draw.io为基础进行改造。
- 应用层
后端使用Spring Cloud框架和java语言,并使用spring-data-mongodb来实现对MongoDB数据库的访问。
- 持久层
主要构建了自己的MongoDB数据库
部署结构
系统采用前后端分离的方式开发,前端基于drawio框架,后端使用springboot,均可通过docker部署到服务器上。数据库使用Mongodb来存储KAOS文件。
系统部署图如下所示:
数据建模
实体关系设计
根据KAOS方法的语法规则,建立不同的KAOS概念之间对应的实体关系图如下:
数据库设计
下面列出KAOS基本图形实体的各个字段名称,类型及简要描述
Shapes
图形基类,包括所有KAOS图形共有的字段
Column | Type | Description |
---|---|---|
-id | String | 图形标号 |
-style | String | 图形样式 |
-parent | String | 当前图形父图形的id |
-mxGeometry | String | 图形位置及大小 |
Goal
Column | Type | Description |
---|---|---|
-flag | String | 图形类型 |
-value | String | 目标名 |
-usecaseDiscription | String | 用例简要描述 |
-participant | String | 用例涉众 |
-preCondition | String | 用例前置条件 |
-aftCondition | String | 用例后置条件 |
Requirement
Column | Type | Description |
---|---|---|
-flag | String | 图形类型 |
-value | String | 需求名 |
-basicEventFlow | String | 用例基本事件流 |
-additionEventFlow | String | 用例附加事件流 |
-businessRule | String | 用例业务规则 |
-nonFunctionalRule | String | 用例非公能性需求 |
-refinesTo | String | 提炼的目标 |
-agents | String | 被实现的代理 |
Agent
Column | Type | Description |
---|---|---|
-flag | String | 图形类型 |
-value | String | 代理名 |
-agentType | String | 代理类型 |
Event
Column | Type | Description |
---|---|---|
-flag | String | 图形类型 |
-value | String | 事件名 |
-detail | String | 对该事件的描述 |
Operation
Column | Type | Description |
---|---|---|
-flag | String | 图形类型 |
-value | String | 操作名 |
-detail | String | 对该操作的描述 |
Domain Property
Column | Type | Description |
---|---|---|
-flag | String | 图形类型 |
-value | String | 名称 |
-description | String | 描述 |
-domainPropertyRef | String | 参考 |
Resource
Column | Type | Description |
---|---|---|
-flag | String | 图形类型 |
-value | String | 资源名 |
-reourceType | String | 资源类型 |
-Calls | String | 关联资源 |
( 其余图形暂时未进行修改设计 )
接口规约
/template
接口描述
在后端为当前KAOS模型生成需求文档模板
Request Method | Post |
参数
Data | Located in | Description | Required | Schema |
---|---|---|---|---|
usecaseName | json | 用例名 | Yes | String |
usecaseDiscription | json | 用例描述 | Yes | String |
participant | json | 用例涉众 | Yes | String |
preCondition | json | 前置条件 | Yes | String |
aftCondition | json | 后置条件 | Yes | String |
basicEventFlow | json | 基本事件流 | Yes | String |
addtionEventFlow | json | 附加事件流 | Yes | String |
businessRule | json | 业务规则 | Yes | String |
nonFunctionalRule | json | 非功能需求 | Yes | String |
返回结果
Code | Description | Schema |
---|---|---|
200 | Successful response | document : string |
示例请求
POST /template {
"usecaseName":"登录", "usecaseDiscription":"用户利用该用例登录系统,通过身份认证后获得相应的操作权限", "participant": "用户", "preCondition":"无", "aftCondition":"如果登录成功,则显示相应的操作界面", "basicEventFlow":"1. 用例起始于用户需要登录到该系统 2. 系统显示欢迎界面,并要求用户输入用户名和密码 3. 用户输入用户名和密码 4. 系统验证用户名和密码,允许用户登录系统(A-1)", "addtionEventFlow":"A-1 用户名错误或者密码错误 (1) 系统提醒用户目前输入用户名或密码错误,并进入第(2)步 (2) 用户可以重新输入用户名和密码(B-1),或选择结束该用例", "businessRule":"B-1 系统允许用户重复尝试三次登录操作,失败超过三次系统会自动结束,不允许用户重试", "nonFunctionalRule":"安全性:密码应采用加密方式进行存储,具体加密算法待定", }
示例结果
Goal value: 登陆
usecaseDiscription: 用户利用该用例登录系统,通过身份认证后获得相应的操作权限
participant: 用户
preCondition: 无
aftCondition: 如果登录成功,则显示相应的操作界面
/ServletDownload
接口描述
从后端下载已经生成的当前模型的需求文档模板
Request Method | Post |
参数
无
返回结果
Code | Description | Schema |
---|---|---|
200 | Successful response | document : md |
示例请求
POST /download
示例结果
将已经生成的markdown格式的需求规约文档保存到本地
/ServletDownloadJson
接口描述
从后端下载已经生成的当前模型的Json格式文档模板
Request Method | Post |
参数
无
返回结果
Code | Description | Schema |
---|---|---|
200 | Successful response | document : md |
示例请求
POST /downloadJson
示例结果
将已经生成的json格式的需求规约文档保存到本地
/save
接口描述
将KAOS文件保存到mongodb数据库中
Request Method | Post |
参数
无
返回结果
Code | Description | Schema |
---|---|---|
200 | Successful response | file : xml |
示例请求
POST /save
示例结果
[ { "-id": "2", "-value": "创建图形", "-style": "shape=requirement;strokeWidth=3;whiteSpace=wrap;html=1;right=0;top=0;bottom=0;fillColor=#F5F5F5;routingCenterX=-0.5;strokeColor=#000000", "-vertex": "1", "-parent": "1", "-flag": "requirement", "-basicEventFlow": "1. 用户点击图形 2. 用户拖动图形到画板 3. 用户松开鼠标", "-addtionEventFlow": "暂无", "-businessRule": "暂无", "-nonFunctionalRule": "暂无", "mxGeometry": { "-x": "150", "-y": "500", "-width": "120", "-height": "40", "-as": "geometry" } } ]