一.Github仓库
Github地址
二.PSP表格
我的表头折腾了好久还是出不来,所以我把它搞成内容了
p s p 2.1 | personal software process stage | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
psp2.1 | personal software process stage | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 10 | 10 |
Estimate | 估计这个任务需要多数时间 | 540 | 660 |
Development | 开发 | 200 | 300 |
Analysis | 需求分析(包括学习新技术) | 210 | 210 |
Design Spec | 生成设计文档 | 90 | 120 |
Design Review | 设计复审 | 60 | 30 |
Coding Standard | 代码规范(为目前的开发制定合适的规范 | 30 | 45 |
Design | 具体设计 | 120 | 90 |
Coding | 具体编码 | 180 | 150 |
Test | 测试(自我测试,修改代码,提交修改) | 180 | 120 |
Reporting | 报告 | 60 | 90 |
Test Repor | 测试报告 | 45 | 60 |
Size Measurement | 计算工作量 | 30 | 45 |
Postment&Process Improvement Plan | 事后总结,并提出过程改进计划 | 60 | 90 |
合计 | 1815 | 2020 |
三.计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(25')
1.主要函数有:(1)fir_3:调用cpca获取前3级 (2)lev_5:将前3级剩下的地址进行5级解析 得到1级(3)lev_7:将5级解析的结果再进行解析得到剩下的3级 (4)lev_auto:将经过补充后的地址进行7级解析 (5)_auto_geo_completion调用api进行地址补充
2。程序工作流程图:
3.算法关键:主要是利用cpca进行前三级的自动匹配和补充,刚开始调用api,后来发现cpca也可以自动补充,优点是准确度会高一点,代码量也会少一点,缺点就是用时长,测试的时候等的时间非常的长,我测一次大概要1个半小时。QAQ疯狂嘤嘤嘤。 当然,现在不会了,新工具快很多,赞!!!
四.计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017/JProfiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(4')
用的是python自带的profile库测试的,在分割前三级,也就是调用cpca的包耗费的时间最多,改进的话,就是用含有前三级的字典进行匹配,自己写的代码部分会多一些,但应该会快很多。
五.计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(6')
1.代码:
import unittest
from _031702304 import *
class MyTest(unittest.TestCase):
def tearDown(self):
#每个测试用例执行之后做操作
pass
def setUp(self):
pass
def test_get_type(self):
self.assertIs("1!王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.","1")
self.assertIs("2!张三,福建福州闽13599622362侯县上街镇福州大学10#111.","2")
self.assertIs("3!李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.","3")
def test_get_name(self):
self.assertIs(get_name("小美,北京市东15822153326城区交道口东大街1号北京市东城区人民法院."),'小美','北京市东15822153326城区交道口东大街1号北京市东城区人民法院')
self.assertIs(get_name("李四,福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层."),"李四")
self.assertIs(get_name("张三,福建福州闽13599622362侯县上街镇福州大学10#111."),"张三")
self.assertIs(get_name("王五,福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院."),"王五")
def test_get_tel(self):
self.assertIs("福建省福州市鼓楼18960221533区五一北路123号福州鼓楼医院.","18960221533")
self.assertIs("福建福州闽13599622362侯县上街镇福州大学10#111.","13599622362")
self.assertIs("福建省福州13756899511市鼓楼区鼓西街道湖滨路110号湖滨大厦一层.","13756899511")
出现了以上的报错,没有找到有效的解决方法,好像是因为我是在anaconda运行的原因。
2.所以我手动又测试了一下,题目给的前4个样例:
3.代码覆盖率:
六.计算模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景。(5')
这个是用测评工具测试的时候出现的异常,感觉是因为我在进行这次测试的时候用的数据集是删除掉第3类型的数据,所以score也出不来,换了数据集就可以了。
七.心得
1.感觉理解能力有待提高,每次看完博客都是懵的,好像可以理解,但是操作起来却又一堆问题。
2.可能看起来问题很小或者工作量不大,但是一旦出现问题,都会耗费大量的时间。
3.看完教程之后,还是不会打,老是数据格式弄错,弄错语法,一堆奇怪的因为缩进引起的报错。