2021年软工-第一次结对作业
2021年软工-第一次结对作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 博客要求、第一次作业指导书 |
我在这个课程的目标是 | 了解软件开发工程的具体流程,学习项目实践开发的方法与步骤。 |
这个作业在哪个具体方面帮助我实现目标 | 第一次进行结对编程实践,体会结对编程的便利,并进行相互间的交流,相互学习。 |
结对项目Gitlab地址 | 2021_Qixiang_He-Mingxin_Li_pair_work |
学号后四位 | 6161,3339 |
结对编程的感受与收获
我们这次完成结对编程作业之后的感受与收获可以大体分为以下几个层次:
- 在交流层次上,我们在完成文件系统编写的过程中能够做到及时且有效的交流,并且能够在交流的过程中做到相互学习,相互纠正,不断提升个人的代码水平。
- 在心里层次上,本次编写文件系统作业的过程中,结对这一形式让我们双方体会到互相配合编程的紧迫感,能够进一步促进编写工作的推进。
- 在开发层次上,编写文件系统的过程中,我们不仅共同讨论了程序具体结构的设计问题,也共同检查代码中的问题与漏洞,解决问题的能力相较于单一的个人有所提升,因而也能够提供更好的设计质量和代码质量。
结对编程过程的记录
程序设计
程序的结构如下:
-
程序主体是一个继承自FileSystem的文件系统控制类FileSystemControl。这个控制类中记录了文件系统的主要状态,包括:当前指令序号、根目录以及当前所在目录。
-
对于文件以及目录,分别实现了File类以及Document类,二者有一个共同的接口MetaFile,接口中定义的方法向外界提供文件以及目录所共有的信息。
-
对于异常,实现了一个继承自FilSystemException的异常类InvalidPathException。
程序对一些问题的解决方法如下:
- 对于指令序号,其在每次调用官方接口所定义的函数时更新,同时这也要求这些方法不能互相调用。
- 对于一个文件/目录路径,首先对路径进行拆分,然后对每一个文件/目录名检查其合法性,再通过逐层检索得到目标文件/目录。
- 对于文件/目录的size, modifyTime属性,采用实时更新的办法,即如果一个操作会导致上述两个属性发生变化就立刻对可能被影响到的对象进行更新。比如使用fwrite方法创建了一个新文件并写入数据,则更新父目录的modifyTime以及上层目录的size。
- 对于文件内容的组织形式,使用List<Character>进行储存,在需要输出的时候再整合成String输出。
- 对于目录的组织形式,使用Map<String,MetaFole>来储存目录的子文件/目录。
PSP表格时间统计
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 720 | 600 \(\pm\) 60 |
Development` | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 60 | 60 |
· Design Spec | · 生成设计文档 | 20 | 25 |
· Design Review | · 设计复审 (和同事审核设计文档) | 15 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 0(直接采用OO课程规范) | 0(直接采用OO课程规范) |
· Design | · 具体设计 | 60 | 65 |
· Coding | · 具体编码 | 240 | 300 |
· Code Review | · 代码复审 | 120 | 150 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 150 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 30 | 45 |
· Size Measurement | · 计算工作量 | 30 | 35 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 45 |
合计 | 1415 | 1495 |