第二次结对编程总结
| 项目 | 内容 |
|---|---|
| 作业所属课程 | 2021春季计算机学院软件工程(罗杰 任健) |
| 教学班级 | 周五上午 |
| 项目地址 | Gitlab地址 |
| 学号后四位 | 张书恺:3146 李巳辰:3464 |
结对编程感受
第二阶段的结对编程作业相比于第一阶段难度有很大的提升,这对我们的结对编程也很大的挑战。
-
第二阶段我们计划先写根据指导书单元测试,再进行接口的实现。由于发现userSystem和fileSystem的交互很少,所以我们先进行fileSystem单元测试的修改。先根据指导书新建fileSystem的新增方法(如ln、mv、cp等)的单元测试,再在第一阶段的单元测试的基础上为原有的方法(如cd、touch等)新增针对软硬链接的单元测试,不过这两次对单元测试的修改都默认当前用户为root。不过为了提高效率,单元测试的构造过程并非有两双眼睛盯着,有些只需要复制粘贴加一丢丢改动的工作就交给一个人来完成了,另一个人改为构建userSystem的单元测试。
虽然最后事实证明这样的单元测试仍存在一些笔误。 -
单元测试构建完后,我们根据issue#2上的思路,在userSystem和fileSystem的上层新建了SystemSwitch类,采用单例模式。经过讨论,我们发现SystemSwitch类只需要有很少的用于信息传递的接口,于是我们决定先对fileSystem的接口实现的思路进行讨论。在有了一个大体的实现思路后,我们进行了分工,一个人着手对fileSystem进行修改,另一个人实现userSystem的相关接口。由于userSystem本身较为简单,再加上构建单元测试后对需求十分熟悉,所以只用了约两个小时就完成了。之后的工作就是两个人边修改fileSystem边进行单元测试,然后debug,并完善单元测试的覆盖率。
顺便对单元测试中的笔误和与指导书要求不符的地方进行修改,因为每一个issue的出现都可能导致对指导书的新的理解。


实际上,由于代码实现时有太多的细节要注意,我们经常因对指导书理解有偏差而重新修改代码。这个过程不仅降低了效率,还在消磨我们的意志。虽然没有明面的责怪,但心中的不满早已暗流涌动,不过我们还是共同努力坚持了下来。即使最后结果可能并不理想,但结对编程的过程仍是一笔宝贵的财富。
项目程序的设计与实现思路
我们将本次项目主要划分为以下四个部分:
- MyFileSystem:用递归方法寻找路径,再在每个方法中调用递归方法,根据返回结果进行讨论。由于不同的指令的需求不同,我们实现了多个递归方法,如dirDiGui、makeDirDiGui等。
- MyUserSystem:分别在User和Group中用Map存储对对方的依赖关系,在MyUserSystem中也用Map存储当前User、所有User和Group,根据指令需求进行相关的判断。
- SystemSwitch:采用单例模式,MyFileSystem和MyUserSystem在创建时自动向SystemSwitch添加自己的引用,然后SystemSwitch实现用于信息交换的接口。
- 单元测试:使用Junit对MyFileSystem、MyUserSystem和SystemSwitch中各个指令进行全覆盖单元测试。
PSP表格记录各个模块的开发上所需的时间和实际花费时间。
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 90 | 120 |
| Estimate | 估计这个任务需要多少时间 | 15 | 20 |
| Development | 开发 | 60 | 30 |
| Analysis | 需求分析 (包括学习新技术) | 0 | 0 |
| Design Spec | 生成设计文档 | 120 | 75 |
| Design Review | 设计复审 (和同事审核设计文档) | 60 | 80 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
| Design | 具体设计 | 120 | 180 |
| Coding | 具体编码 | 420 | 720 |
| Code Review | 代码复审 | 60 | 120 |
| Test | 测试(自我测试,修改代码,提交修改) | 120 | 480 |
| Reporting | 报告 | 45 | 60 |
| Test Report | 测试报告 | 30 | 30 |
| Size Measurement | 计算工作量 | 2 | 2 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 30 |
| 合计 | 1202 | 1967 |

浙公网安备 33010602011771号