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

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

github_address

在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间。(6')
在你实现完程序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间。(3')
PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划3010
· Estimate· 估计这个任务需要多少时间3010
Development开发9901290
· Analysis· 需求分析 (包括学习新技术)240420
· Design Spec· 生成设计文档1010
· Design Review· 设计复审6010
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)3010
· Design· 具体设计30120
· Coding· 具体编码360420
· Code Review· 代码复审3060
· Test· 测试(自我测试,修改代码,提交修改)180240
Reporting报告6025
Test Repor测试报告6025
Size Measurement计算工作量3010
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划3010
合计12001360
计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(25')

1330137-20190917233709720-132042129.png
关键:
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')

1330137-20190917230735122-121842861.jpg

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/031702307a/p/11497246.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值