软件工程第一次作业:随笔

一、技能树梳理以及自我评估

  1. Python:可完成简单脚本,能调用深度学习框架复现实验,不擅长复杂工程开发。
  2. C/C++:学习过基础语法,但是刷题、项目练习少,编程能力有待提升。
  3. HTML:了解基础标签语法,不能独立完成页面开发。
  4. 理论基础:了解图机器学习(CS224w)、深度学习相关知识,理论理解优于动手实践。
  5. 工具能力:Git、Markdown、conda环境管理,能够完成基础操作。

欠缺能力:完整软件项目开发经验、前后端开发能力、单元测试、项目架构设计、规范工程化编码。

代码量统计

当前代码量约3000-4000
课程结束希望达到代码量:8000

课程期待

希望通过软件工程课程学习完整软件生命周期,学习需求分析、项目协作、测试、文档编写相关知识。弥补自己工程实践短板,学会规范开发项目,提升代码质量,建立工程思维。

二、AI生成软件工程学习指南以及个人分析

软件工程课程学习指南

核心目标:将“编写代码”提升为“构建系统”,学会用工程化的方法规模化、高质量地交付软件。

第一阶段:核心思想与底层逻辑(地基)

  1. 什么是软件工程:不同于编程,它是关于时间、成本、质量的平衡艺术,核心是应对复杂性
  2. 软件生命周期:牢记经典瀑布模型(需求->设计->开发->测试->部署->维护),它是所有敏捷方法的背景板。
  3. 关键误区:避免“一上来就写代码”,前期分析(需求、风险)的价值远大于后期修补。

第二阶段:开发流程与方法论(骨架)

  1. 敏捷开发(必考/必用)
    • 核心理念:迭代交付、拥抱变化、客户参与。
    • 关键实践:Scrum(冲刺、每日站会、回顾会) + 看板(可视化工作流)。
    • 一句话总结:小步快跑,频繁验收,而不是憋大招。
  2. 需求工程:学会写用户故事(As a... I want... So that...),这是连接用户与开发的桥梁。
  3. 软件设计
    • 掌握 高内聚、低耦合 的设计原则。
    • 了解经典的 SOLID 原则(至少理解单一职责和开闭原则)。
    • 会画 UML类图时序图,这是团队沟通的通用语言。

第三阶段:工程化核心技能(实操生存技能)

  1. 版本控制(Git):必会 addcommitpushpullbranch。分支策略推荐学习 Git FlowGitHub Flow
  2. 自动化测试
    • 单元测试(JUnit/Pytest):保证代码基本单元的质量。
    • 集成测试:验证模块间接口。
    • TDD(测试驱动开发):先写测试,再写代码,这会显著提升你的设计能力。
  3. CI/CD(持续集成/持续交付):理解“代码提交后自动构建、自动测试、自动部署”的流水线概念(如GitHub Actions)。

第四阶段:管理与保障(团队与质量)

  1. 软件度量:关注几个关键指标——代码覆盖率缺陷率吞吐量
  2. 项目管理:学会使用燃尽图(Burn-down Chart)跟踪进度,用WBS(工作分解结构)拆分任务。
  3. 软件维护:记住大部分成本在维护阶段,因此代码的可读性和注释至关重要。

学习地图与实战建议

阶段 时间分配 核心任务
理论期 20% 通读教材目录,理解瀑布与敏捷的区别,搞懂UML图。
工具期 30% 强制练习:用Git管理一个个人小项目,并编写单元测试。
实战期 50% 项目驱动:找一个非课程作业的题目(如仿写某APP后端),完整走一遍从需求分析到部署的流程。

避坑指南(重点看)

  • 工具比理论更救命:写文档前,先学会用Markdown;画图前,先会用Draw.io;协作前,先学会Git分支
  • 测试代码也是代码:不要认为写测试是浪费时间,它是你在大型项目中安心重构的护身符。
  • 保持“重构”意识:写完功能后,至少花10分钟优化命名和结构,这比多写一个功能更有价值。

期末/面试高频考点速查

  1. 概念:软件危机、软件过程、模块化、信息隐藏。
  2. 对比:瀑布 vs 敏捷,黑盒 vs 白盒,集成测试 vs 系统测试。
  3. 计算:计算圈复杂度、项目关键路径(CPM)。
  4. 设计:用类图表示一个设计模式(如单例、工厂)。

最终行动建议:从今天起,每次写代码前问自己三个问题——“给谁用?”(需求)、“怎么验?”(测试)、“能复用吗?”(设计)。

祝学习顺利,早日从“码农”思维进阶为“工程师”思维!如果对某个具体环节(如Git操作或UML画法)有更深入的需求,随时可以问我。

  1. 夯实基础,熟练Git版本控制,掌握分支、提交、合并等操作;理解软件生命周期,熟悉需求分析、系统设计、编码、测试、维护各个阶段。
  2. 多阅读优秀开源项目源码,学习成熟项目的代码规范、模块划分思路。
  3. 坚持动手实践,从小项目起步,完整走完需求构思、编码、测试、写文档的全流程,不要只写零散片段代码。
  4. 重视文档习惯,学会编写README、接口说明文档,文档是项目不可缺少的部分。
  5. 养成测试意识,学会单元测试,写完代码进行测试,而不是直接运行。

三、个人分析:

这份指南内容具有一定的合理性,比较贴合软件工程课程的学习重点。Git、文档、测试、完整项目流程正是我目前薄弱的地方。平时我大多写零散实验代码,很少完整完成一套项目。今后做练习不能只追求功能跑通,同时要注重代码规范、注释、文档与测试,不能只停留在调包复现,要更多锻炼工程实践能力。

posted @ 2026-09-07 22:47  cwfeng  阅读(24)  评论(0)    收藏  举报