第一次软工作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24/homework/15628
这个作业的目标 个人介绍
学号 3124005526
https://github.com/dave66688/software-engeneering/tree/main
一、 当前技能树与技术偏好
在正式步入《软件工程》这门课程之前,我对自己目前的技术积累做了一次较为系统的复盘。作为大二学生,我认为目前正处于从“会写代码”向“写好代码”过渡的关键阶段。

  1. 目前具备的专业知识与能力
    能力 A:扎实的后端开发基础(Java 技术栈)
    过去一年多,我主要深耕后端领域。目前熟练使用 Java 进行编程,掌握了 Spring Boot 框架的核心机制,包括 IoC(控制反转)、AOP(面向切面编程)以及整合 MyBatis 进行数据库操作。我已经能够独立设计并实现基于 RESTful API 的简单后端服务,并具备基本的 MySQL 数据库设计能力(如索引优化、多表关联查询)。

能力 B:算法与数据结构应用能力
得益于对算法竞赛(如 LeetCode、Codeforces)的长期投入,我拥有较强的 算法设计与分析 能力。我熟练掌握数组、链表、树、图等基础数据结构,能够运用贪心、动态规划、回溯等算法解决实际问题。这种能力让我在解决后端高并发场景下的资源调度、缓存淘汰策略等问题时,具备更底层的逻辑优化思维。

能力 C:版本控制与 Linux 环境操作
我熟悉 Git 的工作流(如 Git Flow),能够使用 GitHub 进行团队协作中的代码管理和冲突解决。同时,我具备 Linux 服务器的基础运维能力,能够独立完成项目在云服务器上的部署、环境变量配置以及基本的 Shell 脚本编写。

  1. 感兴趣的技术方向
    目前我对 分布式系统架构 与 中间件开发 有浓厚的兴趣。我渴望了解在真实的工业级场景下,如何通过微服务架构(如 Spring Cloud)解决高并发、高可用的问题。具体来说,我对 Redis 缓存穿透/雪崩的解决方案、消息队列(如 RabbitMQ/Kafka)在系统解耦中的应用,以及数据库的分库分表策略非常着迷。

  2. 当前缺乏的能力
    欠缺 A:工程化规范与文档能力
    虽然能写出能运行的代码,但我写的代码往往缺乏规范的注释、清晰的 API 文档(如 Swagger 配置不完整),且没有形成严格的项目文档(如需求文档、概要设计)。这导致我的代码在移交或长期维护时,可读性和可维护性较差。

欠缺 B:系统设计与架构思维
目前的我更擅长“解决单个技术点”,而缺乏“解决复杂业务系统”的全局观。在面对一个复杂的业务需求时,我常常不知道如何从零开始进行模块划分、如何设计高内聚低耦合的架构,以及如何平衡开发成本与系统性能。

欠缺 C:团队协作与项目管理经验
目前的大多数项目都是个人项目或仅有两三人的小项目,缺乏在规范流程下的团队开发经验。对于需求变更管理、测试驱动开发(TDD)、代码审查(Code Review)等敏捷开发流程,我仍停留在理论层面,没有实战经验。

二、 代码量现状与目标
当前代码量: 约8000行

说明: 这部分代码主要来自课程大作业、个人练手的 Spring Boot 项目(如博客系统、电商秒杀 Demo)以及算法竞赛的刷题记录。虽然数量尚可,但其中包含大量的重复性 CRUD 代码和实验性质的测试代码。

课程期望代码量: 2万及以上

目标: 希望通过本学期的团队项目,不仅追求代码量的增长,更追求代码质量的提升。我希望能够写出更符合企业级规范的代码,且有效代码(核心业务逻辑、算法实现)占比能达到 60% 以上。

三、 最期待在课程中的收获
在开课之前,我查阅了软件工程的核心内容,我最期待的收获主要集中在以下三点:

“从零到一”的系统设计实战经验:
我希望通过课程大作业,能够体验完整的软件开发生命周期(SDLC)。我不满足于只是写接口,我希望学会如何进行需求分析、绘制 UML 图(用例图、类图、时序图),并理解这些设计图是如何指导后续编码的。

团队协作下的规范落地:
我期待在分组项目中,体验真正的 Git 团队协作(如通过 Pull Request 提交代码、进行 Code Review)。我想学习如何在一个团队中保持代码风格统一、如何编写有意义的 Commit Message,以及如何通过有效的沟通解决技术分歧。

测试与质量保证的实践:
过去的我写完代码都是“手动点一点”就认为完成了。我期待在课程中学习 单元测试(JUnit)、集成测试 以及 性能测试 的编写方法,理解自动化测试在保障软件质量中的重要性,摆脱“野路子”开发的习惯。

四、 AI 生成的学习指南及合理性分析

  1. 学习指南(由“通义千问”生成)
    《软件工程》课程学习指南

一、 课程定位与目标
软件工程是一门指导软件开发和维护的工程学科,旨在培养学生从工程化角度构建高质量、高可靠性软件的能力。本课程不仅关注编码,更关注过程管理与团队协作。

二、 核心知识模块

软件过程与生命周期: 重点掌握瀑布模型、敏捷开发(Scrum)、迭代模型的特点与适用场景。

需求工程: 学会如何进行需求获取、分析与规格说明,掌握数据流图(DFD)和用例图(Use Case)的绘制。

软件设计: 理解高内聚低耦合原则,掌握结构化设计与面向对象设计(OOD),熟练使用 UML(统一建模语言)进行类图、时序图、状态图的建模。

软件测试: 区分黑盒测试(等价类划分、边界值分析)与白盒测试(逻辑覆盖),掌握 Junit 单元测试框架的基本使用。

项目管理与团队协作: 了解 Git 工作流、燃尽图的使用,理解 CMMI 与 ISO 标准的基本概念。

三、 学习策略

理论结合实践: 不要死记硬背概念,要将瀑布模型、敏捷开发应用到课程大作业中,体会不同模型的优缺点。

善用工具: 熟练使用 Project(或在线协作工具)管理进度;使用 Postman 进行接口测试;使用 Git 进行版本控制。

重视文档: 软件工程的核心在于“沟通”,文档是沟通的桥梁。务必认真撰写需求文档、设计文档和测试报告。

  1. 指南的合理性与帮助分析
    合理性分析:
    这份由 AI 生成的学习指南整体上是非常合理且全面的。它准确地抓住了软件工程这门课的“灵魂”——即 “工程化”。它没有像普通教程那样只罗列知识点,而是将知识点分为了过程、需求、设计、测试、管理五大核心模块,这与大学本科软件工程课程的主流教学大纲高度吻合。

对我的帮助与启发:

明确了学习重心:
指南中强调“UML 建模”和“软件设计”,这正好填补了我“欠缺 B(系统设计能力)”的短板。它提醒我,这门课的重点不是去纠结某一行代码怎么写,而是如何把脑海中的逻辑转化为团队都能看懂的设计图。

纠正了学习误区:
指南中提到的“不要死记硬背概念”对我很有启发。我以前的思维是“技术驱动”,认为只要技术够硬就行。但这份指南让我意识到,对于软件工程来说,过程管理和沟通成本同样重要。例如,选择瀑布模型还是敏捷开发,并不是单选题,而是要根据项目规模来权衡,这刷新了我对“管理”的认知。

提供了实操抓手:
指南在策略部分列出了具体的工具(如 Postman, Project, Git)。作为后端方向的学生,我虽然会用 Git,但在团队中规范使用 Git Flow 还不熟练;虽然写接口,但用 Postman 做自动化测试还不深入。这让我明确了在课程实践中需要刻意练习的具体工具点。

不足与补充:
如果让我对这份 AI 指南稍作补充,我认为它缺少对 “软件维护” 和 “软件演化” 的强调。在真实的工业界,维护阶段的成本远高于开发阶段。我期望在课程中,除了学会如何构建软件,也能学习如何设计出易于维护和易于扩展的软件。
image

posted @ 2026-03-22 16:11  ilcperry  阅读(0)  评论(0)    收藏  举报