第一次个人编程作业
一、PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 30 |
| · Estimate | · 估计这个任务需要多少时间 | 5 | 5 |
| Development | 开发 | 300 | 360 |
| · Analysis | · 需求分析 (包括学习新技术) | 100 | 180 |
| · Design Spec | · 生成设计文档 | 30 | 20 |
| · Design Review | · 设计复审 | 20 | 30 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 10 |
| · Design | · 具体设计 | 30 | 60 |
| · Coding | · 具体编码 | 300 | 350 |
| · Code Review | · 代码复审 | 30 | 20 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 60 | 40 |
| Reporting | 报告 | 40 | 60 |
| · Test Repor | · 测试报告 | 20 | 30 |
| · Size Measurement | · 计算工作量 | 10 | 5 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 10 |
| 合计 | 985 | 1210 |
二、计算模块接口
-
(2.1)计算模块接口的设计与实现过程。
面向github和csdn编程。对于敏感词处理问题可以采用AC自动机算法。需要两个类,一个是ac_node类,一个字典树ac_tree类。对于字典树ac_tree类,核心关键在于设计构建字典树build_tree函数和查找匹配search_senten函数。
假设有模式串 he、she、hers、his、shy,则其字典树构建结果如下。
![]()
-
(2.2)计算模块接口部分的性能改进。
各函数时间
![]()
你程序中消耗最大的函数get_pinyins和search_senten。其中get_pinyins为调用的pypinyin库中的函数,汉字转换拼音需要消耗时间,无法优化。对于查找匹配函数search_senten,采取优化方式,ac自动机中采用fail指针进行优化。
调用关系图
![]()
-
(2.3)计算模块部分单元测试展示。
单元测试模块
test_words = ["垃圾"]
test_text = "在一个类中,我辣鸡们可拉@#@!#圾以定义多个垃圾方法。如果有土立土及可以把这一组方法名做腊鸡"
model = ac_tree()
model.prepare_words(test_words)
model.search_senten(test_text, 1)
model.writeFile('ans.txt')
结果

单元测试覆盖率

- (2.4)计算模块部分异常处理说明。
最可能出现错误的模块,输入处理,当从命令行输入的路径参数个数不为3时,即发生错误,进行简单处理
if len(sys.argv) != 4:
print("error")
exit(-1)




浙公网安备 33010602011771号