软工-第一次个人编程作业

在Github仓库中新建一个学号为名的文件夹,同时在博客正文首行给出作业github链接,并在第一次个人编程作业评分表的github链接部分填入第一次个人编程作业的github链接。(1')

github_address

在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间。(6')

在你实现完程序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间。(3')

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 10
· Estimate · 估计这个任务需要多少时间 30 10
Development 开发 990 1290
· Analysis · 需求分析 (包括学习新技术) 240 420
· Design Spec · 生成设计文档 10 10
· Design Review · 设计复审 60 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 10
· Design · 具体设计 30 120
· Coding · 具体编码 360 420
· Code Review · 代码复审 30 60
· Test · 测试(自我测试,修改代码,提交修改) 180 240
Reporting 报告 60 25
Test Repor 测试报告 60 25
Size Measurement 计算工作量 30 10
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 30 10
合计 1200 1360

计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(25')


关键:
1.将“,”前面的名字信息分离出来
2.利用正则函数匹配到十一位手机号码,并将其分离出来
3.利用查找json文件里的省市关键字,匹配到相应的省市信息,如缺失再加入特判情况,尽量兼顾。

独到之处:

  • 1.地址逐级处理——搜索两个关键字,查询有无对应下一级地址
    优点:在前面级地址非空缺情况下可以匹配效率高
    缺点:前面级地址空缺,搜索效率低,而且只能匹配三级(文件数据有限)
# 查找区/县/县级市(前提省市不为空)
def search_area(p: str, c: str, a: str):
    for area in js[p][c]:
        if (area.find(a)) != -1:
            return area
    area = ""
    return area
  • 2.人工特判很多情况,能将一般情况覆盖&比较特殊的因为缺少逐级匹配而且可能有缺失项可操作性不高

计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017/JProfiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(4')

令人感到意外的是消耗最大的函数是分离出姓名和电话,是调用正则函数查找电话消耗太大吗?然后分离地址函数中省份解析函数是最大消耗,大概因为遍历查找8

计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(6')



总结:从单元测试结果来看,输入中匹配程度越高(各个级无空缺)时,代码覆盖率较高,部分级别地址有缺失的,代码覆盖率就较差。

计算模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景。(5')

异常:
1.缺少县市区这级中有低级地址(如xx工业区)要是单独因为有区字被判断成县市区这集,就会发生错误。解决:在区的位置中特判区的位置,在字符中的下标太长一般可以排除。

1!梨花,福建漳州梅洲乡青梅13131313132工业区666号.
{
    "姓名":"梨花",
    "手机":"13131313132",
    "地址":[
        "福建省",
        "漳州市",
        "",
        "梅洲乡",
        "青梅工业区666号"
    ]
}

2.因为导入的省市信息不够完整,无法做到三级后面的路街社区等地址的完全正确匹配,因为人工考虑到的情况比较有缺陷,这也是代码中的bug
3.没有考虑到输入缺陷的情况,因为写代码时默认数据输入正常。(数据不就这样规定的吗,so,我没能考虑到这个异常)

posted @ 2019-09-10 14:18  kkkoover  阅读(245)  评论(6编辑  收藏  举报