结对项目第一阶段博客

结对项目第一阶段博客

一些基本信息

项目 内容
这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 结对项目-第一阶段
我在这个课程的目标是 培养软件开发过程中的团队合作能力,了解软件工程中的开发过程
这个作业在哪个具体方面帮助我实现目标 首次实践结对编程
GitLab 项目地址 https://gitlab.buaaoo.top/2021_alige_homeworks/pair_works/2021_rui_ma-junjie_dong_pair_work
学号后四位 7155 5044

结对编程的感受

本次作业是第一次进行结对编程,资料中经常提到,与两个人独立工作相比,结对编程能编写出质量更高的代码,对于这一点我们深表同意。在结对编程中,两个人可以对项目中的各个方面进行讨论,不管是整体的设计还是某些Java语言中是实现细节,都可以采取两个人的想法中更好的那一个来实现。此外,两个人共同编程能够减少一些小bug的出现,“驾驶员”长时间编码,难免会由于疲劳等原因出现各种错误,这时“领航员”就能够进行一些提醒,减少bug的产生,调试bug的速度也会变快。

总而言之,结对编程会牺牲一定的效率,但是能提升代码质量,降低错误率。我们组的两位同学之前比较熟悉,磨合适应的也比较快,这次作业写的也比较顺利。

设计和实现思路

采用树状结构来实现文件系统的增删改查。编写一个抽象的节点(Node)类来表示树中的节点,由于本次作业中要求的文件系统中包含文件和目录,编写文件(File)类和目录(Directory)类继承节点(Node)类。Node类中有一个指向父目录的指针(根节点的这个指针指向自己),Directory类中新增一个HashMap<String, Node>类型的字典用来存储其子目录和文件。

此外,我们再MyFileSystem类中编写了解析输入路径以及在树中寻找下一个节点的方法,将关于寻找路径的一部分功能解耦,其他方法可以调用这两个方法。在以上基础上,本次作业中简单文件系统不难实现。

结对编程过程记录

由于组内一位同学目前在外校交流期间,无法展开线下结对编程。我们尝试过以下工具进行线上结对编程。

  • 腾讯会议:腾讯会议可以进行语音和屏幕共享,并且网络连接比较稳定,但是并不具有远程操控同伴电脑的功能。

  • TeamViewer:TeamViewer可以进行语音,并且能够远程操控同伴的机器,实现类似于两人交替在同一台电脑上编程的功能。

  • CodeWithMe:CodeWithMe是idea中的一个插件,可以连接到对方的idea同时编辑一个Project中的文件,同时进行语音交流。此外还可以互相看到对方的光标,同时编辑不同的文件。这个插件是这几种工具中我们认为最适合进行远程结对项目的,唯一的缺点是在使用中经常遇到网络不佳的情况。

各个模块的耗时情况

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 400
· Code Review · 代码复审 60 45
· Test · 测试(自我测试,修改代码,提交修改) 120 240
Reporting 报告 30 30
· Test Report · 测试报告 10 10
· Size Measurement · 计算工作量 10 10
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 10
合计 625 830
posted @ 2021-03-24 10:36  °不凉少年  阅读(89)  评论(4编辑  收藏  举报