软工实践个人总结

一、基本情况

(1.1)请回望第一次作业,你对于软件工程课程的想象

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

  • 达到了期待和目标的方面:参加了一个完整的项目开发过程,规范化地进行开发,提高了团队协作能力。

    • 在结对编程作业中,我第一次全程参与一个项目的完整开发过程,体会到了在软件开发中所需要的各种角色,也是第一次开始使用有助于开发规范化的各类工具。在团队编程作业中,第一次参与十个人组队开发小程序,大家各司其职,除了完成本职工作之外,也要和其他部分的同学进行沟通交流,在此过程中提高了团队协作能力。
  • 存在的不足:个人编程能力提升较少。

    • 在团队编程作业中,我是策划组的一员,主要负责UI设计、制作PPT,这些工作与编程毫无关系,感觉自己也没学到什么比较重要的东西,UI设计的痛苦过程反倒是更加坚定了我以后不做UI设计相关方面工作的想法。在个人编程与结对编程作业中,自己是有在设计算法和编程的,对我个人而言,通过编程带来的满足感远大于UI设计,如果之后有类似的课程,我想我会更倾向于参与后端相关的工作。

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

  • 非测试组

    • 在软工实践课程当中我编写了3949行代码。

    • 软工实践的各次作业分别花费的时间:

      # 作业 花费时间(分钟)
      1-2 个人编程作业 2020
      3 结对编程作业 3260
      4 团队介绍与选题报告 300
      5 团队需求分析报告 1500
      6 团队项目之现场编程 280
      7-13 Alpha冲刺(含总结) 1920
      14-19 Beta冲刺(含总结) 520
    • 讲述令你印象最深刻一次作业?为什么这次作业令你影响深刻?

      • 结对编程作业

        结对编程作业的期限长达一个月,一开始的时候抱着那种轻松悠哉的心态,再加上个人编程作业完成得过于痛苦,报复性“玩耍”了很久,最后剩一周的时候火急火燎地开始赶作业,硬是拖成了一周极限编程。

        我们选择以小程序的方式来开发猪尾巴这款游戏,但是对小程序的开发完全不熟,只有大一短暂接触过前端开发的经验,而且由于时间过于久远也遗忘了很多,相当于是从零开始吧。火速学习了小程序的基础知识以后,便开始设计猪尾巴,厘清其中逻辑也花了一部分时间。再接着就是UI设计,这也是一块我们两个从未接触过的领域,各种晕头转向,选择用小猪佩奇作为主体,在和柯老板的一次聊天中,他问我们俩“你们到底是没有时间完成好UI设计,还是审美······?”,我们就直接了当地承认是审美不足。还记得柯老板在某节课上问大家“你们是对小猪佩奇有什么特殊的情节吗?”,其实,就我们俩而言,如果这个游戏是“羊尾巴”的话,我们就会去找喜羊羊相关的素材。

        在这次编程作业中,遇到了各种各样奇奇怪怪的 bug,由于不知道如何使用后端来实现一些算法逻辑,所以我们将逻辑实现这部分全部放入 js 中,没想到js居然是异步的语言,导致很多时候代码逻辑是正确的,但是没办法按照我们预想的执行顺序去执行,出现了许多错误,这是我当时觉得最痛苦的一部分,js的异步特性在后面的现场编程作业中也体现得淋漓尽致。

        周围的同学朋友,在听到我们只有一周的时间来完成作业时,都觉得我们要完蛋了,俗话说“不蒸馒头争口气”,也是憋着一口气吧,总感觉自己能活下来,虽然这个过程会非常痛苦,所幸最后的结果也不算差。在这次编程作业中,我第一次全程参与一款小程序的开发设计,通过编程实现从无到有的过程,虽然艰辛,但令人感到满足。

    • 在软件工程课程上花费的时间(预计花费时间参考:同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答)

      • 开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
        • 每周具体拿出多长时间在这门课上,对于这个问题我暂时还不无法回答,这个取决于每个时间段老师所发布的任务,努力保质保量地完成。
      • 在经历了个人编程作业和结对编程作业后,我预想的是每周花费15个小时在软件工程课程上。
      累计时间 实际周均时间 预计周均时间
      166.33(h) 12.79(h) 15(h)
    • 介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的作用?

      • 新技术
        • 小程序开发:掌握了小程序开发的方法,以及如何进行小程序开发。
        • PS:PS的使用是设计UI图所必须要掌握的技术,掌握了基本的PS技术之后,设计起UI图来更加得心应手。
      • 生产力工具:
        • 思维导图:在项目开发设计前,使用思维导图来厘清任务要求,有助于加深对任务要求的理解以及梳理好各项任务之间的关系。
        • 流程图:在实现某些复杂的功能时,我倾向于先画出流程图,在一次次推翻、重构流程图的过程中,慢慢梳理好了代码实现逻辑,这比起写完代码之后重构来得更加高效。
        • UML类图:这是一种统一、标准化的建模语言,它能为许许多多参与软件设计和开发的人提供一种公共“语言”,基于共同的“模型”来理解业务、需求,理解软件和架构如何构造。
        • 幕布:可以支持使用Markdown语言来绘制思维导图,使用简便,可将最终结果以文件形式保存。
        • draw.io:可以将绘制的图保存到Github,或者提取Github上的draw.io文件,方便共享。功能强大,内在提供各种类型的各种模板,模板全面且支持多种形式的导出,导出图片为无损图片。
        • 墨刀:一款便捷的原型设计工具,使用起来十分方便简单,对新手很友好。
    • 其他方面的提升。

      • 提升了自学能力:在一些作业中,需要用的技术或者方法,是我从未接触过的,只能靠询问同学、上网查阅资料以及观看B站相关视频来进行学习掌握,在这个过程中,我的自学能力得到了一定程度上的提升。
      • 提升了编程能力:编程能力的提升主要是在个人编程作业的过程中,通过不断地分析题目要求,构思所需达到的效果,最终设计出了符合题目要求的算法,算法复杂度低且分支覆盖率高,在将思路完整实现的过程中不断提高自己的编程能力。
      • 提升了debug能力:在个人编程作业中,代码有些部分逻辑上出现了错误,能够较为及时迅速地发现并修复这些错误。在结对编程作业中,由于不了解前后端交互的具体机制与流程,算法部分我们采用JavaScript来实现,js的异步特性给当时的我们造成了不小的困扰,一个模块一个模块的进行改进,最终实现了正确的运行顺序。
      • 提升了PS能力:在团队编程作业中,我负责了UI设计,开始学习如何使用PS这款强大的工具,在完成UI设计后,我的PS能力得到了提升。
      • 提升了团队协作能力:在团队编程作业中,除了完成自己的本职工作外,还需要与负责其他部分工作的同学进行沟通交流。

二、总结与收获

非测试组:个人或结对或团队项目实践中的经验总结+实例/例证结合的分析。

  • 遇事不决,多问同学
    • 在结对编程作业中,由于小程序不像web,天生地支持多线程,在运行其他代码时无法响应鼠标点击事件,导致线程卡死,询问同学后,才知道引入“观察者”就可以解决这个大问题。
  • 善用百度
    • 很多时候自己没有办法处理的报错或者一些代码上的bug,可以上网查询相关资料,一般这些错误都有人犯过并且详细地记录解决方法,善用百度可以提高debug速度。
    • 在编程作业中,经常遇到一些问题,其解决需要依托于一些没有接触过的知识和方法,可以到网络上查询相关资料。
  • 自学能力十分重要
    • 在开始个人编程作业之前,我并未接触过Python,用得比较熟练的编程语言就是C++,但是Python有强大的第三方类库,调用起来也十分方便,速成Python后,调用所需要的库函数来实现该次编程作业。如果当时选用了C++,我想编程的过程应该会痛苦的多得多。
    • 在结对编程作业中,学习原型设计、“观察者”的使用。如果没有引入观察者,我们是无法解决线程卡死的问题的。
    • 在团队编程作业中,我负责UI设计,在学习了PS的基本操作后才能较为顺利地完成UI设计。
  • 前期做好规划,不要赶DDL
    • 结对编程是我目前经历过最绝望的一次作业,前期没有进行合理的计划安排,只剩一周的时候疯狂赶进度,身心俱疲。希望之后的作业能够尽早规划好,不要再当DDL战士。
  • 沟通交流的能力很重要
    • 在团队编程作业中,我负责UI设计,需要及时与前端的同学沟通交流,提高最终小程序界面的还原度。

三、致谢

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

    我最感谢的人是黄慧卿同学。谢谢她一直陪着我完成各种对我来说很艰难或者是很枯燥无味的工作,正是因为有她陪着我,我才能一步一步地完成这些任务和作业,希望她永远是我的固定拍档。

posted @ 2021-12-21 18:44  Es-war  阅读(102)  评论(0编辑  收藏  举报