软件工程第一次作业:随笔
一、技能树梳理以及自我评估
- Python:可完成简单脚本,能调用深度学习框架复现实验,不擅长复杂工程开发。
- C/C++:学习过基础语法,但是刷题、项目练习少,编程能力有待提升。
- HTML:了解基础标签语法,不能独立完成页面开发。
- 理论基础:了解图机器学习(CS224w)、深度学习相关知识,理论理解优于动手实践。
- 工具能力:Git、Markdown、conda环境管理,能够完成基础操作。
欠缺能力:完整软件项目开发经验、前后端开发能力、单元测试、项目架构设计、规范工程化编码。
代码量统计
当前代码量约3000-4000
课程结束希望达到代码量:8000
课程期待
希望通过软件工程课程学习完整软件生命周期,学习需求分析、项目协作、测试、文档编写相关知识。弥补自己工程实践短板,学会规范开发项目,提升代码质量,建立工程思维。
二、AI生成软件工程学习指南以及个人分析
软件工程课程学习指南
核心目标:将“编写代码”提升为“构建系统”,学会用工程化的方法规模化、高质量地交付软件。
第一阶段:核心思想与底层逻辑(地基)
- 什么是软件工程:不同于编程,它是关于时间、成本、质量的平衡艺术,核心是应对复杂性。
- 软件生命周期:牢记经典瀑布模型(需求->设计->开发->测试->部署->维护),它是所有敏捷方法的背景板。
- 关键误区:避免“一上来就写代码”,前期分析(需求、风险)的价值远大于后期修补。
第二阶段:开发流程与方法论(骨架)
- 敏捷开发(必考/必用):
- 核心理念:迭代交付、拥抱变化、客户参与。
- 关键实践:Scrum(冲刺、每日站会、回顾会) + 看板(可视化工作流)。
- 一句话总结:小步快跑,频繁验收,而不是憋大招。
- 需求工程:学会写用户故事(As a... I want... So that...),这是连接用户与开发的桥梁。
- 软件设计:
- 掌握 高内聚、低耦合 的设计原则。
- 了解经典的 SOLID 原则(至少理解单一职责和开闭原则)。
- 会画 UML类图 和 时序图,这是团队沟通的通用语言。
第三阶段:工程化核心技能(实操生存技能)
- 版本控制(Git):必会
add,commit,push,pull,branch。分支策略推荐学习 Git Flow 或 GitHub Flow。 - 自动化测试:
- 单元测试(JUnit/Pytest):保证代码基本单元的质量。
- 集成测试:验证模块间接口。
- TDD(测试驱动开发):先写测试,再写代码,这会显著提升你的设计能力。
- CI/CD(持续集成/持续交付):理解“代码提交后自动构建、自动测试、自动部署”的流水线概念(如GitHub Actions)。
第四阶段:管理与保障(团队与质量)
- 软件度量:关注几个关键指标——代码覆盖率、缺陷率、吞吐量。
- 项目管理:学会使用燃尽图(Burn-down Chart)跟踪进度,用WBS(工作分解结构)拆分任务。
- 软件维护:记住大部分成本在维护阶段,因此代码的可读性和注释至关重要。
学习地图与实战建议
| 阶段 | 时间分配 | 核心任务 |
|---|---|---|
| 理论期 | 20% | 通读教材目录,理解瀑布与敏捷的区别,搞懂UML图。 |
| 工具期 | 30% | 强制练习:用Git管理一个个人小项目,并编写单元测试。 |
| 实战期 | 50% | 项目驱动:找一个非课程作业的题目(如仿写某APP后端),完整走一遍从需求分析到部署的流程。 |
避坑指南(重点看)
- 工具比理论更救命:写文档前,先学会用Markdown;画图前,先会用Draw.io;协作前,先学会Git分支。
- 测试代码也是代码:不要认为写测试是浪费时间,它是你在大型项目中安心重构的护身符。
- 保持“重构”意识:写完功能后,至少花10分钟优化命名和结构,这比多写一个功能更有价值。
期末/面试高频考点速查
- 概念:软件危机、软件过程、模块化、信息隐藏。
- 对比:瀑布 vs 敏捷,黑盒 vs 白盒,集成测试 vs 系统测试。
- 计算:计算圈复杂度、项目关键路径(CPM)。
- 设计:用类图表示一个设计模式(如单例、工厂)。
最终行动建议:从今天起,每次写代码前问自己三个问题——“给谁用?”(需求)、“怎么验?”(测试)、“能复用吗?”(设计)。
祝学习顺利,早日从“码农”思维进阶为“工程师”思维!如果对某个具体环节(如Git操作或UML画法)有更深入的需求,随时可以问我。
- 夯实基础,熟练Git版本控制,掌握分支、提交、合并等操作;理解软件生命周期,熟悉需求分析、系统设计、编码、测试、维护各个阶段。
- 多阅读优秀开源项目源码,学习成熟项目的代码规范、模块划分思路。
- 坚持动手实践,从小项目起步,完整走完需求构思、编码、测试、写文档的全流程,不要只写零散片段代码。
- 重视文档习惯,学会编写README、接口说明文档,文档是项目不可缺少的部分。
- 养成测试意识,学会单元测试,写完代码进行测试,而不是直接运行。
三、个人分析:
这份指南内容具有一定的合理性,比较贴合软件工程课程的学习重点。Git、文档、测试、完整项目流程正是我目前薄弱的地方。平时我大多写零散实验代码,很少完整完成一套项目。今后做练习不能只追求功能跑通,同时要注重代码规范、注释、文档与测试,不能只停留在调包复现,要更多锻炼工程实践能力。
浙公网安备 33010602011771号