软工第三次作业
1.项目地址:https://github.com/Jupi4ter/WordCount.git
2.合作方式:一个人负责代码一个人负责其他。
我们用的语言是C#,平台式VS2017
照片:
3.PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
120 |
95 |
· Estimate |
· 估计这个任务需要多少时间 |
20 |
17 |
Development |
开发 |
60 |
52 |
· Analysis |
· 需求分析 (包括学习新技术) |
30 |
36 |
· Design Spec |
· 生成设计文档 |
20 |
18 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
15 |
15 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
15 |
15 |
· Design |
· 具体设计 |
60 |
78 |
· Coding |
· 具体编码 |
70 |
66 |
· Code Review |
· 代码复审 |
30 |
26 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
30 |
22 |
Reporting |
报告 |
30 |
35 |
· Test Report |
· 测试报告 |
20 |
15 |
· Size Measurement |
· 计算工作量 |
15 |
17 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
23 |
|
合计 |
565 |
530 |
我们主要是一个人负责代码,一个人负责其他的项目。
4.解题思路
代码方面,由于每一步都有明确的指示,所以完成起来还是比较简单,但由于中英文输入法,导致我们浪费了很多时间去解决符号等输入问题
还有就是代码第三部增加新功能遇到了点麻烦,以前类似的代码写的比较少。
其他比如上传到仓库还是比较简单,毕竟有第二次作业做基础。
还有过的问题是文件的输入
- FINException:检测用户输入文件不合法时,抛出异常,main中捕获直接退出。
5.计算模块接口的设计与实现过程。
在设计之初,考虑到为降低代码单元的耦合度,我们将需求简单拆分为3个类,分别是输入,输出,和单词处理。使各个代码单元之间的耦合度尽量最低,不需要与其他代码纠缠不清。将类封装,数据以接口的形式传入。
在最初分析需求时,我们将代码分成4个类,分别是负责输入数据的input,输出需要数据的output,对需求处理的wordHandler,和统合的main。
input类含函数:FIleInput(); 用于提取文件中的单词信息。
output类含函数:_output(); 用于输出要求的计算结果数据。
wordHandler类含函数:get_chain_word(); 用于寻找最多单词数的最长链。
get_chain_char(); 用于寻找最多字母数的最长链。
这三个类每个类都是很独立的代码单元,三者间并没有什么关系,使得程序的耦合度很低。
UML图:
关键代码:
完整代码请点击:https://paste.ubuntu.com/p/4CwYCV4wvJ/
6:代码复审过程
主要是检查代码规范和正确性,我们采取的方式是,张鑫负责代码的规范检查,我负责正确率的检验,最后互相验证。
参考文献,C#代码规划
https://jingyan.baidu.com/article/ed15cb1b0e3c0a1be36981e6.html
7.性能改进
8.单元测试展示
主要是为了验证代码正确率和覆盖率,很重要的一步。
结对作业的优缺点
-
- 能随时复审,能够及时发现逻辑错误
- 发现问题,互相交流拓宽思路
- 双方适时的交换角色能改变角度审视自己的逻辑和代码细节
- 缺点
- 在发现bug交流时容易打断个人的思路