​Github​

一、PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

· Estimate

· 估计这个任务需要多少时间

40

50

Development

开发

· Analysis

· 需求分析 (包括学习新技术)

180

240

· Design Spec

· 生成设计文档

60

60

· Design Review

· 设计复审

30

45

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

30

45

· Design

· 具体设计

60

90

· Coding

· 具体编码

180

210

· Code Review

· 代码复审

· Test

· 测试(自我测试,修改代码,提交修改)

60

90

Reporting

报告

· Test Repor

· 测试报告

30

5

· Size Measurement

· 计算工作量

30

15

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

30

15

· 合计

730

865

二、计算模块接口

(2.1)计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(18')

一个检测文件类,五个函数和一个主函数。

敏感词检测的过滤算法大部分用的都是dfa,ac自动树之类的,参考了CSDN上大佬们的博客,采用了dfa算法,图解如下:

第一次个人编程作业_性能分析


下表中第一栏是输入,第一列是状态。其他部分就是特定状态下,遇到特定输入,会触发什么状态。当状态为in_number的时代表可计数,为signed的时代表是符号,为end的时代表结束。

第一次个人编程作业_单元测试_02

(2.2)计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2019、JProfiler或者Jetbrains系列IDE自带的Profiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(12')

第一次个人编程作业_性能分析_03


第一次个人编程作业_敏感词_04

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



第一次个人编程作业_性能分析_05

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

如果没找到需要检测的文本文件则打开失败

第一次个人编程作业_单元测试_06

如果没招到存放敏感词的文件名则打开失败

第一次个人编程作业_异常处理_07

三、心得

(3.1)在完成本次作业过程的心得体会(3')

我感觉这第一次编程作业对我来说可以说是非常非常难,感觉好多好多东西都是全新的,都得靠自己学,很多算法也需要了解,还要学习一些更强大更方便的语言来帮助自己完成项目,真切的认识到自己是真的菜