结对编程第二阶段小结
项目 | 内容 |
---|---|
教学班级 | 2021软件工程(罗杰 任建) |
作业要求 | 模拟Linux完成文件管理系统 |
Gitlab项目地址 | gitlab |
结对同学后四位学号 | 3665,5013 |
一、结对编程感受
在此次编程结对中,我完成”目录与文件管理“的全部部分以及相应单元测试,郭屾同学完成”用户和用户组管理“部分以及相应单元测试,然后交由我来统一整合和debug,并且完成了两个系统交互部分的修改。
这次的难度较上次还是有一个很大的跨越的,我们应该事先进行详细的讨论之后再开始写,但是由于两个人的时间与能力差异较大,经过商量,由我完成的文件部分,郭屾完成较为简单的用户部分。这位同学同时还要学习oo和os,确实也是没时间,所以这次最难的目录文件管理部分都是我自己一个人独立完成,这就导致我个人的结对编程体验极差,像第一次简单的还好,这次指导书写的十分难受,并且要考虑的情况太多,所以我赶在ddl之前才完成了所有的工作,希望下次结对编程,我们能够事先进行充分的讨论以及分工,一起写代码,编写和复审工作同时进行。
下面是结对照片:
二、设计思路
1、文件系统
由于本次涉及了目录与文件的复制与移动,并且还增加了较难处理的链接,所以前面实现的一些文件系统的功能此次做了修改。
- 文件大小:之前每次修改文件都会直接把大小更新到文件的父目录,本次作业中将其变成了需要使用的时候再递归向下计算。
- 绝对路径:本次涉及了目录与文件的复制与移动,所以原本的每个文件和目录都直接存储绝对路径的方法需要修改,每次移动过后都要递归更新绝对路径。
- 删除:由于此次涉及的硬链接,需要判断硬链接链接的文件是否被删除,所以上次设计的文件目录的删除方式失效(直接移除指针),这次如果删除一个文件和目录,就将其的父目录链接置为空,所以就可以通过不断向上寻找父目录的方式来判断一个文件是否被删除,并且维护一个删除标记,方便下次查询。
本次增加了链接文件,在设计中,让硬链接类和软连接类都继承了文件类。在软连接类中,增加了path属性,保存了软连接指向的文件的绝对路径,需要重定向的时候就重新顺着路径寻找(封装了相关方法)。在硬链接类中,直接保存一个文件指针,指向对应的文件。
2、用户系统
本次涉及到了用户的相关操作。我设计了两个类,分别是用户类和用户组类,用户类保存了用户名,以及主组,以及切换的时候所在的目录。用户组类就用一个map来存储其所有的用户,并且在用户系统类里面保存了两个map分别用于储存所有的用户和用户组,然后要实现的方法就是一些很简单的操作了。
3、交互
本次采取了最简单的方法,将所有需要交互的数据全都搞成静态类,这样就可以方便的进行交互。
三、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 1730 | 2030 |
· Analysis | · 需求分析 (包括学习新技术) | 40 | 30 |
· Design Spec | · 生成设计文档 | 40 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 180 | 120 |
· Coding | · 具体编码 | 1200 | 1200 |
· Code Review | · 代码复审 | 240 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 600 | 1200 |
Reporting | 报告 | 45 | 50 |
· Test Report | · 测试报告 | 10 | 10 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 2410 | 2910 |