软件工程课程随笔

(一)目前已具备的能力
我把自己的能力归纳为三个方面:
能力 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 相关的小项目;
  • 相对而言,对操作系统、编译原理这类偏底层的内容兴趣一般,觉得离应用层太远。
    (三)自我评估:
    一还欠缺哪些能力
    坦诚地说,我目前的能力更多停留在"写代码"层面,距离"做软件"还有明显差距:
  1. 缺少工程化思维:不知道一个软件从需求到上线要经历哪些环节,不会做需求分析,也不懂什么是软件架构;
  2. 缺少团队协作经验:到目前为止的项目基本都是一个人完成,没有经历过多人协作、代码评审、任务分工;
  3. 测试意识薄弱:写完代码能跑起来就算完,几乎不写单元测试,更不知道测试用例该怎么设计;
  4. 文档写作能力不足:只写过简单的实验报告,没写过需求文档、设计文档这类工程文档;
  5. 知识不成体系:会的东西比较零散,没有形成自己的技术栈和知识地图。
    二、代码量:现状与目标
    目前的代码量:把课程作业、实验和几个小的课程设计加起来,估计累计约 2000行(C++/Python/前端代码各占一部分)。这个数字并不高,而且其中有相当一部分是照着教程和示例写的,真正自己独立设计、独立完成的内容要打个折扣。
    本学期的目标:希望在软件工程课程结束时,累计代码量能达到 1 万行以上。并且对我而言,质量比数量更重要——希望这些代码大部分来自一个完整的团队项目(走完需求→设计→编码→测试→交付全流程),而不是零散的小作业。
    三、本课程最期待学习的知识与期望收获
    最期待学习的知识:
  6. 需求分析:现实中的需求往往是模糊、变化的,我很好奇软件工程如何把"用户想要什么"一步步变成明确、可实现的规格说明;
  7. 软件架构与设计:一个系统为什么要分层?模块之间怎么划分和通信?UML 图怎么画、怎么用?这些是我目前完全空白的部分;
  8. 团队开发实践:多人如何用 Git 协作而不冲突?代码评审怎么做?敏捷开发(如 Scrum)在真实项目中是如何运转的?
  9. 软件测试:除了"跑起来试试",还有哪些系统性的测试方法?
    期望获得的收获:
  • 完成一次完整的团队项目开发,走一遍真实的软件工程流程;
  • 建立起工程化思维:写代码之前先想清楚需求、设计和测试;
  • 提升协作与沟通能力:学会写文档、做汇报、与队友分工配合;
  • 学会使用更多工程工具(Git 分支管理、CI/CD、项目管理工具等),让开发效率真正提升。
    四、AI 工具生成的学习指南与分析
    【豆包生成的软件工程课程学习指南】
    一、课程定位
    软件工程是研究"如何系统、高效、高质量地开发软件"的学科。它不只是写代码,而是覆盖从想法到交付的全过程。
    二、核心知识模块(建议按顺序学习)
  1. 软件过程与开发模型:瀑布模型、迭代模型、敏捷开发(Scrum)、极限编程(XP);理解"为什么需要过程"。
  2. 需求工程:需求获取(访谈、问卷、原型)、需求分析、需求规格说明书(SRS)的撰写。
  3. 软件设计:架构设计(分层、微服务等)、面向对象设计、UML(用例图、类图、时序图)、设计模式入门。
  4. 编码与代码管理:编码规范、Git 协作流程(分支、Pull Request)、代码评审。
  5. 软件测试:测试基础、单元测试(JUnit/pytest)、测试用例设计(等价类、边界值)、集成测试与系统测试、TDD(测试驱动开发)。
  6. 软件项目管理:任务分解(WBS)、进度管理、团队分工、项目文档(计划、周报、总结)。
  7. 软件质量与维护**:重构、代码可读性、持续集成(CI/CD)概念。
posted @ 2026-09-10 21:23  sudaaaaaa  阅读(7)  评论(0)    收藏  举报