一、基本任务:代码编写+单元测试
小组github 地址
https://github.com/iwannastay/WcPro/tree/stage3
PSP表格
PSP2.1 | PSP阶段 | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
Estimate | 估计任务需要多少时间 | 120 | 100 |
Development | 开发 | 180 | 240 |
Analysis | 需求分析 | 20 | 30 |
Design Spec | 生成设计文档 | 30 | 40 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 | 10 | 10 |
Design | 具体设计 | 30 | 20 |
Coding | 具体编码 | 60 | 60 |
Code Review | 代码复审 | 20 | 20 |
Test | 测试 | 20 | 30 |
Reporting | 报告 | 60 | 100 |
Test Report | 测试报告 | 30 | 100 |
Size Measurement | 计算工作量 | 20 | 60 |
Postmortem | 总结 | 20 | 80 |
合计 | 340 | 540 |
接口设计
我负责的是文件处理框架和main函数,即对所有其他模块进行整合,将接口结合到一起。
设计思路:其实这个模块并不难。主要是要对整个软件的架构了然于胸,对各部分的函数灵活运用。先调用InputAnalysis对文件名进行审查,然后运行mainProcess函数对文件进行处理。在mainProcess函数中调用文件行处理模块的lineProcess函数,和排序模块的rankProcess。最后调用输出处理函数SaveResult对结果进行输出保存。
实现过程:
1:主函数的流程
int main(int argc, char *argv[]) { string str; InputAnalysis(argc, argv, str); WcFile m_File(str.c_str()); //初始化WcFile类 m_File.MainProcess(); //检测,计数,排序 m_File.SaveResult(); //输出结果 return 0; }
2:程序主要进程实行顺序控制
void WcFile::MainProcess() { while (!File_Stream.eof()) { File_Stream.getline(File_Line, Line_Size); int num = File_Stream.gcount(); if (File_Stream.gcount() == Line_Size&&File_Line[Line_Size - 1] != '\n') { cout << "Line: " << Line_Num + 1 << " is too long" << endl; /*Line_Size *= 2; char *New_Space = (char*)malloc(Line_Size * sizeof(char)); memcpy_s(New_Space,)*/ } Line_Num++; LineProcess(); } RankProcess(); }
测试设计
测试主要包括能否对文件名进行识别和对文件内容处理。其中分别是对主函数和mainprocess的测试。
小组贡献分
个人得分0.2。
二、扩展任务:静态测试
1.代码规范
本次代码规范参考了邹欣老师在讲义“现代软件工程讲义 3 代码规范与代码复审”中提到的规范,对于老师的讲解表示十分受用,并不敢有丝毫触犯雷霆之意。对于其所说的代码规范十分赞同。
2.同组分析
我分析了组员17024的代码,该组员是代码方面的高高手,一直是我崇拜的偶像,其本人浸淫C++多年,对于他的代码,观之者赏心悦目。其内容简洁明了,进退有据,思路明晰,书写规范,实在是挑不出毛病。我会努力向该同学学习,更好的提高自己写代码的能力。
3.静态代码检查工具
使用Visual Studio 2015 内置检测工具,可在微软官方网站https://www.visualstudio.com/zh-hans/downloads/下载
小结
该次任务是由小组共同完成,本身任务对我而言是有些困难的,但是在队友的帮助下,我们仍然完成了绝大多数。从中我体会到了团队的力量,在团队的合作共进下才能更好的完成各项任务。