第4周小组作业:WordCount优化
一、源代码地址
https://github.com/Fish2333333/WordCountPro
二、PSP表格
|
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
|
Planning |
计划 |
20 |
20 |
|
· Estimate |
· 估计这个任务需要多少时间 |
20 |
20 |
|
Development |
开发 |
380 |
420 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
50 |
50 |
|
· Design Spec |
· 生成设计文档 |
50 |
50 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
50 |
50 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
50 |
50 |
|
· Design |
· 具体设计 |
50 |
70 |
|
· Coding |
· 具体编码 |
50 |
70 |
|
· Code Review |
· 代码复审 |
40 |
40 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
40 |
40 |
|
Reporting |
报告 |
100 |
100 |
|
· Test Report |
· 测试报告 |
40 |
40 |
|
· Size Measurement |
· 计算工作量 |
30 |
30 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
30 |
|
|
合计 |
500 |
540 |
三、模块编写
本次作业我主要负责读取文件模块。先对输入进行有效性判断,识别无效输入并进行错误处理,获取有效数据,然后将单词按词频排好序,并将结果输出到log.txt文件中。代码如下:
1 BufferedReader br = new BufferedReader(new FileReader("E:/test.txt"));
2 List<String> lists = new ArrayList<String>(); //存储过滤后单词的列表
3 String readLine = null;
4 while((readLine = br.readLine()) != null){
5 String[] wordsArr1 = readLine.split("[^a-zA-Z]"); //过滤出只含有字母的
6 for (String word : wordsArr1) {
7 if(word.length() != 0){ //去除长度为0的行
8 lists.add(word);
9 }
10 }
11 }
四、测试用例设计
|
Test Case ID 测试用例编号 |
Test Item 测试项(即功能模块或函数) |
Test Criticality重要级别 |
Pre-condition 预置条件 |
Input 输入 |
Result |
Status |
Remark 备注(在此描述使用的测试方法) |
|
WC_Load_01 |
读取文件 |
High |
从文件读取 |
test.txt |
TRUE |
OK |
对判定的测试 |
|
WC_Load_02 |
test.TXT |
TRUE |
OK |
对判定的测试 |
|||
|
WC_Load_03 |
Test.cpp |
FALSE |
OK |
对判定的测试 |
|||
|
WC_Load_04 |
Test.c |
FALSE |
OK |
对判定的测试 |
|||
|
WC_Load_05 |
test_1.txt |
TRUE |
OK |
对判定的测试 |
|||
|
WC_Load_06 |
test.TXt |
TRUE |
OK |
对判定的测试 |
|||
|
WC_Load_07 |
test.java |
FALSE |
OK |
对判定的测试 |
|||
|
WC_Load_08 |
test_2.c |
FALSE |
OK |
对判定的测试 |
|||
|
WC_Load_09 |
修改文件内容后读取 |
空 |
空 |
OK |
边界值,判定 |
||
|
WC_Load_10 |
how are you |
how,are,you |
OK |
对判定的测试 |
|||
|
WC_Load_11 |
I am ok |
I,am,ok |
OK |
对判定的测试 |
|||
|
WC_Load_12 |
hey,you |
hey,you |
OK |
对判定的测试 |
|||
|
WC_Load_13 |
hello |
hello |
OK |
对判定的测试 |
|||
|
WC_Load_14 |
hey you |
hey,you |
OK |
对判定的测试 |
|||
|
WC_Load_15 |
hey\tyou |
hey,you |
OK |
对判定的测试 |
|||
|
WC_Load_16 |
hey,you |
hey,you |
OK |
对判定的测试 |
|||
|
WC_Load_17 |
hey you |
hey,you |
OK |
对判定的测试 |
|||
|
WC_Load_18 |
hey,you,i |
hey,you,i |
OK |
对判定的测试 |
|||
|
WC_Load_19 |
hey,you\ti |
hey,you,i |
OK |
对判定的测试 |
|||
|
WC_Load_20 |
hey you,i |
hey,you,i |
OK |
对判定的测试 |
五、小组评价得分
本次小组成员都完成了各自的任务,在大家的合作之下完成了本次作业。通过这次实验,我对测试用例的编写有了更深的认识,对文件的读取功能也能更加熟悉地运用,小组最终评分0.25
扩展任务
1. 代码规范说明
代码规范参考了Google的C++风格指南。也参考了邹欣老师在讲义“现代软件工程讲义 3 代码规范与代码复审”中提到的规范其中对于类定义,变量名,注释等等部分的说明。
2. 同组代码评审
我分析了其他组员的代码,运行结果无误,程序稳定性良好,在代码的注释和变量名的选择上还能进一步提高,基本符合代码规范。
3. 静态代码扫描
我使用的是myEclipse的代码静态检查机制。
浙公网安备 33010602011771号