个人随笔

自我评估

  1. 已具备的专业知识与能力
  • 掌握计算机专业基础课程:数据结构、算法、操作系统、计算机网络。
  • 具备基础编码能力,会使用C/C++进行简单程序编写。
  1. 感兴趣的技术方向
    AI Agent,AI工具
  2. 现在的代码量以及目标代码量
    目前我的代码总量在2-3千行,主要来自课后作业。
    我的目标代码量在7-8千行。
  3. 在本课程中希望学习到的东西
    我希望学习到团队协作,共同设计一个高质量的软件。
  4. ai生成的学习指南
    以下内容由deepseek生成:

软件工程课程学习指南

一份浓缩的软件工程知识框架,旨在帮助你在短时间内建立从“写代码”到“做产品”的工程化思维。

🎯 课程核心目标

  • 不是教你写更多代码,而是教你组织代码组织团队
  • 掌握将用户需求转化为高可用、易维护软件系统的全过程。
  • 熟悉现代软件开发的主流流程工具链

📚 核心知识体系

1. 需求工程 (Requirement Engineering)

关键在于搞清楚“做什么”,而不仅仅是“怎么做”。

  • 核心任务:需求获取、分析与建模。
  • 主要产出
    • 需求规格说明书 (SRS):正式文档,侧重边界与约束。
    • 用户故事 (User Story):敏捷开发常用,格式为“作为 [角色],我想要 [功能],以便 [价值]”。
  • 重点概念:功能性需求 vs 非功能性需求(性能、安全、可用性)。

2. 软件设计与架构 (Design & Architecture)

从“能跑就行”过渡到“好改、好扩展”。

  • 设计原则:熟记 SOLID 原则(单一职责、开闭原则等),这是面试和重构的高频考点。
  • 常见架构模式
    • 分层架构 (Layered):经典三层(表现层、业务层、数据层)。
    • 微服务 (Microservices):独立部署,适合大型团队。
    • MVC:模型-视图-控制器,Web 开发必备。
  • UML 图:重点掌握 类图时序图,用于团队沟通。

3. 软件质量与测试 (Quality & Testing)

测试不是为了找 bug,而是为了建立信心

  • 测试金字塔(由下往上,投入递减):
    1. 单元测试 (Unit):针对最小函数模块(工具:JUnit, pytest)。
    2. 集成测试 (Integration):验证模块间接口。
    3. 端到端测试 (E2E):模拟用户真实操作(工具:Selenium, Cypress)。
  • TDD (测试驱动开发):先写失败的测试,再写实现代码,最后重构。

4. 项目管理与过程模型 (Process)

软件不是一次写完,而是“螺旋式”演进。

  • 瀑布模型 (Waterfall):严格顺序,适合需求明确的小项目。
  • 敏捷开发 (Agile) - Scrum 框架(当前主流):
    • 核心角色:产品负责人 (PO)、Scrum Master、开发团队。
    • 核心节奏:Sprint 冲刺(通常 1-4 周)、每日站会 (Daily Stand-up)、Sprint 评审与回顾。

🛠️ 现代工程常用工具链

阶段 推荐工具 (主流) 作用说明
项目管理 Jira, Trello, TAPD 跟踪需求和任务进度(Issue 与看板)
版本控制 Git (配合 GitHub / GitLab) 源码托管与协作(必学分支策略:Git Flow)
持续集成 GitHub Actions, Jenkins 自动化构建、测试和部署
代码审查 Gerrit, GitHub PR 流程 保证代码质量与知识传递
文档协作 Confluence, Notion 维护设计文档和会议记录

🗺️ 高效学习路线建议

如果时间有限,建议按以下优先级攻克:

  1. 先跑通一个完整的敏捷周期:找一个简单需求(如“待办事项 App”),从写用户故事开始,到提交代码(PR)并合并,完整走一遍。
  2. 死磕 UML 类图:它串联了“需求”和“代码”,画好类图,代码结构自然清晰。
  3. 硬写单元测试:强迫自己为项目关键函数写至少 3 个单元测试用例,理解“可测性”对代码设计的反向约束。
  4. 不要死记硬背工具:重点理解工具解决了什么痛点(例如:Git 解决协作冲突,CI 解决人工部署失误)。

📖 推荐参考资源

  • 经典书籍:《人月神话》(管理哲学)、《代码大全》(编码实战)、《设计模式》(Head First 版入门极佳)。
  • 开源项目:在 GitHub 上找一个星标高的、使用主流框架(如 Spring Boot / React)的中型项目,阅读其 README 和项目结构,比看论文学得更快。

最后的提醒:软件工程不是“银弹”,没有万能药。遇到问题多问自己:“如果需求明天改了,我的代码要改几行?” —— 这个问题的答案,就是你工程能力的衡量标尺。

我的分析:这个学习指南是合理的。他教我该从何开始,怎么做,为什么这样做等。

posted on 2026-09-08 17:52  10th_cn  阅读(14)  评论(0)    收藏  举报