102301325王浩楠 团队工作汇报

攀登

一、学期回顾

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

​ 截至目前,我已经完整的参与了一次团队项目开发,并且在项目开发中担任后端开发工程师的角色。我认为在实践过程中最大的收获之一是在组长的带领下了解了如何进行团队软件开发,以及在“老师”的push下学会使用git将自己的代码提交到小组的总项目中。每次向项目负责人pr我对项目的更改时,我均感到心潮澎湃,既有完成任务的成就感,又有担忧自己负责的代码出现严重bug的担忧。在本次实践中,我感受到了完整的软件开发人员所具有的心理过程,了解了一个软件项目是如何从0到1搭建起来的,在软件开发方面的素养有了一定的提高,并且在完成项目的过程中我对后端开发的框架使用也更加的熟练,可开发的功能也更加的强大,这些是达到我上这门课程的预期与目标的。

​ 但仍存在不足。我的项目开发的大局观没有得到锻炼。在本次项目开发中,我主要负责后端开发,对于一个项目完整的运行的过程了解并不够充分,比如需求分析的过程、建立模型的过程等。我想这是本次实践课的一项遗憾,虽然开发技术得到了一定的提高 ,但距离一名架构师,亦或是项目经历这样的角色所需要的大局观仍没得到锻炼。我希望在未来软件开发的过程中能积极参与到全过程开发,锻炼自己的项目统筹能力,努力成为一名出色的软件开发工程师。

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

  • 在软工实践课程当中每名成员分别编写了( 108+50+35+264+87+100=644)行代码。
  • 在团队项目每名成员参与了( 项目名称 )的设计与开发,在其中所承担的角色。

参与了AwesomeCS项目的设计与开发,在本项目中我担任后端开发工程师的责任,负责编写博客功能的后端业务逻辑以及用户信息及登录注册相关的后端业务逻辑。

  • 软工实践的各次作业每名成员分别花费的时间:
作业 花费时间
第一次团队作业 2h
第二次团队作业 5h
第一次团队项目作业 3h
第二次团队项目作业 5h
第三次团队项目作业 10h
第四次团队项目作业 8h
  • 在软件工程课程上花费的时间
累计时间 实际周均时间 预计周均时间
74(h) 6(h) 10(h)

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

​ 令我印象最深刻的是beta冲刺对应的实践答辩。在本次答辩中我充当项目汇报人的角色,向大家介绍我组的实践项目。在开始答辩前看到每一小组的成员所完成的项目都非常的出色,并且汇报人讲解的均非常出色,尤其是一个做AI辅助绘图的小组的汇报令我印象非常深刻,他们所作的ppt就好像真的要进行一个软件发布会,并且他们的项目令我有想要尝试一下的冲动。我对他们组四象限事务规划非常感兴趣。我认为这个功能就非常适合我这样有很多事情要处理,需要对不同事件分类处理的同学或老师。他们的优秀更令我担忧,担忧自己上去会给小组丢脸。在完成项目的过程中,每位小组均付出了很多,我很担心因为自己的汇报的低劣导致小组的项目不被重视,甚至担心无法顺利完成汇报。

​ 在汇报过程中,AI面试环节,由于反应较慢同时电脑音响没打开(下台后发现的)没能完整的展示面试功能,这点这是我的失误。但我认为我做的比较突出的一点是我在AI调用接口加载信息时的空窗期没有闲着,而是想到介绍此时AI面试官在后台做的事情(读取个人的技术栈等个人信息,做针对性的面试)来填充AI面试官反应的空窗期。很幸运最终完成了工作的汇报。如果满分10分,给自己本次汇报演讲打分为7分,勉强及格。在软件发布会的准备上,ppt还可以做的更优美,材料可以准备的更充分(例如加入音频,这是一些优秀的队伍有准备的),以及最重要的是自己的汇报可以更生动,更清晰,更有逻辑性。

二、总结收获

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

  • 每次团队项目实践中的经验总结+实例/例证结合的分析。
  • 第一次团队项目实践的主要工作是确定项目主题。在确定之初,老师提示同学们加入硬件会有额外加分。我们讨论再三,认为加入硬件非常困难。因为我们起初陷入了一种思维定势,想到的硬件便是电脑上的硬件包括电脑的音响、麦克风、摄像头等,没能想到非常适合且有创意的项目。但实际跳出这个定势,思考一些其他硬件可做的事情就多了。我最初希望可以做一个“预约书柜系统”,因为当前学校图书馆书柜预约还依靠人力,效率非常低。但是由于没能想到应用的硬件,并且一个“预约项目”现在随处可见,不具有创新性,因此选择了放弃。现在想来如果当初想到硬件可以是额外的一种电子设备比如电子锁,那么我想这个项目也可以尝试完成。但我认为一款适合计算机专业学生的学习平台也非常的有意义。我就在我刚上大学时,摸不着头脑,导致耽误了很多时间在确定自己的发展方向上,并因此错过很多机会。
  • 第二次主要是要完成原型设计,概要设计。我认为收集需求与梳理并绘制系统的交互图非常的折磨的过程。在完成老师要求根据需求绘制uml图的作业 时便有领教。一旦涉及到的类多了,概念设计就变的非常复杂甚至凌乱。但这些才是软件工程中重要的步骤。前期的设计建模足够优秀,后期开也能更加的轻松。
  • 第三次就是要是实在在的进行编码。在编码时,有些数据传来传去,我需要担心这些数据在传输过程中是否符合规范,因此需要加入一些参数校验机制。热门博客的业务层的算法也需要自己考虑。如何确定热门博客的排序?我给出的答案是通过对文章的点赞量和浏览量两个维度进行排序获取热门博客。点赞量高的优先,因为点赞量高说明博客的认可度高。当点赞量相同的情况下,便比较浏览量,因为我认为浏览量高说明该话题比较敏感,容易引起大众的兴趣,因此按照此方法进行热门博客的排序。我想在写业务层时能够充分发挥自主性,依照个人理解或者团队理解生成一个业务层算法的过程非常的美妙。在这个阶段我也学会了编写测试用例,写test unit来测试接口能否正常工作。结合理论课的学习,我可能会偏向于证明我的的代码是正确的,但这是不对的,测试时应想办法证明自己是有错误的,应该尽可能检测边界情况。我想承认自己的错误也是一种能力。
  • 第四次实践过程,我主要花时间在部署这个项目以及理解整个项目方便我在“发布会”时能够完美展现我组“雕刻的作品”。部署这个过程我认为是比较考验计算机网络的基础知识。计算机网络老师的一句话还真得到了验证,你学完这堂课,记得一个IP对应一个终端,(IP,port)对应一个进程就算学的到了。在计网知识的加持下,我认为我理解项目部署还是比较轻松的,但是我对Linux部署项目的操作并不熟悉,因此是在组长的努力下(实际上基本是组长操作,我提供了轻量级服务器)共同完成了项目部署。自己参与制作的项目在公网上运行,能让连接到网络的同学使用我们制作的网站,真的很浪漫。

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

  • 通过本学期的自主学习,我初步掌握了JavaWeb后端开发的框架SpringBoot。在掌握本项技术后,我可以快速进行软件开发。目前我已通过学习的SpringBoot的知识独立开发了"书柜预约系统"。

  • 在运用SpringBoot进行后端开发时,对持久层的控制通过xml配置文件进行开发过于繁冗,于是学习了使用MybatisPlus框架。运用本框架,后端开发时更多使用 Java语法 即可完成对后端数据库的操作,非常便捷。

  • 对于前后端分离项目,后端代码需要独立测试,但是如何测试每个接口(链接)的功能正确?此时APIFox这款软件便派上用场。这款软件是组长推荐,非常好用,并且这款软件的ui我也非常喜欢。在本软件的帮助下,我得以成功发现接口请求与传参方面的异常,使得bug得以及时修改。

  • 在了解后端与前端对接的原理中,我对前端请求后端接口的相关知识产生了兴趣,于是上网检索,搜索前端开发的一些知识,在这个过程中我便学习到vue框架的基本文件结构。也是借此机缘,我了解到vue框架,并将所学到的知识运用到我的约柜系统的开发上。结合Deepseek成功,我成功完成了约柜系统的前端开发。

  • 权限控制是软件安全的保障之一。在与同学一起学习的过程中,我从同学那里了解到SaToken这个简单的权限控制库,并且通过上网检索相关文献资料,最终学会了SaToken的简单应用。在开始实践阶段,我被用户登录需要的token检验搞得焦头烂额,本想通过session来存储用户的token,然后进行主页内的操作时通过拦截器验证session中的相关属性的内容,但是由于cache中的内容一直无法向后端传输,导致一直无法正常的进入系统。后来通过学习JWT的知识,学会了如何正确发送token使得前端收到后能正确的请求。但时SaToken是我目前认为处理token验证最丝滑,最方便的工具。SaToken极大的简化了后端的权限控制。

  • 全局异常捕获器也是我认为非常有趣的知识。我曾提过,在做后端开发时往往还需要检验上一层传来的参数是否符合我的算法需要。那么如果参数不符合需要怎么办?向上一层返回一个空内容,或者一个绝对错误的值等着上一层开发人员检验?这并不是最优的解法。当参数与算法需要发生冲突或者说参数异常时抛出异常,并通过全局异常捕获器捕获异常,进行针对性的处理,并将提示信息返回前端是比较优的解法。在学习全局异常捕获器的过程中我还巩固了异常类,枚举类的知识,非常有趣。

  • 我想软件开发与人工智能的结合才算的上顺应时代的发展,仅仅软件开发已经无法满足时代发展的需要。mcp框架就是一个比较好的调用API来制作智能体的工具之一。不过比较遗憾的是这门技术我并没有掌握到精髓,所以目前还只停留在了解,没能做到利用这个框架实现一个智能体。但我接下来便会深入学习这一方面的知识,做一个与我想做的项目符合的智能体。

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

  • 我认为最重要的一项能力就是面向文档学习的能力。往往,我更加喜欢在b站找我需要的技术的视频,然后跟着博主一步步学习。但慢慢就会发现b站视频知识点太过琐碎,查找适合的学习视频并不简单,并且及时找到一个适合自己的视频,但是博主所展示的也不一定是某项技术的全部内容,很多精髓的东西仍需要四处找资料学习。并且还有很重要的一点,看视频学习非常耗时间。而本学习我必须“胡吃海塞”的补充软件开发需要的相关技术知识,所以把我逼到查看文档来使用工具的地步。使用文档给我的感受是“小东西,真别致。”感觉文档上几乎全是干货,知识密度非常高。就比如我看satoken的文档时,就可以快速了解到如何在 springboot中使用,我需要使用哪些注解等等,可以快速了解satoken是什么,并且也符合我的习惯。查看文档后我发现通过文档内容来学习技术我也完全是能做到的。后来学习全局异常捕获器的使用时,我也是仅仅查看相关文档便学会如何使用。我认为通过查阅文档学习的从0到1的突破对我来说意义重大。
  • 另外一点是,我通过本门课程,我开始意识到大学究竟在培养什么样的人才。我想我的大学的目标不仅仅想把我培养成一个能拿着工具做事的人,更想把我培养成为一名能够了解工具、创造工具、发展工具并且会使用 工具的人。软件工程这门课并不是教学生如何利用各种框架搭建项目,而是在教学生一个项目该怎么被推动,对于项目来说什么才是重要的,我应该注意软件开发过程中的哪些问题。这门课程的格局非常之高,而我起初认为这门课程是教开发(编写)软件,但是我错了,这完全不是重点。实际上对于软件开发来说,编写代码并不是最重要的部分。软件工程这门课的格局非常高,如果想要在软件开发这行走的更远,这门课程绝对有必要学好。

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

  • 我想这门课程对我未来发展影响最大的是转变了我的思想。我起初认为做计算机的硬件生产才是我的目标追求。但由于我上大学以来对硬件设计的学习并不够深入,只能做一块功能简单的大CPU,而无法利用现有知识造出一个工业级的高集成强功能的cpu,所以我在硬件发展这条道路上举步维艰。但是这们课程使我认识到软件/算法等方向的发展也非常有意义,能够切实的帮助需要帮助的人。我开始愿意接纳更适合自己专业的道路,不再执着于成为一名硬件工程师,而是将硬件原理的研究作为兴趣爱好,而将未来职业发展投入到软件开发、AI算法这些热门方向的学习。
  • 其实学到这个阶段我才意识到自己曾经的努力方向并不够明确优点晚了,但是我会继续坚持,争取在如今的道路上借势走的更远。

三、致谢

  • 首先非常感谢给我授课的老师。虽然感觉的到老师的授课经验目前还不够丰富,但老师依然完整的为我们讲解了本门课程的知识,从专业角度给我们的项目进行指导,真的非常感谢老师的辛勤付出。我相信老师一定可以成为更加优秀的教师。
  • 其次我要感谢我实践小组的组长。在我看来组长绝对是为我们的项目付出最多心血的那个人。站在我的角度,我认为我的组长软件开发的能力非常强,大的框架基本上是他定下来的,我有很多学习的技术也是从他那里了解到的,组长真的在我web的后端开发的学习上给了我很大的帮助。
  • 最后非常感谢其他组员的付出。在项目开发的过程中,我们都尽力空出时间来讨论项目如何推进,在本项目上投入了不少的心血,非常感谢每一位参与人员。
posted @ 2025-12-27 22:46  Buy-iPhone  阅读(71)  评论(0)    收藏  举报