结对项目第一阶段总结与对软工课程的拙见
结对项目-第一阶段
项目 | 内容 |
---|---|
教学班级 | 2021春季软件工程(罗杰 任健) (北京航空航天大学 - 计算机学院) |
GitLab项目地址 | 2021_Xiaodong_Lu-Pengyang_Xie_pair_work |
Mokoghost学号后四位 | 3647 |
duckingss学号后四位 | 3054 |
结对编程体验
结对编程使我们受益匪浅,明显让我们的工程能力提升并从对方身上学到很多优秀的工程习惯。在结对编程过程中,我们充分讨论,协同完成顶层设计,讨论架构,在教室的白板上写写画画,整个过程无比丝滑并建立了深♂厚♂的友谊。
代码实现过程中,我们采用了原OO的checkstyle
和Javadoc
,并且使用了驼峰命名法,使得代码整洁易读。你写我查的过程让我们双方都对代码有了充分的熟悉,并且增强了代码的鲁棒性,让我们能够及时地发现手抖产生的低级bug。
同时,作业内容使我们重新回顾了Java
、面向对象和操作系统的知识。体验了一次极限编程:第一天从下午三点连续编程到凌晨四点十五分,第二天继续从下午三点编程至凌晨两点。过程中产生的疑问都发布在指导书的issue
上,与课程中的其他同学和助教产生了五个有意义的讨论:
课程设计建议
虽然在进行结对编程的时候收获良多,但是我仍然觉得这门课程的设计不合时宜:
-
课程设计过重。作为一门必修课(我认为必修课也要因材施教),没有给同学选择的权力,大三下有的同学要考研,有的同学要实习,有的同学要科研,如果一周要花三四天来完成一门两学分的课程,明显不合适,在这里我想问老师们一个问题:北航计算机学院是否只培养软件工程师?如果是,那么让同学全身心投入到这门课中大家不会有意见,但是请在招生简章中明确地写出来,我未来不打算从事这个工作。同时,邹老师书中说:
这门课程相当于4—5个学分的课。考虑到各个学校的具体情况,老师也可以考虑把这门课当作两门课的结合(软件工程理论和软件工程实践);也可以安排两个学期
学院不是这样安排的。
-
意义不明的流程。不知道测评系统的设计者是否痴迷于神秘主义,或者是单纯享受给学生创造困难?至少这样的作业提交/评测方式给我们造成了极重的负担,在凌晨三点写完代码后还要花费一个小时提交代码,好不容易在午夜前通过测试,却要在配置CI上花费两个小时以上。许多工作明明可以用更方便(对于学生和平台设计者双方而言)的方式进行,却要将配置、评测的工作下放让学生完成部分,增大了学生和老师工作的耦合!从我们这次的开发经验来讲,我认为我们做了很多与作业无关的事。
PSP 规划
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | ~10 |
· Estimate | · 估计这个任务需要多少时间 | 10 | ~10 |
Development | 开发 | 890 | 1205 |
· Analysis | · 需求分析 (包括学习新技术) | 240 | 180 |
· Design Spec | · 生成设计文档 | 30 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 10 | 5 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 30 |
· Design | · 具体设计 | 60 | 320 |
· Coding | · 具体编码 | 360 | 460 |
· Code Review | · 代码复审 | 60 | 0 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 180 |
Reporting | 报告 | 60 | 90 |
· Test Report | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 20 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 960 | 1305 |