沈阳市网站建设_网站建设公司_UI设计师_seo优化
2025/12/28 20:17:21 网站建设 项目流程

一、学期回顾

1. 初期的想象

最初的课程目标与期待

软件工程实践我个人认为或许是本科阶段中比较贴近未来企业开发岗的一门课,能够学习到软件开发的整体流程,多人团队协作,编码层面的高级抽象。当时的想法是,学习了软件工程这么课后,我是否可以编写出一个优秀的,工程性强的项目。

更进一步说,我希望能学习多人的工程项目上的 Git 协作开发的使用,如何增强一个项目的可靠性以及可维护性,以及提高编码能力。

收获

在本次项目开发中,我担任两个职责,分别是 PM 以及 后端开发

对于学习到的内容,就从 PM 和 后端开发 两个职责分别来阐述吧。

首先是 PM,我对如何去管理一个团队有了一个大致的认识,比如一个项目的真正的分工,从需求分析,UI 设计,编码开发,测试部署维护。以及如何去协调各个职位的人员。同时我也学会了使用燃尽图,多维表格等项目管理工具来管理团队。

技术上,最印象深刻的应该是更熟练的掌握了 Git 的使用,比如在多人开发时,如何解决冲突,从曾经只会 add ,commit, push 这几个简单的命令到现在可以熟练地使用分支,PR等方法来更好的管理项目。同时我也对曾经只是概念层面上理解的技术进行了实践,比如对于 CI/CD,过去只是有一个简单的认识,在这次的实践中,为了项目的方便部署也使得我自主的去学习了 Github Workflow 的使用(虽然没有在本次项目中用到)。

不足之处

由于每一次的作业时间有限,我们团队也无法做到每一次的任务都做到完美。比如前后端对接中,虽然事先定义好了接口文档,但是真正对接的过程中,会发现接口文档大量的细节上的模糊,导致对接过程效率十分低下。

2. 投入与产出

  • 累积编写代码约 8k 行左右
  • 担任的职责 PM & 后端开发
  • 每一次作业花费的时间
作业 花费时间
第一次团队作业 5h
第二次团队作业 7h
第一次团队项目作业 10h
第二次团队项目作业 30h
第三次团队项目作业 30h
第四次团队项目作业 30h
累计时间 实际周均时间 预计周均时间
102(h) 7(h) 6(h)

3、印象深刻的

让我印象最深刻的,是Alpha冲刺阶段的前后端联调部分,这一块花费了我们大量的时间,也让我们意识到了自己在编写接口文档的许多不足之处,同时也对我们的 Debug 能力提出了很大的挑战。

首先是联调过程中的类型 BUG。 在进行自测联调时,一个简单的博客信息查询接口始终返回数据格式错误。前端收到的userId和实际返回的不一致。检查代码,我明确将数据库中的BIGINT映射为了Java的Long。问题隐藏在 SpringBoot 中的序列化框架的默认行为中——它可能将较大的Long类型数字序列化为字符串以防止精度丢失。最后我和前端人员确定,将所有的 Long 类型的数字转化为 String 类型进行返回。

还有就是有关核心业务中语音转文字的功能。​ 在实现模拟面试功能时,我接入了阿里云的语音转化服务。本地测试音频上传成功,但在测试过程中却发现转化的文字为空。在排除了网络、编码、音频格式所有可能性后,我陷入了困境。通过进行反复的 Debug —— 我最终得出结论:问题并非出在我的调用逻辑,而是服务商提供的通用模型识别率过低。最终我将服务切换为效果更好的Qwen系列语音识别模型,并通过其API重新实现了集成,识别准确率显著提升。这个过程让我增强了我的 Debug 能力,当一切迹象指向外部依赖时,要有勇气和证据去质疑。

二、总结收获

1. 软工实践故事

  • 首先是初期的几个团队任务,即让我们自主学习 MCP 相关的知识,在这个阶段也是一个从理论到实践的过程,在实践的过程中也是增强了对 MCP 的认识,也让我思考了 MCP 在业务场景中的应用。
  • 接着就到了团队项目
    • 首先是初期的选题,说实话一开始的选题要求是尽量让我们和硬件交互,一时有点不知所措,这不就基本偏向嵌入式开发了?询问过后得知基本的摄像头麦克风也算。。。悬着的心至少放下了,最后确定了一个多元化的博客平台。
    • 接着就到了基本的需求分析了,我们经过讨论确定了大致的功能后,并开始绘制基本 UI,以及设计对应接口。这一部分比较顺利。这一个过程实际上就已经是一个项目构建的前面的基本流程。
    • 接着就是后端开发的编码过程了,在这里我们定义的开发流程是 UI 确定前端,然后需求分析确定后端,最后由后端生成接口文档供前端调用。但是实际开发中却会产生混乱,比如后端接口文档不全,以及前后端接口不一致等问题。我意识到这些问题实际上是必然发生的,在往后进入企业,或许能学习到更加完善的前后端管理机制。
    • 最后是项目的部署与上线,我们使用容器化技术,即使用 Docker/Docker-compose 来部署我们的项目。

通过这次的实践,我将许多本来只存在于脑子的知识应用于实践,我觉得这是一个最大的收获。

2. 学习到的新技术

  1. Git进阶操作与协作模型:深入掌握了rebase、interactive rebase、cherry-pick等命令,用于整理清晰、线性的提交历史。通过实践Git Flow等分支模型,理解了特性分支、发布分支、热修复分支在持续交付中的角色,这使我的版本控制从个人工具升级为支持复杂协作的工程纪律。

  2. GitHub Actions (CI/CD):从零开始编写YAML工作流文件,实现了代码提交后自动运行的流水线:包括代码风格检查、单元测试、构建Docker镜像并推送到镜像仓库。这让我将“持续集成/持续部署”的理念落地,将部署从手动、易错的操作转变为可重复、可信赖的自动化过程。

  3. Docker 与 Docker Compose:

    • Docker:掌握了编写高效Dockerfile的技巧(如多阶段构建),理解了镜像层缓存机制,能够构建轻量化的生产级应用镜像。它解决了“环境一致性”这一老大难问题。
    • Docker Compose:学会了通过一个docker-compose.yml文件,定义和编排包含应用、数据库、缓存、消息队列等的多个容器服务。这让我能在本地一键复现完整的生产环境栈,极大地简化了本地开发、集成测试和演示部署的复杂度。
  4. Model Context Protocol (MCP):这是一项突破性的体验。MCP允许我将项目本地的数据源(代码库、文档、数据库schema文件等)安全地连接到AI助手(如Claude Desktop)。

3. 技术之外

  • 系统性思维与架构视角:我不再只关注单个类或函数,而是习惯思考模块的边界、服务的契约、数据的流向以及组件间的依赖。在解决类型转换、服务集成问题时,我学会了从系统边界和交互协议的高度去分析和设计。
  • 对“生产就绪”的深刻理解:我认识到,能让代码在IDE里运行只是第一步。一个“生产就绪”的交付物,必须考虑配置外部化、日志可观测、健康检查、优雅启停、资源限制、安全策略等一系列非功能性需求。Docker化和编写docker-compose的过程,是这种意识的最好训练。
  • 自主问题定位与解决的能力:面对第三方服务效果不佳、容器编排故障等模糊问题,我形成了一套方法论:首先清晰定义现象,然后提出假设,再设计实验(如对比测试、日志分析、监控指标)来验证假设,最终锁定根因并验证解决方案。这种能力比解决任何一个具体问题都更有价值。

三、致谢

本次实践作业,我想感谢我们团队的每一个成员,大家都为这次的项目做出了很多的贡献,共同进步。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询