一、学期回顾
1.1 回顾对于软件工程课程的想象
对软件工程的第一印象
对于软件工程,我一开始没想那边多,认为他仅仅是和其他课程没什么区别的普通专业课罢了。但是日后的个人作业,结对作业,乃至团队编程都给了我当头一棒。
深刻的理解了开发软件面对的巨大压力。
初步达到我的预期
-
1.在这三个月的学习实践中,不论是需求分析,还是原型设计,到后面的小组编程的后端开发,我都基本参与过了,可以说是大致了解软件开发的全部流程。特别是后端的接口开发,以及数据库部分,这两块直接由我负责,不仅实践了软件工程所学习到的知识,还融会贯通了数据库课程上的有关所学。
-
2.磨练了个人的意志。在众多作业完成过程中,最让我感觉到痛苦的莫过于修改bug,尤其是修改别人的代码,对于自己编写的代码,遇到了问题,好歹还能有一定的思考方向,但是遇到其他人的问题真的是让人无从下手。
-
3.最最中要的是掌握AIGC这门技术。AI可以说是贯穿我整个软件工程学习史的。从国内的大模型,像kimi,豆包再到国外的chatgpt,一系列人工智能大模型在代码的实现,bug的查找修改等方面发挥了巨大作用,可以说没有ai,就没有今天能够顺利完成软件工程课程的我。
1.2 回顾这门课程中的投入与产出
在软工实践课程当中我编写了大约9000行代码。
其中个人作业的应用编写了约500行代码,结对作业中前后端都有兼顾编写了约3000行代码,剩余的都是在团队作业当中完成的,包括后端接口代码,单元测试代码,以及数据库部分相关代码。后期还
参与了前端对接和部分代码问题修改。
-
在个人作业中,我实现了类“羊了个羊”小游戏,鱼了个鱼。小游戏本身逻辑不难,但是从零接触无基础开始设计构思乃至编写一个小游戏程序对当时的我来说确实是一个不小的挑战(多亏AIGC才能快速实现满足需求的代码)。
-
在结对作业中,我主要负责的是前端界面的路由跳转等函数设计以及云数据库的管理。两个人直接实现开发一个小程序,榨干了我们的整个国庆中后期(除去休息了的前两天),流转于各大网站学习技术,了解相关知识,在github上查阅了大量前人的代码,在结合了AIGC工具的帮助下,终于是赶在截至日期前完成了项目。后面三天我们两个几乎每天都是两点一线,宿舍食堂两头转。两眼一睁就是写代码。
(根据自己的想法简单实现的公共实时聊天室)
- 在团队项目中我参与了 养食记 的设计与开发,我在其中所承担的角色是后端开发人员。在后端小组身兼多职,服务器运行维护,数据库搭建管理,后端程序编写,进行测试与前后端对接,几乎整个小组的任务我都参与了。好处是有的,就是我经历了完整的整个后端开发过程(不考虑巨大的压力),能够理解其他人的工作,更好的进行交流讨论,改进优化程序,修改bug。
腾讯云服务器
mysql数据库
flask后端
软工实践的各次作业分别花费的时间:
作业 | 花费时间 |
---|---|
第一次个人作业 | 4(h) |
第二次个人作业 | 20(h) |
第一次结对作业 | 20(h) |
第二次结对作业 | 45(h) |
第一次团队作业 | 30(h) |
第二次团队作业 | 100(h) |
现场编程作业 | 5(h) |
团队作业beta冲刺 | 80(h) |
在软件工程课程上花费的时间:
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
304(h) | 24(h) | 25(h) |
1.3 印象最深刻的是
毫无疑问,是小组编程阿尔法冲刺的经历。在大约10天的时间里,在白天还要上课的基础上,将原型设计的软件实现出来,我认为这对所有人来说都是一个极大的挑战。但是,在组长的带领下,历经多个日夜的鏖战,我们最终还是完成了大部分重要的功能,使我们的项目初具雏形,能够在发布会上进行展示。那一段时间里,和小组成员在宿舍苦苦熬夜,为实现一个功能感到开心,发现修改一个bug而激动,到现在看来,都是微不足道的小事情,但在当时却是激励我们不断把软件完成下去的动力。当最终看到自己编写的程序成功运行起来,通过二维码展示给大家时,欢欣雀跃,无比自豪的心情无疑是对自己最大的回报。
二、总结收获
2.1 展开说说你的软工实践故事
经验总结:
(以下观点都是建立在自身痛苦经历了总结出来的)
- 一定要养成写代码注释的好习惯:
注释不仅是用来帮助其他人理解你的代码,还是帮助未来的自己。因为一段时间后,可能连你自己也看不懂这段代码(至少花费一定的时间去理解)。 - 前期不要过多的设计细节:
过多的设计细节的功能会大大拖延前期的进度,同时在没有整体完成的基础上,一些小的功能是依赖与其他主要功能的,在大部分模块完成前无法实现。 - 数据库开放后一定记得改一个难一点的密码(一定!!):
搭建好数据库的第一个晚上,熬到三点的我沉沉的睡下了,这时我还不知道明天会发生什么。一早醒来,打开数据库,只看见这样一段话:
All your data is backed up. You must pay 0.0089 BTC to bc1q307y2v8aujqwrej8m9v998yj0m242km989t8d2 In 48 hours, your data will be publicly disclosed and deleted. (more information: go to http://2info.win/mysql)
翻译过来是:你的所有数据都已备份。你必须在48小时内支付0.0089比特币到bc1q307y2v8aujqwrej8m9v998yj0m242km989t8d2这个地址,否则你的数据将被公开披露并删除。(更多信息:请访问http://2info.win/mysql)
(查阅资料发现,大概率是因为root的密码设置的太简单了)
还好我在本地的数据库备份了信息,而且刚开始表中没多少数据,还来得及挽救。
一定切记不能设置简单的密码(特别是123456!!!)
2.2 学习到的新技术或生产力工具以及它们给你带来了哪方面的帮助
技术方面
- 云服务器配置搭建及小程序项目部署
自主搭建了腾讯云服务器并用于配置mysql数据库以及小程序的后端,了解配置域名以及ssl等服务器管理有关方法。
- mysql数据库管理维护
实践了在数据库管理系统课程上学习到的知识,配置,运行,维护数据库,实时监控保证数据安全。
- python-flask后端框架
掌握搭建flask框架体系,开发运行于服务器上,轻量级的后端框架,满足对数据库进行操作的接口需求。实现ai接口的调用。
- vue3框架
了解vuee3前端框架,设置store来管理全局变量,页面的设计,函数的编辑以及接口的调用。
生产力工具
- APIFOX
便捷的编写接口文档,支持根据文档写接口测试,根据文档生成代码,直接发送请求并判断返回格式是否正确。同时,还能用于简单接口自动化测试,可以支持多线程多请求访问。
- HBuilder
前端开发工具,支持内置浏览器预览设计的小程序,且支持一键打包,对小型的程序还可以生成临时查看的二维码
- XShell Xgtp
好用的远程连接服务器的工具,不论是上传文件还是操作终端
- AIGC工具
无论是编写实现某些功能的代码,还是修改代码中bug,以及帮助优化代码,AIGC在本次的课程中都居功至为,可以说全部以上的代码都由AI经手过。(再次感谢kimi,豆包,chatgpt4,)
2.3 技术之外,这门课程还给你带来了哪些方面的提升?
- 抗压能力
面对时间紧迫,任务量繁多的项目开发工作,没有良好的心理抗压能力,很难在日后的职场上坚持下来。 - 协作能力
较大的团队项目不是一个人埋头苦干能够完成的,如何分工,如何对接,如何避免矛盾分歧,都需要在实践中学习掌握。 - 自学能力
学校不可能教会你所需的全部知识。只有不断的自主学习才能跟进时代的潮流,把握机会,成长自己。 - 时间管理能力
在日常课程中挤出时间,分配好每一部分的工作,按部就班的完成,最大化利用时间,才能高效率的完成任务。
2.4 如果还有什么想记录的或者想说的,就写在这儿吧!
虽然我的专业是大数据,未来不一定会从事软件开发相关工作,但是作为一名计算机学院的学生,怎么能没有和伙伴们熬夜开发程序的经历呢。大三上的软件工程课程很好的弥补了这一缺憾,算是让我的计算机学习生涯更加圆满了一些吧。过程中尽管存在种种挫折,可是当这篇博客写到这里,一切都即将结束的时候,或者真的只有一句轻舟已过万重山可以形容此时我的心情了吧。
三、致谢
最想要感谢的人有两位,分别是我们小组的组长和我的结对作业同伴。在他们的帮助鼓励下,我才能在软件工程这门课程上收获如此之多。在遇到问题时有人分享,思考解决。遇到困难时,分工合作,共同化解。情绪低落时,能够一起谈笑抱怨,缓解压力。同时,在困惑时,有人一起探索求真,指引方向。
同时,也感谢张栋,吴越钟老师以及助教们的帮助指导,顺利的完成本学期的软件工程课程。