123
社区成员
这个作业属于哪个课程 | https://bbs.csdn.net/forums/fzusdn-0831?typeId=4994742 |
---|---|
这个作业要求在哪里 | https://bbs.csdn.net/topics/617706688 |
这个作业的目标 | 回顾这一学期所完成的软工任务 |
学号 | 102101501 |
先前对于这门课程的想象和期待:
在课程强制要求的驱动下去尝试第一次参与一个项目从最初设计到最终落地的整个阶段,具体地体会整个课程从理论到实践的映射关系,但同时也十分畏惧自己拉胯的编码能力和混乱的注意力管理机制可能导致最后一事无成、拖他人后腿甚至挂科。
实际情况总结&目前所学所练所得:
确实有一些情况应验了自己之前的恐惧(比如第二次个人作业的爬虫最后就是近乎什么没写出来),但大部分任务的完成情况超过我对自己的预期,期间曾经走过一些弯路,但也带来了意外收获,至于最后小组作业只能说被且仅能被大佬带飞的感觉着实是令人……五味杂陈……
目前在软工课实践中学会的东西:简单前端基础、js的事件机制与应用、canvas使用、unity碰撞体系的应用与优化、unity test runner的使用、项目需求分析、初步设计及UML图绘制、如何正确地利用AICG工具(Copilot和星火大模型)进行开发、如何进行合作开发,其中项目设计方面和项目协作开发方面达成最初的期待和目标,利用AICG工具方面超出预期、第一次博客设计让我认识到前端有模板这个东西的存在,为后来其他课程作业的前端开发部分提供了基础。
存在的不足:个人认为虽然小组作业β阶段的测试虽然达到了多个例子提高覆盖率进行测试的目标,但是对测试工作的目的和细节仍然存在一些模糊不清的状况,对于unity这种可以通过直接点击播放进行效果检查的机制,我在用例上应该怎么去设计,使得我负责的测试能够起到的效果是完善测试全面性的,而不是单纯的重复?到编写博客的这一天,我其实还没有很能想通这个问题,我仍然没有弄明白我这次测试工作的意义体现在哪里。然后通过多线程编程的要求以及UML图的绘制,我还意识到可能java是我大学程序语言课中缺失的一部分(感谢经验丰富的组长告诉我UML图的逻辑结构和java是有关系的)。
时间 | 作业 | 花费时间 |
---|---|---|
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) |
最深的是并发数独(第二次结对编程),原因是第一次面临要重构的难题,又由于不合理的坚持和优柔寡断,为了实现一件最后知道不能实现的事情,花费了好多的时间和精力,最后没做出来也没有学到该学的,结果有点让人失落。那也是我个人代码量最大的一次作业。后期小组作业其实花费在画图上的时间更多一些,unity方面是学习时间大于实践时间,读了好多文档看了好多视频。
Copilot确实是好用的,就是每次/explain 要记得告诉它用中文。
事实上AICG工具的特征是:功能强大,但是不稳定,必须要自己先有一些基础概念,至少要懂得鉴别它写出来的代码是什么意思,因为比如在编写测试文件的时候就发现,虽然Copilot写出来的代码可以运行,但是给的测试用例却不是很好,必须自己阅读被测代码,按软工的方法去设计好的用例,在Copilot给出的基础上进行修改。有些报错信息AICG工具只能理解其本意,但是推测得到产生原因不一定准确,在这一点上不如直接搜索前人的经验合适。
当需要在前端上自定义一个UI组件库里不存在的图形的时候,canvas是非常更好用的工具。
如果是整个的模板在知乎上找再跳转到github效率比较高,但是一定要有一定的前端基础对其进行编辑。
很强的平台工具,一键开启项目,一键运行,一个脚本到处贴,报错信息挺直观的,但是同时这种功能多样而强大伴随着工具本身的臃肿,学习成本很高,可学的地方还很多。
静态前端三件套,为后来很多其他课程的页面前端开发打下了基础。
真的谢谢,我总是记不住Git指令,因而不得不让其在寸土寸金的C盘占据一席之地。
大部分学会的东西都在意料之外,毕竟JS那块是不符合任务要求的,而Unity从来没有被纳入过我本人的学习规划预期之中(对游戏开发毫无兴趣)。
但实际上Unity最终让我理解其实开发过程中有很多埋头编码之外的东西(对于过去纯手打的项目,我个人理解Unity已经相对可以算“低代码化”了),某种意义上这种软件的存在(比如一个写好的碰撞系统,在真的接触Unity之前我以为那都是要全部手写的,在开始项目之前想了很久要怎么去判定,写两个图形范围去判断横纵坐标关系来检查是否重合?结果确实是拉个判定范围,但也只要拉个判定范围……大部分对象你只要给它一个属性,它就可以立刻具有某项功能,而且这个属性可以继续贴到另一个对象上,不需要去关注其细节,大概就是当时面向对象中讲的封装)算的上所谓可复用的巅峰了吧?感觉像是刚开始学习编码时接触宏定义一样。一种非常合理的偷懒形式。
虽然严格来说Unity可能不能算低代码平台,但是这也启发了我去寻找一些其他领域的低代码或者可视化开发的产品,比如在其他作业中进行前端开发时了解到了百度的Amis。我觉得这类东西很有意思,作为一个编程水平很烂的人很感谢这样的开发者,也希望自己将来有能力的时候也可以去参与开发这种类型的软件。