术语表
在该项目中,有两个重要的实体概念:线路与站点。为了统一语言,下面给出术语表。
中文名 | 英文名 | 解释 |
---|---|---|
线路 | Line | 即地铁线路,由一组有序的站点构成 |
站点 | station | 即地铁站点,地铁的停靠站点 |
数据文件设计
输入本项目的数据文件采用json格式,具体格式如下所示。
[
{
name:'线路名',
station_list:[
{
name:'站点名1'
},
{
name:'站点名2'
},
......
]
},
....
]
为对应以上数据组织方式,在项目中也存在Line类和station类,二者是一对多的关系。
模块划分与设计
整个项目可以被划分为五个模块:
模块名 | 职责 |
---|---|
主控模块 | 整个项目的流程控制 |
参数解析模块 | 对输入的参数进行解析 |
数据模块 | 项目的文件输入与文件输出,项目内数据的组织形式 |
算法模块 | 提供支撑项目的核心算法,如floyd算法 |
命令模块 | 对项目功能的封装,本项目中有两个命令:查询线路和规划线路 |
模块之间的调用顺序图如下图所示:
在完成模块的设计后,需要进一步细化到类的设计。
类名 | 所属模块 | 职责 |
---|---|---|
Subway | 主控模块 | 整个项目的流程控制 |
InputVariables | 参数解析模块 | 对输入的参数进行解析 |
QueryCommand | 命令模块 | 封装查询线路命令 |
PlaneCommand | 命令模块 | 封装规划线路命令 |
Floyd | 算法模块 | 提供floyd算法规划最短路径 |
DataReader | 数据模块 | 读取指定路径的数据文件 |
DataWriter | 数据模块 | 将计算结果写入指定路径 |
Line | 数据模块 | 封装线路属性 |
Station | 数据模块 | 封装站点属性 |
依据以上设计,可以进一步细化顺序图。
解析参数
读取数据文件
执行查询命令
执行规划命令
对以上顺序图进行总结,可以得到以下类图:
测试
- 测试参数解析模块的正确性与健壮性
- 输入正确的参数测试是否解析正确
- 输入错误的参数测试是否加载默认值
- 测试输入数据对程序的影响
- 输入正确数据测试程序是否能正常运行
- 输入错误的数据格式测试程序能否运行
- 输入空数据测试程序是否运行
- 测试输出数据对程序的影响
- 输入正确输出路径测试程序是否正常运行
- 输入空输出路径测试程序能否运行
- 测试程序的核心功能
- 测试是否能正确规划出两点的最短路径
总结(PSP表格)
PSP 2.1 | Personal Software Process Stages | Time |
---|---|---|
Planning | 计划 | |
· Estimate | · 估计这个任务需要多少时间 | 1h |
Development | 开发 | |
· Analysis | · 需求分析 (包括学习新技术) | 2h |
· Design Spec | · 生成设计文档 | 1day |
· Design Review | · 设计复审 (和同事审核设计文档) | - |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | - |
· Design | · 具体设计 | 1day |
· Coding | · 具体编码 | 5h |
· Code Review | · 代码复审 | - |
· Test | · 测试(自我测试,修改代码,提交修改) | |
Reporting | 报告 | - |
· Test Report | · 测试报告 | - |
· Size Measurement | · 计算工作量 | - |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 1h |
合计 |
体会
- 对idea不熟悉,需要多使用
- 对测试方法与测试工具不熟悉,不知道如何划分测试集与单元测试,需要多学习
- 测试部分还未完成