软件工程课程随笔
(一)目前已具备的能力
我把自己的能力归纳为三个方面:
能力 A:编程语言基础
- 学过 C/C++,能用它完成数据结构课程中的算法实现(链表、树、排序、图等),对指针、内存管理和基础数据结构有较扎实的理解;
- 会用 Python 编写脚本和简单的数据处理程序,熟悉基本语法、函数、类与常用标准库;
- 了解 Java 的基本语法,但没有用 Java 做过完整项目,熟练度一般。
能力 B:Web 开发基础 - 掌握 HTML、CSS 和基础 JavaScript,能独立写出静态页面,会做一些简单的页面交互(表单校验、DOM 操作等);
- 了解前后端分离的基本概念,跟着教程用 Node.js/Express 写过一次简单接口,目前处于"能照猫画虎"的阶段。
能力 C:数据与工具链 - 会使用 MySQL 完成建库、建表、增删改查等基本操作;
- 会用 Git 的常用命令(add、commit、push、pull、clone),主要通过 GitHub/Gitee 管理课程作业;
- 熟悉 VS Code 等开发工具,会使用简单的调试功能。
(二)技术偏好 - 对 Web 前端开发比较感兴趣:喜欢"所见即所得"的反馈,对页面布局、交互设计有兴趣;
- 对人工智能应用方向保持好奇:平时会关注 AI 工具的使用(比如这次作业就是用 AI 生成学习指南),也希望以后能用 Python 做点 AI 相关的小项目;
- 相对而言,对操作系统、编译原理这类偏底层的内容兴趣一般,觉得离应用层太远。
(三)自我评估:
一还欠缺哪些能力
坦诚地说,我目前的能力更多停留在"写代码"层面,距离"做软件"还有明显差距:
- 缺少工程化思维:不知道一个软件从需求到上线要经历哪些环节,不会做需求分析,也不懂什么是软件架构;
- 缺少团队协作经验:到目前为止的项目基本都是一个人完成,没有经历过多人协作、代码评审、任务分工;
- 测试意识薄弱:写完代码能跑起来就算完,几乎不写单元测试,更不知道测试用例该怎么设计;
- 文档写作能力不足:只写过简单的实验报告,没写过需求文档、设计文档这类工程文档;
- 知识不成体系:会的东西比较零散,没有形成自己的技术栈和知识地图。
二、代码量:现状与目标
目前的代码量:把课程作业、实验和几个小的课程设计加起来,估计累计约 2000行(C++/Python/前端代码各占一部分)。这个数字并不高,而且其中有相当一部分是照着教程和示例写的,真正自己独立设计、独立完成的内容要打个折扣。
本学期的目标:希望在软件工程课程结束时,累计代码量能达到 1 万行以上。并且对我而言,质量比数量更重要——希望这些代码大部分来自一个完整的团队项目(走完需求→设计→编码→测试→交付全流程),而不是零散的小作业。
三、本课程最期待学习的知识与期望收获
最期待学习的知识: - 需求分析:现实中的需求往往是模糊、变化的,我很好奇软件工程如何把"用户想要什么"一步步变成明确、可实现的规格说明;
- 软件架构与设计:一个系统为什么要分层?模块之间怎么划分和通信?UML 图怎么画、怎么用?这些是我目前完全空白的部分;
- 团队开发实践:多人如何用 Git 协作而不冲突?代码评审怎么做?敏捷开发(如 Scrum)在真实项目中是如何运转的?
- 软件测试:除了"跑起来试试",还有哪些系统性的测试方法?
期望获得的收获:
- 完成一次完整的团队项目开发,走一遍真实的软件工程流程;
- 建立起工程化思维:写代码之前先想清楚需求、设计和测试;
- 提升协作与沟通能力:学会写文档、做汇报、与队友分工配合;
- 学会使用更多工程工具(Git 分支管理、CI/CD、项目管理工具等),让开发效率真正提升。
四、AI 工具生成的学习指南与分析
【豆包生成的软件工程课程学习指南】
一、课程定位
软件工程是研究"如何系统、高效、高质量地开发软件"的学科。它不只是写代码,而是覆盖从想法到交付的全过程。
二、核心知识模块(建议按顺序学习)
- 软件过程与开发模型:瀑布模型、迭代模型、敏捷开发(Scrum)、极限编程(XP);理解"为什么需要过程"。
- 需求工程:需求获取(访谈、问卷、原型)、需求分析、需求规格说明书(SRS)的撰写。
- 软件设计:架构设计(分层、微服务等)、面向对象设计、UML(用例图、类图、时序图)、设计模式入门。
- 编码与代码管理:编码规范、Git 协作流程(分支、Pull Request)、代码评审。
- 软件测试:测试基础、单元测试(JUnit/pytest)、测试用例设计(等价类、边界值)、集成测试与系统测试、TDD(测试驱动开发)。
- 软件项目管理:任务分解(WBS)、进度管理、团队分工、项目文档(计划、周报、总结)。
- 软件质量与维护**:重构、代码可读性、持续集成(CI/CD)概念。

浙公网安备 33010602011771号