软件工程结对项目-WordCount

github地址: https://github.com/1320170119/WORDCOUNT

结对项目小组成员:1320170119刘昊昕 1120161898汪长江

1.github地址:https://github.com/1320170119/WORDCOUNT

2.预估PSP

PSP2.1

Personal Software Process Stages

预计耗时(分钟)

实际耗时(分钟)

Planning

计划

20

 

· Estimate

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

10

 

Development

开发

30

 

· Analysis

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

120

 

· Design Spec

·生成设计文档

20

 

·Design Review

·设计复审(和同事审核设计文档)

20

 

· Coding Standard

·代码规范

20

 

· Design

·具体设计

30

 

· Coding

·具体编码

120

 

· Code Review

·代码复审

60

 

· Test

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

60

 

Reporting

报告

60

 

· Test Report

·测试报告

30

 

· Size Measurement

·计算工作量

20

 

· Postmortem & Process Improvement Plan

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

30

 

 

合计

590

 

3.需求分析

格式:wc.exe [parameter][filename]

[parameter]中,用户通过输入参数与程序交互,需实现的功能如下:

a、基本功能

支持 -c 统计文件字符数
支持 -w 统计文件单词数
支持 -l 统计文件总行数


c、拓展功能

支持 -a 返回高级选项(代码行 空行 注释行)
支持 -s 递归处理符合条件的文件


d高级功能(未能实现)

支持 -x 程序以图形界面与用户交互

[filename] 是待处理文件名。

4.算法设计及难点

检查字符,单词,行数就是基于遍历实现没有过大难度

难度在于对文件操作,这方面不是很了解,首先是先写死了文件路径,实现功能以后再解决如何对文件进行操作以及递归处理所有符合文件的方式。这里参看了C++的书籍,已经有封装好的函数支持通配符的查找方式,只要递归查找全部即可,自此问题基本解决。

实现程序后不知道是否准确,通过WPS自带的统计功能对比发现测试用例的统计结果略有出入,进行改进发现WPS认定A.B为一个单词,我觉得认定为两个单词也是有道理,没有改正,同时认定A_B为一个单词

5.核心代码:由于队友不擅长C++并没有拆分为多个类,代码过长冗余过多,在这里不贴代码,代码在github

6.性能改进

花费时间:60分钟。

思路:由于统计三种行数的函数分开写,每个都要遍历以便文件耗费时间。决定不统计空行数,用总行数-代码行数-注释行数,实现了优化

附上性能分析图,由VS生成

 

 

7.实际记录PSP

PSP2.1

Personal Software Process Stages

预计耗时(分钟)

实际耗时(分钟)

 

Planning

计划

20

30

 

· Estimate

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

10

10

 

Development

开发

30

50

 

· Analysis

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

120

200

 

· Design Spec

·生成设计文档

20

20

 

·Design Review

·设计复审(和同事审核设计文档)

20

30

 

· Coding Standard

·代码规范

20

50

 

· Design

·具体设计

30

20

 

· Coding

·具体编码

120

200

 

· Code Review

·代码复审

60

50

 

· Test

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

60

40

 

Reporting

报告

60

30

 

· Test Report

·测试报告

30

40

 

· Size Measurement

·计算工作量

20

10

 

· Postmortem & Process Improvement Plan

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

30

30

 

 

合计

590

810

 

 

 

8.结对项目收获

双人合作完成,要跟对方说好需要函数的传入参数,输出以及实现功能,双人合作还要写好注释保证对方接手时能够快速了解。通过本次结对项目,更加贴近了真实软件开发需要多人合作,对软件合作开发有了实践是这次最大的收获

 

posted @ 2018-05-26 13:06  tom刘  阅读(110)  评论(0)    收藏  举报