结对项目第二阶段博客
结对项目第二阶段博客
一些基本信息
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 结对项目-第二阶段 |
我在这个课程的目标是 | 培养软件开发过程中的团队合作能力,了解软件工程中的开发过程 |
这个作业在哪个具体方面帮助我实现目标 | 加深对结对编程的实践了解 |
GitLab 项目地址 | https://gitlab.buaaoo.top/2021_alige_homeworks/pair_works/2021_rui_ma-junjie_dong_pair_work |
学号后四位 | 7155 5044 |
结对编程的不同感受
本次作业是第二次进行结对编程,与上一次相比我们对结对编程更加熟悉,配合起来更熟练,对于驾驶员和领航员的角色也有了更深的理解。但是客观上来讲这次作业的难度比上一次有了很大的提升,尤其是软链接硬链接部分,导致我们重构了一些之前的代码,最终花了更多时间来完成这次作业。
结对编程过程记录
由于组内一位同学目前在外校交流期间,无法展开线下结对编程。我们继续在线上进行结对编程,这一次我们主要使用了上一次的CodeWithMe和腾讯会议进行结对编程。
-
腾讯会议:腾讯会议可以进行语音和屏幕共享,并且网络连接比较稳定,但是并不具有远程操控同伴电脑的功能。
-
CodeWithMe:CodeWithMe是idea中的一个插件,可以连接到对方的idea同时编辑一个Project中的文件,同时进行语音交流。此外还可以互相看到对方的光标,同时编辑不同的文件。这个插件是这几种工具中我们认为最适合进行远程结对项目的,唯一的缺点是在使用中经常遇到网络不佳的情况。
设计和实现思路
本次作业与上次比较,主要增加了文件系统的一部分指令,用户系统,以及两个系统之间的交互。
- 新增的文件系统指令
- 软链接:对于软链接,新建一个SoftLink类继承File类,内部存储目标文件的绝对路径。
- 硬连接:对于硬链接,新建一个HardLink类继承File类,内部存储目标文件对象。
- 增加软连接和硬连接之后,其他所有指令在寻找路径的过程中都需要考虑链接的存在,于是我们在这次作业中重构了关于寻找路径的逻辑,我们编写了两个函数,第一个函数负责寻找传入路径的父亲节点,第二个函数负责由父亲节点找到传入路径对应的节点。第一个函数中,对于软链接必须进行重定位,第二个函数中,是否对软/硬链接进行重定位靠传入的参数决定。其他函数中调用这两个函数进行路径查找。
- 在以上的基础上,剩余的readLink,mv,cp指令的实现不是很难,主要是内部的一些逻辑。
- 用户系统
- 本次作业的用户系统中,只要一个用户存在,就一定存在同名的用户组,因此我们的用户和用户组中并没有特别设置主组相关的属性。
- 对于用户,编写User类,其中存储一个<String, Group>类型的字典,表示这个用户所在的组
- 对于用户组,编写Group类,其中存储一个<String, User>类型的字典,表示这个用户组中的成员
- MyUserSystem类中,包含<String, User>,和<String, Group>类型各一个字典,存储用户和组。
- 在以上的设计之下,用户系统不难实现。
- 两个系统之间的交互
- 本次作业需要两个系统之间进行一定的交互,如切换用户时,要保存文件系统中的工作目录绝对路径,退出用户时,要还原工作路径,以及创建文件时需要获取用户组中的当前用户名。
- 对此实现一个FullSystem类,其中只有两个静态变量,存储MyFileSystem和MyUserSystem对象,在MyFileSystem和MyUserSystem的构造方法中,对这两个静态变量进行赋值,即可完成两个系统间的交互。
各个模块的耗时情况
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 585 | 790 |
· Analysis | · 需求分析 (包括学习新技术) | 10 | 10 |
· Design Spec | · 生成设计文档 | 10 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 15 | 15 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 60 | 60 |
· Coding | · 具体编码 | 300 | 900 |
· Code Review | · 代码复审 | 60 | 120 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 300 |
Reporting | 报告 | 30 | 30 |
· Test Report | · 测试报告 | 10 | 10 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
合计 | 625 | 1450 |