一、PSP表格
SP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
· Estimate | · 估计这个任务需要多少时间 | 60 | 60 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 30 | 30 |
· Design Spec | · 生成设计文档 | 60 | 70 |
· Design Review | · 设计复审 | 60 | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 30 |
· Design | · 具体设计 | 60 | 130 |
· Coding | · 具体编码 | 600 | 720 |
· Code Review | · 代码复审 | 60 | 120 |
· Test | · 测试(自我测试,修改代码,提交修改) | 300 | 300 |
Reporting | 报告 | ||
· Test Repor | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | ||
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
· 合计 | 1010 | 1600 |
二、计算机模块接口
(3.1)计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处
(3.1.1)模块划分
一个类、7个函数
只定义了一个类(应该分开的、没时间了,一开始的设计没做好)
- directly() 将直接匹配即无变形的单词找到并删除(删除的原因是如果在这里不删除会与下面的函数找到的敏感词重复)
- instr()寻找到有插入字符的敏感词
- serach_sensitive_word()寻找敏感词,这个函数里调用了几乎其它所有的函数
- write_to_ans()将敏感词写到答案列表里
- start_to_find()将敏感词读入到一个列表中
- English()在serach_sensitive_word()函数中有判断单词列表中需要匹配的单词是中文还是英文 如果是英文,则到此函数 ,此函数具体分析了英文单词大小写变形的问题
(3.1.2)算法的关键
主要是通过正则表达式实现,对于给定的单词列表里,如果这个字符串是个大于2的长字符串,就检测第一个字符和最后一个字符,变形字符的查询也是通过第一个字符和最后一个字符进行
(3.1.3)独到之处
利用这正则表达式通过对长字符串的第一个和最后一字符查找来解决问题
(3.2)计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2019、JProfiler或者Jetbrains系列IDE自带的Profiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(12')
(3.2.1)计算性能改进
一开始暴力使用了大量的循环,在后面将一些不必要的循环删除。
(3.2.3)性能分析图
图中所显示的在
(3.3)计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。
(3.3.1)单元测试展示
测试了英文部分的函数此函数部分主要是大小写
(3.4)计算模块部分异常处理说明
- 打开文件不存在
def tryIO(path):
try:
f = open(path, 'r')
except IOError:
print("没有找到文件")
exit(0)
else:
f.close()
- 参数异常
if len(argv) != 3:
print('参数异常')
exit(0)
三、心得
(4.1)在完成本次作业过程的心得体会
从一开始的毫无头绪到有了一点点思路,一开始的设计没做好,采用了正则表达式的方式展开。写到后面发现这个思路不好处理,又不想放弃,有一些词的特殊情况无法处理。开始的设计很重要,写到一半发现思路不对很痛苦。这次作业认识到了python的强大,了解了一些库的使用,更加熟悉了对文件的操作。这次的作业收获很多,过程中学到了很多新知识