Loading

第一次结对编程总结

项目 内容
作业所属课程 2021春季计算机学院软件工程(罗杰 任健)
教学班级 周五上午
项目地址 Gitlab地址
学号后四位 张书恺:3146 李巳辰:3464

 

结对编程感受

经过第一阶段的结对编程,我们初次体会到了结对编程的优势所在 尽管一直在为除去寝室以外,很难找到“有插座+能交流+有座位”的地方而苦恼

  • 首先是需求分析方面,我们小组对指导书的每一字每一句都挨个进行了细致的分析,在力求对每个指令二人理解完全一致的前提下,全方面考虑了可能出现的特殊情况,例如 mkdir -p a/b/..
    touch a/b.txt/ 等等。这相比于之前单人完成OO项目时,在前期做出的考量明显更为全面且事半功倍。我们在遇到对需求有不同理解时会进行重点讨论与记录,避免后期工作出现差错。
  • 再者是代码规范与具体设计方面,这也是与往日单人编程花费时间有明显差距的地方。由于我们二人的代码风格有很大的“代沟”,例如对临时变量的命名(某人偏爱极简风格,某人钟爱详尽露骨风格);因此为了解决这个问题,我们花了较多时间统一书写格式,以及提前定义接口。
  • 最后是结对进行代码编程书写,我们主要采用了一人书写,一人观察,提出异议,并思考是否考虑了全部可能的结对方式。例如我在书写cd指令时,我会先就我对cd指令进行的流程与李同学进行交流,达成共识后开始书写。每进行一个操作(如书写一个if/else条件,进入一次循环,新建一个类时),我都会向李同学解释,“我这一步在做什么,我想要达到什么目的”,在我书写的过程中,李同学负责思考是否所有banch都考虑周全,以及该banch我是否实现正确。每当书写完一个模块后,为了提高效率,我们会交换位置:李同学负责紧接着书写该模块的Junit单元测试,我负责思考下一个模块的逻辑与实现方法。
     
  • 3-23 新北-1共享空间摄
     

     
  • 3-24 寝室摄
     

     
  • Gitlab部分集成记录
     

     
  • 微信交流记录
     

     

总的说我们给第一次结对编程体验打90分,由于我们双方水平相近,不会出现一人carry一人摸鱼的尴尬情况,思考框架时一起思考能更早、更全的考虑到所有情况,书写代码时分工交替工作能劳逸结合,并且一人书写一人检查,极大降低了出现逻辑漏洞的可能,完美达到了“1+1 > 2”的目标。
 
期待下次合作。

 

项目程序的设计与实现思路

我们将本次项目主要划分为以下三个部分:

  • dirPath、filePath解析器:使用正则表达式来判断输入的dirParh与filePath命名格式上是否合法,若不合法则报错;合法则将地址进行切割,分割成多个node,最终形成List数组,返回给fileSystem进行指令实现。
  • 指令实现部分:根据指令类型与返回的List<Node>对rootDirectory下的目录文件树进行建立叶节点,查询,删除等操作,同时判断dirPath与filePath路径格式上是否合法,并持续更新currentDirectory来追踪当前目录。
  • 单元测试部分:使用Junit对fileSystem中各个指令进行全覆盖单元测试,我们最终语句覆盖率达到了99%。
     

PSP表格记录各个模块的开发上所需的时间和实际花费时间。

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
· Estimate · 估计这个任务需要多少时间 15 20
Development 开发
· Analysis · 需求分析 (包括学习新技术) 100+30 150+40
· Design Spec · 生成设计文档 90 60
· Design Review · 设计复审 (和同事审核设计文档) 30 60
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 20
· Design · 具体设计 60 150
· Coding · 具体编码 420 360
· Code Review · 代码复审 60 120
· Test · 测试(自我测试,修改代码,提交修改) 360 400
Reporting 报告
· Test Report · 测试报告 30 30
· Size Measurement · 计算工作量 2 2
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30
合计 1257 1442
posted @ 2021-03-25 15:52  Ethanscript  阅读(107)  评论(3编辑  收藏  举报