软工实践个人总结

回望

对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么

  大三上学期对我来说是比较梦幻的一个学期,因为这个学期我参与的所有实践类大作业都选择了组队完成,例如数据库实践、Linux实践,它们并非不允许单人完成,但我都选择了和舍友、以及队友@Stolf完成。原本认为组队完成可以减轻工作量“浑水摸鱼”,实践过程中的各种问题却表明事情并没有这么简单。遇到的具体问题主要有以下因素:

  • 因为是双人完成,项目规划就不能过于简单,至少不能和单人作品一个水平
  • 两个人有两个思想,需要高效沟通融合想法
  • 需要正确的拆分工程,降低项目的耦合度

  十三水的组队实践成果我认为无疑是成功的。合理的将用户层与逻辑层分离,通过文档沟通接口,利用git进行版本控制与合并,这个项目让我初尝组队编程带来的快乐,和伙伴一起分享成果的感觉是如此的爽快,结果也是非常优秀的:UI贴和现代风格,算法也能排进前三。

  俗话说“两个和尚挑水吃,三个和尚没水吃”,软工实践接下来的过程中发生的事是对这句话最好的印证。在第二次作业完成的那一周,我参与了CCPC厦门的比赛,而在比赛前一周都在做十三水,不断优化十三水的算法,这导致我没有花时间在训练上,结果也相当惨淡:差一题就能进入金牌区。这让我和队友意识到缺少训练带来的后果,接下来在准备下一场比赛的过程中就开始不断训练,这导致软工第三次作业开始滞后。直到12月中旬结束本赛季的最后一场比赛后,才开始投入时间开始项目。由于选材的难度较大,Unity和C#也没有人会使用,因此在此之前我曾让小组队员去学习上手Unity和C#,但不少成员直到项目开工也没有下载过Unity,他们最后也都选择了摸鱼了事,还有一些成员甚至还没有上手如何使用git进行协作开发,文档制度也没有按规范执行,这让本来就时间不足的小队雪上加霜,最后只能赶出一个“辣眼睛”的游戏草草了事,整个软件过程非常混乱。

  总结而言,大三对我是从个人编程走向团队编程的第一次尝试,对git版本控制与团队协作模式的了解也深入了不少,至少达到了一部分期望与目标。不足在于我现在所处的团队开发能力还停留在“小团队”的规模,一旦接触超过十人的中型团队就无法很好的管理项目进度,能力还有待提高。


总结这门课程的实践总结和给你带来的提升

  • 统计一下,你在这门软件工程实践中,完成了多少行的代码
作业编号 代码行数
第一次作业 +12,143,-8,314
第二次作业 +1,669,-316
第三次作业 +232,165,-120,426

  数据统计自GitHub,第三次作业统计的代码量包括了Unity项目中的一些文件,例如场景文件和配置文件等,实际的代码量大约在3000行以下。

  • 软工实践的各次作业分别花了多少时间?
作业编号 花费时间
第一次博客作业 1h-
第一次个人编程作业 48h-
第一次团队展示 1h-
第一次结对编程作业 40h-
团队项目-选题报告 12h+
团队项目-需求分析报告 12h+
团队git现场编程 4h
Alpha冲刺 5h-
Beta冲刺 5h-
最终演示 80h+
  • 哪一次作业让你印象最深刻?为什么?

  印象深刻的还是第一次作业,做了不少第一次:第一次链接C++第三方库、了解VS项目工程中的一些设置、第一次将自己在算法竞赛中所学的算法应用在实践上。期间遇到了不少麻烦(比如操蛋的SDK版本问题),也花了不少时间去解决,最后过关斩将成功解决并拿下全班前五的快感至今记忆尤深。

  还有一件稍差与上述但不得不说的是第二次作业的竞技环节。本以为自己的算法(dfs+权值矩阵剪枝)并不算起眼但最终却拿到非常高的分数时,那种感觉也挺奇妙。

  • 累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答

大概得至少花足整整一天时间吧,可能得有30小时?

  总时间大概得有200h+,在编写博客的时候还没有规划比赛训练,最后进行了非常高强度的训练计划(早上起床就到实验室,22点回宿舍睡觉),不得不压缩软工的时间,造成中间几周所花时间不超2h,最后两周每周花了40h+,最后平均一下也有每周12h+。

  • 学习和使用的新软件/学习和使用的新工具

  我认为工具属于软件中的一种,我没有办法分开来说,因此在此合并回答。

主要学习的新工具有:

  • Axure:原型设计软件
  • Xmind:非常好用的思维导图设计软件
  • Typora:MarkDown编辑软件,可以即时渲染与编辑
  • Visual Studio与Intellij IDEA中的单元测试与代码分析工具
  • 学习和掌握的新语言、新平台
  • C#
  • Unity Engine:Unity游戏引擎
  • 学习和掌握的新方法
  • 项目文档编写方法
  • 选题报告编写
  • 项目需求报告编写
  • 团队规范制定、团队管理
  • 团队进度分析方法
  • 如何吹牛
  • 其他提升

  一年半前我在赶张栋老师布置的电梯调度作业中第一次熬夜,曾经的我很难坚持住这么高强度的连续作业。至于现在,对于即使到5点半还清醒着肝DDL的事情已经到了丝毫都会感到意外的进阶了。

  放一张凌晨5点的福大,摄于2018年6月。

软工实践个人总结_第1张图片


个人或结对或团队项目实践中的经验总结+实例/例证结合的分析

  个人编程没什么好说的,就是自己能力体现。

  结对编程也没什么好说的,就在隔壁直接喊个话就能沟通。

  最主要的经验教训还是大型团队的管理。作为队长我的问题很大:

  • 安排完任务后就自个儿去做别的事情,没有一定的监管机制,造成多数人没有按要求去学习,项目已经很迟开工了甚至还有人没有下载Unity这一点就足够证明。
  • 项目分割和任务分配也有不少问题,不少情况下发生了阻塞的情况,并发性下降严重:UI与GamePlay相互等待对方,而且混乱的版本控制也让这两个部门在对接上吃了不少的亏
  • 规范不够完善,监督不够严格,执行没有到位,团队作业效率很低:在项目开始前制定的项目规范不足两页、编程过程中没有按要求完成规范内容、缺少文档交流,各自实现,这些都是例证。

  键盘未动,文档先行,这句话是我这次团队作业最大的收获。对于一个大团队,很难通过口头交流去规定一些制度和进行项目上的交流,这个时候如果有个统一规范的文档去调度,可以为每一个成员提供指导(项目规范),也可以加强团队的交流(接口文档、设计文档),这些都是提高团队并发性的有效方法。

这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?

  还是挺感谢舍友@Stolf的。Stolf大佬的学习能力是真的强,在做软工结对作业的时候不仅快速上手了Java语言,还能在这么短的时间内利用Swing搭建了美观的UI,非常的佩服。

  感谢Stolf的最主要原因还是因为这学期一直都在和他组队,包括ICPC竞赛和各种实践组队作业,组队体验都非常的舒适,之间也算是形成了一些默契。


个性发挥,包括图文、照片和创意等

软工实践个人总结_第2张图片


后记

  这门课上下来,收获很多,但课程上也有很多问题,同学们纷纷叫苦不迭,总结一下我在上这门课遇到的一些烦心事:

  • 前两次作业让部分同班同学当任技术助教

  先不说一些虚无的可能,就以“技术”评论为什么让同班同学当任技术助教会有问题:技术助教缺乏技术是关键原因。第一次作业我使用Visual C++完成,由于SDK版本与工程设置不同导致上交的代码无法正常评测,这一问题还是由非助教人员发现的。在技术助教调试半天没有成果后就直接交由同学自己处理,留下烂摊子溜了。同样在第一次组队作业,助教们对于一些规范制度的不制定也导致互评机制相当于鸡肋,教学过程及其混乱。

  同班同学可以是技术助教,这一点永福大佬充分证明了,至少第二次作业没有什么问题,关键还是选人制度不应该太水,或是干脆交由更有实力和责任心的学长学姐负责。

  • 时间过于紧凑

  软件开发是一项比较庞大的过程,而这门课留给我们做第三次作业的时间只有2个月,去除文档答辩和极限编程,Alpha+Beta的开发时间只有短短的一个月左右。计算机专业大三虽然已经把一些必修课学完了,但依然还有非常多的课程需要花时间去学习,也有一些别的事项占用时间,而这门课意图将学生所有的时间都占为己有,却仅有1学分,时间代价与报酬反馈完全不成正比。

  • 博客过多

  上面提到这门课占用时间,但其实并没有多少课,这也是学分少的原因,但为什么我还是说它占用时间呢?主要表现在繁重的博客撰写上。Alpha与Beta两个冲刺的过程中每两天写一篇博客并评分的频率以及附带的站立会议让小组在学习之余疲于应付,经常出现刚交完前一篇博客,睡一觉就要考虑下一篇博客的事情了。博客还提到了两天完成的工作,两天时间扣除其他花费和睡眠时间,留给软工的时间不多于5h,还要花时间撰写博客,在这么短的时间内不会有多少工作成果,有时候Debug就会花去5h的时间,为了让博客“有料”,评分够高,通常只能靠“吹牛”,一学期下来可能没学会多少文档怎么写,博客怎么吹牛倒是学到了。

  这门课今年第一次成为必修课,课程安排处于摸索阶段,制度上有不足是肯定的。希望这门课的制度越来越完善,让学弟学妹们真正学到学好软件工程技术。

你可能感兴趣的:(软工实践个人总结)