天天看点

软工结对编程_热身

软工结对编程_热身

教学班级 2021春季软件工程(罗杰 任健)
GitLab相关地址 2021_pair_work
两位同学的学号后四位 3480@dxh,4216@js

结对编程初体验

记得之前老师在上课时讲到结对编程时我对此不以为然,觉得如果两人思路比较相似时结对起来还是比较迅速的,但等到真正完成时却发现事情并没有想象中的那么简单。

在需求分析部分我与队友是共同分析题意的,过程也比较顺利,觉得两人的思路是基本一致的,在具体开发时,我们采取的也是课堂上讲授的 一人写,一人看(驾驶员与领航员) 的结对模式。在开发的开始,由于我们的代码习惯和编程风格都不太统一,所以在沟通交流过程中花费了不少时间。后来经过一番探索,我们决定轮流进行编码,不断进行角色互换以在最短时间内适应对方的风格,也能最大程度上锻炼个人的能力。

就具体实践来说,我们分别负责了文件模块和目录模块的类以及方法的编写,一个人在写的同时另一个人在旁边及时进行检查和纠错,有任何不明白的地方也会及时发问、及时交流。虽然这样的编程方式比个人独自敲代码花费的时间肯定会长一些,但在一定程度上保证了代码的质量以及团队的合作效率。在测试程序时,我们又分别测试了对方的模块,采取的同样也是结对方式。通过前期的磨合,在测试时两人的效率明显比编码时要提高许多,也能够更快地达成共识。

就整体来说,结对编程在前期的确比较痛苦,进展也很缓慢,但是后期熟练了之后我们都觉得很有收获,至少能够更快速地定位bug和发现问题,并且在此过程中也从对方身上都学习到了很多知识。

软工结对编程_热身

设计实现思路

在本次文件管理系统中,我们创建了

type

接口并使

file

类和

Contents

类实现该接口从而让后续判断时文件还是目录更加方便。

对于文件类,我们设置了名称、父目录、内容、绝对路径和相关时间等属性;对于目录类,我们设置了名称、父目录、大小、绝对路径、子目录及文件和相关标识符等属性。在整个文件系统中设置当前目录和根目录的属性。对于任何指令都首先使用

pathparser

的方法进行路径解析,再根据指令的具体操作实现文件、目录的增删改查以及抛出特定异常等操作即可。举例如下:

  • 对于目录的递归建立过程,首先递归判断所有路径的名称是否合法,其次再递归向上建立所有不存在的路径,对于

    .

    ..

    的处理要注意细节
  • 对于文件的删除过程,要首先删除该文件父目录中对应的下属文件,再依次修改父目录的大小和其他相关属性等。
    软工结对编程_热身

PSP

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 15
· Estimate · 估计这个任务需要多少时间
Development 开发 740 830
· Analysis · 需求分析 (包括学习新技术) 30 60
· Design Spec · 生成设计文档
· Design Review · 设计复审 (和同事审核设计文档) 20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范)
· Design · 具体设计 90
· Coding · 具体编码 360 480
· Code Review · 代码复审
· Test · 测试(自我测试,修改代码,提交修改) 180
Reporting 报告 70 95
· Test Report · 测试报告
· Size Measurement · 计算工作量
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划
合计 820 940