第四周小组作业: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

小结

通过本次测试实验,我个人收获甚丰,不论是对编写代码还是软件测试都有了明显的进步。

 

posted on 2018-04-07 23:36  17027  阅读(155)  评论(1编辑  收藏  举报

导航