结对编程第一周总结
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 结对项目第一阶段要求 |
项目地址 | 结对作业仓库 |
小组成员1 | 3676@力理利丽黎 |
小组成员2 | 3821@cyy369 |
结对编程及感受
3676
敏捷开发,结对编程果然名不虚传。一开始阅读教材时,我曾天真的认为书上对于“结对编程”的描述过于夸张。而真正做起来,这项工作丝毫不给我们喘息的机会。团队从在一起读文档到最终完成自动化测试,一共花费了将近8+7=15个小时。
在这两天的长时间编程过程中,我的真实感受就是真的很累!即使我们像书上所述,中途会有短暂的休息,但是中途不间断地思考才是让我们心力疲惫的主要原因。
总的来说,这段时间大额度的付出也有大额度的回报。即使我们在总的设计思路上保持一致,我在我的队友身上也看到了很多:测试覆盖全面;项目结构清晰等等,这些我自己都不太完备的素质。往往他在写代码时的一个细节就能让我记忆犹新,所以我觉得结对编程让我有了很大的收获。
3821
结对编程,第一次两个人一台电脑来尝试编程开发,其实感觉还行。我们从开始需求分析一直到程序编码、程序测试等阶段都是保持线下面对面进行的,所以此次结对编程的最大的体会就是交流和沟通的成本大幅度降低。不需要去花费额外的时间来相互理解和保持思路的一致性,因为我们都面对着相同的文档,相同的代码,同步进行着思考,而且即使存在问题,另一方也能迅速的给予解答,方便高效的保持开发进度的持续推进。
结对开发的另一大感受就是互补性。无论是在需求分析、代码编写还是在单元测试部分,一件事物两个大脑的思考,总能够及时提出对方未考虑完全的点,以及编写代码时的小错误等。使得错误能够被及时纠正,覆盖性能够得到一定的增长,即使不能保证覆盖所有情况,但是相比于个人思考的局限性,也好了很多。同时也感谢队友在各个阶段的解释、指正和补充,他能够帮我理解需求部分一些细节(语文太差.jpg),以及提出很多细节上的点,包括编码和测试部分,让我学习到了很多。
其次是即使是结对编程也不能一次性开发过长时间,即使有两个脑子在思考,但是当其都处于疲惫状态时,效果也会很差出现不必要的bug(第一天结对编程最后时刻所写代码错误频出现身说法.jpg)。
设计与实现思路
总体思路
我们的设计思路其实非常简单。我们实现的文件系统的主要元素就只有两个:文件和目录。其中目录之间有包含关系(上下层),文件也会存在目录中。所以我们创建了两个类:MyFile
类和MyPath
类分别表示文件类和目录类。然后对于各个细节的要求,我们就在各个类中完成相应的必需功能并提供给顶层的MyFileSystem
类,用来集成实现最终的功能。
MyFile类
文件类其实很简单,它多数情况下只用关心它自己,即内容,创建、修改时间,大小等属性。它与外界交流(被找到)的唯一途径就是自己的名字+所在目录。根据这个思路去设计文件类的属性和方法就非常的清楚了。
MyPath类
目录类相对于文件类稍复杂一些。首先我们要考虑目录的基本信息:名字,创建、修改时间,大小等等。其次我们需要考虑目录与目录之间的包含与被包含关系。我们发现,目录只能有一个父目录,可以有多个子目录,并且还能存很多文件。
根据上述思路,目录类的属性也就设计好了。那么我们只需要实现对这些属性的“增删改查”的方法就算完成了。
MyCheckPath类
这个类其实是我们在编写Mypath
类时新建的。我们发现如果将检查路径这一功能放在MyPath
类中实现,那么文件类势必也需要一个相同的检查路径的方法。所以我们将检查路径是否合法(长度,命名等)这一步骤单独用MyCheckPath
实现,这样也降低了代码的耦合度。
PSP估计表
PSP2.1 | Personal Software Process Stages | 预计耗时 | 实际耗时 |
---|---|---|---|
Planning | 计划 | 20min(tot) | 10min(tot) |
· Estimate | · 估计任务需要多长时间 | 20min | 10min |
Development | 开发 | 895min(tot) | 975min(tot) |
· Analysis | · 需求分析 | 90min | 120min |
· Design Spec | · 生成设计文档 | 30min | 30min |
· Design Review | · 设计复审 | 10min | 10min |
· Coding Standard | · 代码规范 | 5min | 5min |
· Design | · 具体设计 | 30min | 20min |
· Coding | · 具体编码 | 400min | 350min |
· Code Review | · 代码复审 | 30min | 60min |
· Test | · 测试(自我测试,修改,提交) | 200min | 380min |
Reporting | 报告 | 135min(tot) | 110min(tot) |
· Test Report | · 测试报告 | 100min | 60min |
· Size Measurement | · 计算工作量 | 20min | 30min |
· Postmortem & Process Improvement Plan | · 事后总结,提出改进计划 | 15min | 20min |
合计 | 950min | 1095min |