凑合——2023秋软工实践个人总结博客

102101501_王君妍 2023-12-18 18:08:36
这个作业属于哪个课程https://bbs.csdn.net/forums/fzusdn-0831?typeId=4994742
这个作业要求在哪里https://bbs.csdn.net/topics/617706688
这个作业的目标回顾这一学期所完成的软工任务
学号102101501

一、学期回顾

1.1 回顾你对于软件工程课程的想象

先前对于这门课程的想象和期待:

在课程强制要求的驱动下去尝试第一次参与一个项目从最初设计到最终落地的整个阶段,具体地体会整个课程从理论到实践的映射关系,但同时也十分畏惧自己拉胯的编码能力和混乱的注意力管理机制可能导致最后一事无成、拖他人后腿甚至挂科。

实际情况总结&目前所学所练所得:

确实有一些情况应验了自己之前的恐惧(比如第二次个人作业的爬虫最后就是近乎什么没写出来),但大部分任务的完成情况超过我对自己的预期,期间曾经走过一些弯路,但也带来了意外收获,至于最后小组作业只能说被且仅能被大佬带飞的感觉着实是令人……五味杂陈……

目前在软工课实践中学会的东西:简单前端基础、js的事件机制与应用、canvas使用、unity碰撞体系的应用与优化、unity test runner的使用、项目需求分析、初步设计及UML图绘制、如何正确地利用AICG工具(Copilot和星火大模型)进行开发、如何进行合作开发,其中项目设计方面和项目协作开发方面达成最初的期待和目标,利用AICG工具方面超出预期、第一次博客设计让我认识到前端有模板这个东西的存在,为后来其他课程作业的前端开发部分提供了基础。

存在的不足:个人认为虽然小组作业β阶段的测试虽然达到了多个例子提高覆盖率进行测试的目标,但是对测试工作的目的和细节仍然存在一些模糊不清的状况,对于unity这种可以通过直接点击播放进行效果检查的机制,我在用例上应该怎么去设计,使得我负责的测试能够起到的效果是完善测试全面性的,而不是单纯的重复?到编写博客的这一天,我其实还没有很能想通这个问题,我仍然没有弄明白我这次测试工作的意义体现在哪里。然后通过多线程编程的要求以及UML图的绘制,我还意识到可能java是我大学程序语言课中缺失的一部分(感谢经验丰富的组长告诉我UML图的逻辑结构和java是有关系的)。

1.2 回顾你在这门课程中的投入与产出

  • 在软工实践课程当中我编写了约2000行代码。
  • 在团队项目中我参与了船送们的设计与开发,我在其中所承担的角色为UML图绘制、后端开发中的碰撞系统优化、测试编写。
  • 软工实践的各次作业分别花费的时间:
    时间作业花费时间
    09.01~09.08第一次个人作业5h
    09.08~09.15第二次个人作业10.4h
    09.15~09.28第一次结对编程作业49h
    09.28~10.07第二次结对编程作业42h
    10.07~10.23团队介绍、选题报告、需求分析报告3h
    10.23~11.03原型设计、概要设计10h
    11.04团队现场编程3.5h
    11.04~11.18团队项目Alpha冲刺阶段30.6h
    11.22~12.16团队项目Beta冲刺阶段与终期总结20h
    12.08~12.17个人学期总结博客作业3h
  • 在软件工程课程上花费的时间
    累计时间实际周均时间预计周均时间
    176.5(h)10.4(h)15(h)

1.3 令你印象最深刻的是哪一次作业或哪一场答辩?为什么这次作业或这场答辩令你印象深刻?

最深的是并发数独(第二次结对编程),原因是第一次面临要重构的难题,又由于不合理的坚持和优柔寡断,为了实现一件最后知道不能实现的事情,花费了好多的时间和精力,最后没做出来也没有学到该学的,结果有点让人失落。那也是我个人代码量最大的一次作业。后期小组作业其实花费在画图上的时间更多一些,unity方面是学习时间大于实践时间,读了好多文档看了好多视频。

二、总结收获

2.1 展开说说你的软工实践故事

  • 个人编程阶段:没有什么特别好说的,爬虫作业完全是一个失败产物,错失了利用这次作业提升自己能力的机会,也获得了一个非常糟糕的分数,同时也是这个分数让我在小组作业分组时失去选择权。个人博客编写的相对比较简单,主要是靠拉取模版来进行编辑,当时觉得时间有点宽裕还个人去加了拉取模板里没有的音乐播放和代码美化的功能。不过也让我对前端开发有了一些初步的概念,不过虽然主要前后端对接学习、前端开发的学习过程还是在其他课程上完成的,也是软工的这次作业让我迈出了第一步,一定程度上消除了一些个人对完全陌生的前端概念的恐惧。
  • 结对编程阶段:因为爬虫作业大失败,结对编程阶段实际才是真正进入“开发”这一角色的第一项作业。和结对伙伴性格都是偏向喜欢单干的类型,所以两个人一开始对接频率不是很高,造成了一些工作重复做,或者一些工作不适配的问题(当时其实没有太多前端后端的概念,分工时只说了一个去实现前端,一个去实现后端,实际上最后根本就不算有后端,严格来说就是前端分了两个文件写,因为数独的逻辑其实还是比较简单的,并不值得分出来再进行对接的工作量,结果有一小段时间变成两个人抢活干,谁先实现出来用谁的代码)当然在ddl的逼迫下最终跨越了这一层障碍。结对编程阶段错误选择带来的血泪和意外收获基本都写在当时的博客(https://bbs.csdn.net/topics/617373755)里了。
  • 现场编程阶段:这方面其实不太有印象,因为当时很快在网上找到相关的的指导文档和实现逻辑,然后组内主力开发速度很快,我调完自己的邮箱权限其实那边已经初步实现基本功能了……有一个比较好玩的意外是因为是我的邮箱作为测试邮箱,结果每次有出错都会收到好多发送失败的提示,有次提示以为是网络问题,结果之后的测试还在连续提示,最后检查了半天是接收邮箱填写错了。

img

  • 团队项目实践阶段:有幸跟随了一个规划能力很强的组长和开发能力很强的主力开发,整个团队项目的实现过程相对我之前的预想要顺利很多,实现了很多我之前不敢想象的功能。和经验丰富的人在一起开发也让我学到很多,比如修改UML图的时候组长给我提供了一些他之前做的图作为参考,测试代码编写的时候另一位搭档一起帮忙查出了之前测试无法运行的原因(怎么正确配置Assembly定义文件以及怎么查看报错),还有测试的过程中为了读懂被测代码和主力开发也进行了交流,虽然游戏的实现我其实没有参与太多,但也学到了不少实用的知识,理解了实现逻辑。

2.2 介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的帮助?

  • AICG工具的使用

Copilot确实是好用的,就是每次/explain 要记得告诉它用中文。

事实上AICG工具的特征是:功能强大,但是不稳定,必须要自己先有一些基础概念,至少要懂得鉴别它写出来的代码是什么意思,因为比如在编写测试文件的时候就发现,虽然Copilot写出来的代码可以运行,但是给的测试用例却不是很好,必须自己阅读被测代码,按软工的方法去设计好的用例,在Copilot给出的基础上进行修改。有些报错信息AICG工具只能理解其本意,但是推测得到产生原因不一定准确,在这一点上不如直接搜索前人的经验合适。

  • canvas

当需要在前端上自定义一个UI组件库里不存在的图形的时候,canvas是非常更好用的工具。

  • 各类前端模板

如果是整个的模板在知乎上找再跳转到github效率比较高,但是一定要有一定的前端基础对其进行编辑。

  • Unity

很强的平台工具,一键开启项目,一键运行,一个脚本到处贴,报错信息挺直观的,但是同时这种功能多样而强大伴随着工具本身的臃肿,学习成本很高,可学的地方还很多。

  • CSS+HTML+JS

静态前端三件套,为后来很多其他课程的页面前端开发打下了基础。

  • Github Desktop

真的谢谢,我总是记不住Git指令,因而不得不让其在寸土寸金的C盘占据一席之地。

2.3 技术之外,这门课程还给你带来了哪些方面的提升?

  • 消除了一些对开发工作的幻想与恐惧
  • 一个自己参与开发的项目
  • 软工理论概念的理解和积累
  • 成就感
  • 一些兴趣方向上的指引(见2.4)

2.4 如果还有什么想记录的或者想说的,就写在这儿吧!

大部分学会的东西都在意料之外,毕竟JS那块是不符合任务要求的,而Unity从来没有被纳入过我本人的学习规划预期之中(对游戏开发毫无兴趣)。

但实际上Unity最终让我理解其实开发过程中有很多埋头编码之外的东西(对于过去纯手打的项目,我个人理解Unity已经相对可以算“低代码化”了),某种意义上这种软件的存在(比如一个写好的碰撞系统,在真的接触Unity之前我以为那都是要全部手写的,在开始项目之前想了很久要怎么去判定,写两个图形范围去判断横纵坐标关系来检查是否重合?结果确实是拉个判定范围,但也只要拉个判定范围……大部分对象你只要给它一个属性,它就可以立刻具有某项功能,而且这个属性可以继续贴到另一个对象上,不需要去关注其细节,大概就是当时面向对象中讲的封装)算的上所谓可复用的巅峰了吧?感觉像是刚开始学习编码时接触宏定义一样。一种非常合理的偷懒形式。

虽然严格来说Unity可能不能算低代码平台,但是这也启发了我去寻找一些其他领域的低代码或者可视化开发的产品,比如在其他作业中进行前端开发时了解到了百度的Amis。我觉得这类东西很有意思,作为一个编程水平很烂的人很感谢这样的开发者,也希望自己将来有能力的时候也可以去参与开发这种类型的软件。

三、致谢

  • 首先感谢教授这门课程的张栋老师,之前在面向对象设计这门课上就觉得张栋老师布置的作业非常实用,做他布置的作业总是能推动我去了解一些新的、现行主流的开发工具或者开发技术。当时要求学习的Github使用以及markdown编写直到现在都觉得受益匪浅。
  • 其次非常感谢小组作业中每个指导过我、有着丰富开发经验的同学,在这个专业学习的过程中我逐渐意识到一个有经验的人的指导是多么可贵,开发的学习道路(至少以我的水平)不是一个人的道路,感谢你们花费你们宝贵的时间,在我一筹莫展的时候给我提供帮助。
  • 最后感谢我在开发过程中阅读的所有教程的编写者以及用到的开源软件的编写者,谢谢你们在每次出错的时候寻根问底的精神以及留下的或成功或失败记录,让我知道我究竟遇到了什么问题,以及面对一个完全陌生的领域应该沿着什么方向摸石头过河;谢谢你们的开源精神,让我可以用到免费且好用的软件,大大降低了我开发过程中的经济成本和实践成本。以及感谢生成式算法,不然以本人的学习速度恐怕很难实现任何一次作业。
...全文
63 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

123

社区成员

发帖
与我相关
我的任务
社区描述
2023秋-福州大学软件工程
软件工程 高校
社区管理员
  • fzusdn
  • 篱隙光远
  • Jason_Zhou1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧