第一次个人编程作业
一、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 120 |
· Estimate | · 估计这个任务需要多少时间 | 600 | 800 |
Development | 开发 | 500 | 700 |
· Analysis | · 需求分析 (包括学习新技术) | 10 | 20 |
· Design Spec | · 生成设计文档 | 10 | 20 |
· Design Review | · 设计复审 | 5 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
· Design | · 具体设计 | 30 | 60 |
· Coding | · 具体编码 | 300 | 600 |
· Code Review | · 代码复审 | 50 | 50 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 50 |
Reporting | 报告 | 90 | 60 |
· Test Repor | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 10 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 30 |
· 合计 | 895 | 1670 |
二、计算模块接口
-
2.1计算模块接口的设计与实现过程
-
2.1.1概述
看到了这个作业,就开始百度搜索各种资料,基本上查阅到的都是ac自动机河dfa算法。但是百度上的这些算法无法直接照搬实现本次作业的要求,于是就开始头脑风暴,并且和同学深度交流。于是确立了解决问题的方法,即拿到文本后,首先删除特殊字符号和空格,然后将利用拼音包和偏旁部首包,将中文转化成拼音、首字母和拆分成偏旁部首,并把这些拼音,首字母和偏旁部首映射成数字码,建立字典树。
-
-
2.1.2项目设计结构
运用两个包,一个拼音包和一个偏旁部首包。每个包对应一个函数,将拆分成的拼音和偏旁部首及首字母映射成单一的数字码。读入敏感词汇表,建立敏感词字典树。读入文本,与敏感词字典树进行匹配,最后输出结果。 -
2.1.3思路设计
拿到文本后,首先删除特殊字符号和空格,然后将利用拼音包和偏旁部首包,将中文转化成拼音、首字母和拆分成偏旁部首,并把这些拼音,首字母和偏旁部首映射成数字码,建立字典树。以图本为例子
-
2.1.4关键算法DFA
2.1.5单元测试模块
- 使用的是cprofile测试工具,但因为代码没完全实现,所以测试结果不理想
三、心得
- 这次作业对我而言难度比较大,刚拿到这份作业时候抵触情绪很高涨,以至于前期浪费了很多时间,后面时间匆忙,无法保证作业的完整度,算法只实现了一半而没有全部实现。但其实如果前期有做准备和提前打算,这次作业尽力是可以做出来的。因此给我的教训即是凡事不要有抵触情绪,其实尽力自己也是可以完成的。这次作业学到的东西有很多,如github的搜索,dfa算法和python语法及运用,也了解到以前从未知道的单元测试,查看覆盖率等等。
- 很久没打过这么多很这么难的代码,也确实够锻炼人的耐心和毅力。debug和思考代码,建立字典树花费了我很多时间,锻炼了代码能力。虽然过程真的很痛苦,但也算是尽力了打出了一些符合本次作业要求的算法。下次作业再加油吧。