第四周小组作业:Wordcount优化
本次项目的github地址为:https://github.com/iwannastay/WcPro
PSP表格
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
Planning |
计划 |
15 | 15 |
· Estimate |
· 估计这个任务需要多少时间 |
15 | 15 |
Development |
开发 |
10 | 10 |
· Analysis |
· 需求分析 (包括学习新技术) |
20 | 25 |
· Design Spec |
· 生成设计文档 |
30 | 30 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
10 | 10 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 | 10 |
· Design |
· 具体设计 |
30 | 30 |
· Coding |
· 具体编码 |
100 | 100 |
· Code Review |
· 代码复审 |
45 | 30 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 | 40 |
Reporting |
报告 |
30 | 30 |
· Test Report |
· 测试报告 |
75 | 80 |
· Size Measurement |
· 计算工作量 |
15 | 10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
10 | 10 |
合计 |
475 | 445 |
模块编写和测试
本次我负责的是输入控制,导入文件,保存结果,其过程即为对输入进行有效性判断,识别并对无效输入进行处理,获取有效数据,将文件导入进行读取,最后将单词词频排好序的结果输入到指定result.txt文件中。接下来对该模块设计和测试进行说明。
模块设计
首先对输入参数进行获取识别,判断其是否有效,并以此来获取文件路径。
//输入控制 9 void InputAnalysis(int argc, char *argv[], string& _str) 10 { 11 if (argc == 1) //非法输入 12 { 13 cout << "Invalid order:" << endl; 14 system("exit"); 15 } 16 else if (argc == 2 && !strcmp(argv[1], "-x")) //图形界面 17 WinExec("WcProUI.exe", SW_NORMAL); 18 else { //获取文件路径 19 string str; 20 for (int u = 1; u < argc; u++) 21 { 22 str += argv[u]; 23 str += " "; 24 } 25 _str = str; 26 } 27 }
通过LoadFile()函数来将文件进行导入。
//导入文件 29 bool WcFile::LoadFile(const char *_filename) 30 { 31 File_Name = _filename; 32 File_Stream.open(File_Name); 33 if (!File_Stream) 34 { 35 cout << "Fail to open the source file:" << File_Name << endl; 36 system("exit"); 37 } 38 return true; 39 }
最终将排序列表中前一百的数值存放入指定的结果文件中。
//保存结果 42 void WcFile::SaveResult() 43 { 44 File_Stream.close(); 45 File_Stream.open(ResultFile_Name); 46 if (!File_Stream) 47 { 48 cout << "Fail to open the result file." << endl; 49 system("exit"); 50 } 51 52 for (int i = 0; i < 100 && i < Rank_List.size(); i++) 53 File_Stream << Rank_List[i].first << "\t" << Rank_List[i].second << endl; 54 File_Stream.close(); 55 }
测试用例设计
针对该模块进行测试用例设计,主要存在两个功能:输入控制和保存结果。测试用例如下:
扩展任务
1. 代码规范说明
代码规范参考了Google的C++风格指南。其中对于类定义,变量名,注释等等部分的说明很详细,主要参考的也是相应的部分。我写代码习惯与其基本相同。
2. 同组代码评审
我分析了组员17024的代码,注释清晰,逻辑易读,代码质量很高,运行结果正确,程序稳定性很好,较好地遵守了设计规范,十分值得我去学习。
3. 静态代码扫描
我所使用得是Eclipse开发环境的代码静态检查机制。
小组评价得分
0.2
小结
通过本次测试实验,我个人收获甚丰,不论是对编写代码还是软件测试都有了明显的进步。