预培训-个人项目(地铁线路规划)

术语表

在该项目中,有两个重要的实体概念:线路与站点。为了统一语言,下面给出术语表。

中文名 英文名 解释
线路 Line 即地铁线路,由一组有序的站点构成
站点 station 即地铁站点,地铁的停靠站点

数据文件设计

输入本项目的数据文件采用json格式,具体格式如下所示。

[
    {
        name:'线路名',
        station_list:[
            {
                name:'站点名1'
            },
            {
                name:'站点名2'
            },
            ......
        ]
    },
    ....
]

为对应以上数据组织方式,在项目中也存在Line类和station类,二者是一对多的关系。

1650241-20190721163702425-981654452.png

模块划分与设计

整个项目可以被划分为五个模块:

模块名 职责
主控模块 整个项目的流程控制
参数解析模块 对输入的参数进行解析
数据模块 项目的文件输入与文件输出,项目内数据的组织形式
算法模块 提供支撑项目的核心算法,如floyd算法
命令模块 对项目功能的封装,本项目中有两个命令:查询线路和规划线路

模块之间的调用顺序图如下图所示:

预培训-个人项目(地铁线路规划)_第1张图片

在完成模块的设计后,需要进一步细化到类的设计。

类名 所属模块 职责
Subway 主控模块 整个项目的流程控制
InputVariables 参数解析模块 对输入的参数进行解析
QueryCommand 命令模块 封装查询线路命令
PlaneCommand 命令模块 封装规划线路命令
Floyd 算法模块 提供floyd算法规划最短路径
DataReader 数据模块 读取指定路径的数据文件
DataWriter 数据模块 将计算结果写入指定路径
Line 数据模块 封装线路属性
Station 数据模块 封装站点属性

依据以上设计,可以进一步细化顺序图。

解析参数
预培训-个人项目(地铁线路规划)_第2张图片

读取数据文件
预培训-个人项目(地铁线路规划)_第3张图片

执行查询命令
预培训-个人项目(地铁线路规划)_第4张图片

执行规划命令

预培训-个人项目(地铁线路规划)_第5张图片

对以上顺序图进行总结,可以得到以下类图:

测试

  • 测试参数解析模块的正确性与健壮性
    • 输入正确的参数测试是否解析正确
    • 输入错误的参数测试是否加载默认值
  • 测试输入数据对程序的影响
    • 输入正确数据测试程序是否能正常运行
    • 输入错误的数据格式测试程序能否运行
    • 输入空数据测试程序是否运行
  • 测试输出数据对程序的影响
    • 输入正确输出路径测试程序是否正常运行
    • 输入空输出路径测试程序能否运行
  • 测试程序的核心功能
    • 测试是否能正确规划出两点的最短路径

总结(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不熟悉,需要多使用
  • 对测试方法与测试工具不熟悉,不知道如何划分测试集与单元测试,需要多学习
  • 测试部分还未完成

转载于:https://www.cnblogs.com/shanze/p/11221697.html

你可能感兴趣的:(预培训-个人项目(地铁线路规划))