第二次结对编程总结
项目 | 内容 |
---|---|
作业所属课程 | 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 |