一、结对过程
在文章开头给出你们Fork仓库的Github项目地址。(5')
Github项目地址 | |
结对伙伴的作业地址 | |
我的博客地址 | |
作业链接 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2882 |
1. PSP表格
PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 30 | 20 |
· Estimate | · 估计这个任务需要多少时间 | 60 | 50 |
Development | 开发 | 600 | 550 |
· Analysis | · 需求分析 (包括学习新技术) | 60 | 240 |
· Design Spec | · 生成设计文档 | 40 | 20 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 40 | 60 |
· Coding | · 具体编码 | 180 | 260 |
· Code Review | · 代码复审 | 25 | 20 |
· Test | · 测试(自我测试,修改代码,提交修改) | 40 | 50 |
Reporting | 报告 | 70 | 60 |
· Test Report | · 测试报告 | 40 | 30 |
· Size Measurement | · 计算工作量 | 30 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 | 1295 | 1470 |
-
-
-
-
- 描述结对的过程,提供非摆拍的两人在讨论的结对照片(一起工作编码时的照片)。
-
-
-
解题思路:
一 .基本功能
此次题目基本功能分为三步。一是统计文件的字符且不考虑汉字,二是统计文件的单词总数并且记录器出现次数并输出,三是有效行数。
我将每个功能用一个方法去实现
下图时我创建的类和方法
- CountLine类用于统计行数
- CountChar类用于统计字符总数
- CountWord用于储存单词以及单词词频
- CountLine() 用于统计行数
- CountChar() 用于统计字符总数
- CountWord() 用于统计单词总数
程序流程图
在统计单词数目时我选择了dictionary字典类,以单词为键,频率为值储存
将文档里的单词输入到字典类里,并计数。
输出字符大于3的单词与其频率
统计行数
统计单词数
通过if语句来筛选字母数多于3的单词并计数。
统计字符数
接口封装
将方法封装成dll
代码互审过程:
由于一些功能没有实现,所以我们互审主要基于代码的格式和已实现功能的纠错。
- 命名变量、函数时不要随意取名,最好有相关意思,采用大驼峰命名法。避免过多地描述和可要可不要的修饰词。
- 尽量使代码简明易读,无二义性。
- 在复杂的表达式中,用括号清楚地表示逻辑优先级。
- 断行,每个“{” “}”独占一行,一一对应。
- 给出关键的注释。
建立单元测试:
建立单元测试需重新引用之前的接口
测试结果:
效能测试:
结对照片
总结
本次结对项目较难,很多东西也不懂,在网上找了很久,虽然做了很多天,但有些功能最后也没有实现。在和队友商量后也没有解决,只把自己能做的写了出来。在编程过程中,通过代码互审,互相找到了对方代码的不足,并改正。很多之前不知道的东西在此次作业中出现,由于并不了解,所以做的很粗糙。在此次作业中深刻地认识到了自己的差距,会在之后的学习中更加努力,争取以后的作业不会出现此次情况。
此次结对1+1<2,由于自身的原因,且并没有真正领略到结对编程的含义,导致大多数代码是两个人各自完成,最后再来对照纠错,以及并不熟悉别人的想法导致效率的低下,结对编程比较要求两个人的水平相近。