在该项目中,有两个重要的实体概念:线路与站点。为了统一语言,下面给出术语表。
中文名 | 英文名 | 解释 |
---|---|---|
线路 | Line | 即地铁线路,由一组有序的站点构成 |
站点 | station | 即地铁站点,地铁的停靠站点 |
输入本项目的数据文件采用json格式,具体格式如下所示。
[
{
name:'线路名',
station_list:[
{
name:'站点名1'
},
{
name:'站点名2'
},
......
]
},
....
]
为对应以上数据组织方式,在项目中也存在Line类和station类,二者是一对多的关系。
整个项目可以被划分为五个模块:
模块名 | 职责 |
---|---|
主控模块 | 整个项目的流程控制 |
参数解析模块 | 对输入的参数进行解析 |
数据模块 | 项目的文件输入与文件输出,项目内数据的组织形式 |
算法模块 | 提供支撑项目的核心算法,如floyd算法 |
命令模块 | 对项目功能的封装,本项目中有两个命令:查询线路和规划线路 |
模块之间的调用顺序图如下图所示:
在完成模块的设计后,需要进一步细化到类的设计。
类名 | 所属模块 | 职责 |
---|---|---|
Subway | 主控模块 | 整个项目的流程控制 |
InputVariables | 参数解析模块 | 对输入的参数进行解析 |
QueryCommand | 命令模块 | 封装查询线路命令 |
PlaneCommand | 命令模块 | 封装规划线路命令 |
Floyd | 算法模块 | 提供floyd算法规划最短路径 |
DataReader | 数据模块 | 读取指定路径的数据文件 |
DataWriter | 数据模块 | 将计算结果写入指定路径 |
Line | 数据模块 | 封装线路属性 |
Station | 数据模块 | 封装站点属性 |
依据以上设计,可以进一步细化顺序图。
解析参数
读取数据文件
执行查询命令
执行规划命令
对以上顺序图进行总结,可以得到以下类图:
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 |
合计 |
原文:https://www.cnblogs.com/shanze/p/11221697.html