zoukankan      html  css  js  c++  java
  • 预培训-个人项目(地铁线路规划)

    术语表

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

    中文名 英文名 解释
    线路 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不熟悉,需要多使用
    • 对测试方法与测试工具不熟悉,不知道如何划分测试集与单元测试,需要多学习
    • 测试部分还未完成
  • 相关阅读:
    我的第一篇博客
    1.2 位于Shell脚本第一行的#!
    1.1 一个简单的脚本
    JDK与CGlib动态代理的实现
    解决Sublime Text3中文显示乱码问题
    多线程讲解
    (转)Spring中@Async用法总结
    (转)spring boot注解 --@EnableAsync 异步调用
    Spring Boot中的注解
    (转)如何用Maven创建web项目(具体步骤)
  • 原文地址:https://www.cnblogs.com/shanze/p/11221697.html
Copyright © 2011-2022 走看看