个人作业——高级软件工程实践总结作业
一、请回望第一次作业,你对于高级软件工程课程的想象
1)对软件工程的期待是能够锻炼自己的编程能力,提高自己的就业能力,然后在和同学的合作中提高自己的协作能力,这部分的期待中编程部分的能力有了比较大的提高,协作能力在团队作业中和结对作业中都有所提升。但是编程能力的提高还是有限,还需要长时间的积累。单单一个软件工程课程4个月的时间也难以产生质的飞跃。
2)这次的软件工程有3种作业,所以代码量还是比较大的,但结对作业和组队作业是分工合作的,且组队作业用到了框架,所以不好统计,大致估算2500到3000左右。
作业名| 时间 |
- | :-: |
个人项目实战-数独 | 12小时|
结对作业-匹配 | 14小时|
设计模式第一次 | 6小时 |
设计模式第二次 | 4小时 |
设计模式第三次 | 7小时 |
团队作业-需求分析 | 3小时|
团队作业-alpha冲刺 | 20小时 |
团队作业-beta冲刺 | 18小时 |
让我印象最深刻的是结对作业第二次,匹配程序的那次,那次作业给的时间很有限,而且又值其他科目作业多的一周,所以和结对队友花费了很久的时间来完成这次的作业,但是很可惜,时间还是有些来不及,在最后程序汇总的时候,由于环境问题,程序的可执行文件没有及时上传,导致我们这次的作业分值很低,本来这是不应该发生的事情,结果功亏一篑。这对我而言是个比较大的教训。
每周花费在软件工程上的时间可以说是非常多了,具体多少时间难以估计,我只记得如果有软工实践作业,起码有2天是一直在做的,从早到晚。
这个学期因为软工作业的需要,学习和使用了一些协作软件,如燃尽图绘制的在线软件,GitHub,绘制类图的processon等等。
学习和使用了Json和SSH框架,这两部分的内容是之前有所学习但是一直没有具体使用过的东西,在这学期的软件工程科目当中,将这些技术予以吸收和使用。
学习和掌握的新方法主要是软件工程的合作方法,其中实践了敏捷开发,使用了敏捷开发的进度工具,提高了对这种开发模式的认知。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
在软件工程实践中,最大的感受是任务繁重,在整个过程中,能喘息的机会不是很多,基本是一个作业结束后,另一个作业就接踵而至了。然后就是查看作业题目,查阅资料,然后尝试编写代码。例如在结对作业中,我的作业主要是生成数据并且传递数据给队友,由于我们的沟通不是很顺畅,所以在合并的时候遇到了很大的问题,导致花费了大量的时间去合并两个程序。造成这种问题的原因主要是没有统一的标准,在最后合并时,因为数据格式的问题需要对程序进行较大的改动以满足参数的正确传递,如果我们事先使用了诸如JSON这样的工具,就可以省下大量的时间去关注作业的核心--匹配上去了。
三、对下一届实践的建议?
对下一届的建议其实主要是希望他们做好心理准备,准备好迎接成吨的作业,留出足够多的时间来完成软工实践作业,因为如果连作业都无法按时完成,可能这门课其他方面的能力也不会有多大的提升。因为软件开发多数都是一个任务重,时间紧的工作。在实践当中打磨出来的抗压能力可以让我们多少能够应付未来的学习和工作。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
我们团队的成员因为都是室友,所以交流都相对比较坦诚,所以萌芽阶段中的依赖性问题还是比较少的,反而是磨合阶段存在了一定的问题,这个问题主要体现在工作习惯和看法上,我们由于各种原因,彼此往往除了在宿舍和上课都没有足够的时间去当面交流软工问题,很多问题被遗留下来,导致后期发作后大家又得去逐步改正。大家彼此都有各自的事情,对软件工程的重视程度不一,所以对这么课的自我要求也不一致,所以导致的问题是很难在时间上协调统一以快速完成作业。
五、怎样证明你学会了软件工程?
我们的项目在开题之初就遭遇了否决,所以我们在之后做出了一定的修改,并参考了资料和其他同类产品,提出了一个具有一定实用性的题目,项目在进行过程中,我们也按照要求写出了文档,其中包括了开题报告,需求分析报告,测试报告等等。我们使用了燃尽图和GitHub来控制项目协作和项目进度,并根据了要求定时发布了进度。在时间上,我们一般会在作业开始之后就开始准备项目,基本上按时完成了作业,除了前文有提到的结对第二次作业。