软件工程第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
| 这个作业的目标 | 自我介绍,熟悉markdown语法与博客园的博客上传 |
| 学号 | 102301428 |
个人介绍截图

团队主页网址
自我技能评估
C/C++: 熟悉C和C++基础知识,懂得利用各种数据结构解决问题
Java: 懂得利用Java图形化界面,可以完成简单的页面交互,懂得利用Java面向对象编程的特性解决实际问题
Python: 懂得利用Python编程数学建模,可以跑通神经网络的的实验代码
前端: 略懂前端网页的制作,跟随西二在线学习过一段时间的前端知识
Cursor: 使用cursor完成过简单微信小程序的开发,懂得使用AI工具
代码量
两千行左右(可以说是少得可怜)
期望
希望可以深入体验一个像样的项目开发的具体流程,增长自己的技能,向那些大佬们看齐!
学习指南
ChatGPT生成的学习指南如下:
[!TIP]
软件工程学习指南(适用于课堂学习与课程项目)
认真、实用、可落地的一份学习地图 —— 你可以直接贴到博客,拿来当备课/复习/项目参考。
简介
软件工程既是理论也是实践:它包含需求分析、体系结构与设计、实现、测试、部署、维护与项目管理等环节。学这门课不仅是为了通过考试,更重要的是学会把团队合作、工程化流程和质量保证应用到真实软件项目中。
下面这份指南把核心概念、学习顺序、实战技巧和可直接复用的模板都整理好了,目标是帮助你在课程和小组项目里表现稳健、效率更高。
学习目标(到课程结束你应该能做到)
- 能合理撰写和评审需求说明(SRS)与用户故事(User Stories)。
- 能基于需求画出基本的架构与设计图(UML/模块划分)并给出设计理由。
- 熟练使用版本控制(Git)与代码托管(GitHub/GitLab),掌握分支工作流与代码评审流程。
- 会编写单元测试、执行集成测试,理解测试金字塔与测试策略。
- 会进行项目计划、任务分配、进度估算与风险管理(基本的 Scrum/CAN 技能)。
- 掌握常见设计模式、重构和代码质量评估方法。
如何使用本指南
- 先读一遍“核心知识点”部分,建立整体知识框架。
- 按照“学期计划”把每一周的任务拆解到日常学习里:阅读 + 实验 + 小练习。
- 项目实战时优先用“模板”直接套用(Issue、PR、README、会议记录)。
- 考试前用“考前复习要点”自测、做真题或课堂习题。
核心知识点(分门别类,学习时把每项当成一个mini目标)
需求工程(Requirements)
- 功能性需求 vs 非功能性需求(性能/可用性/安全/可维护性)。
- SRS(Software Requirements Specification)的基本结构:简介、总体描述、具体需求、外部接口、约束。
- 用例(Use Cases)与用户故事(User Stories);验收标准(Acceptance Criteria)要明确、可测量。
- 学习建议:练习把一个小应用(如图书管理/投票系统)写成 SRS + 5 个用户故事。
体系结构与设计(Architecture & Design)
- 体系结构风格:分层(Layered)、微服务、MVC、客户端-服务器。
- 设计原则:SOLID、DRY、KISS、YAGNI。
- 设计模式:常见的 GoF 模式(Singleton、Factory、Observer、Strategy、Decorator 等)。
- UML 常用图:用例图、类图、序列图、活动图、部署图。
- 学习建议:画类图 + 序列图解释一次功能实现流程。
实现与编码规范
- 代码风格(命名、注释、函数长度、模块划分)和代码复审(Code Review)。
- 单一职责、模块化、可测试性设计(写出容易做单元测试的代码)。
- 工程化依赖管理(Maven/Gradle/NPM/Conda 等)和构建脚本。
- 学习建议:进行一次代码复审练习,互评并提出 3 条改进建议。
版本控制与协作(Git 与工作流)
- 常用命令:clone、branch、checkout、commit、merge、rebase、push、pull、cherry-pick、stash。
- 工作流:GitFlow / GitHub Flow / Trunk-based development(课程项目常用 GitHub Flow)。
- PR(Pull Request)流程与模板、代码审查清单。
- 学习建议:建立规范的分支策略并在项目里强制实施(PR 必须有 reviewer)。
测试(Testing)
- 单元测试、集成测试、系统测试、验收测试(UAT)。
- 自动化测试与持续集成(CI)。
- TDD(测试驱动开发)基础思想与实践价值。
- 测试覆盖率的利与弊(不要盲追 100%)。
- 学习建议:给每个主要模块写至少 3 个单元测试,集成测试覆盖关键流程。
持续集成 / 持续交付(CI/CD)
- 常见工具:GitHub Actions、GitLab CI、Jenkins、Travis CI。
- 自动化构建、测试、静态代码分析、部署流水线。
- 学习建议:为课程项目配置一个简单的 CI(push 后跑单元测试并生成报告)。
软件质量与度量
- 代码复杂度(Cyclomatic Complexity)、技术债务、静态分析(ESLint、SonarQube)。
- 性能测试、压力测试的基础概念。
- 学习建议:在项目中引入静态代码检查,并在 CI 中运行。
项目管理与过程(Process)
- 瀑布/增量/迭代/敏捷(Scrum、Kanban)简介。
- Scrum 基本仪式:Sprint Planning、Daily Standup、Sprint Review、Sprint Retrospective。
- 估算方法:故事点(Story Points)、单位时间估算(工时)。
- 风险识别与缓解策略。
- 学习建议:在小组项目里实践一次 Sprint(2–3 周),写回顾报告。
维护与文档
- 重要文档:README、安装手册、用户手册、API 文档(Swagger/OpenAPI)、维护日志。
- 代码注释 vs 外部文档:两者互补。
- 学习建议:写一个“开箱即用”的 README(安装、运行、测试、贡献指南)。
推荐教材与在线资源(可作课后深入阅读)
- 《Software Engineering》— Ian Sommerville(经典教材,覆盖面广)
- 《Design Patterns: Elements of Reusable Object-Oriented Software》— Gamma 等(设计模式)
- 《Clean Code》— Robert C. Martin(代码整洁之道)
- 《Refactoring》— Martin Fowler(重构实践)
- 《UML Distilled》— Martin Fowler(UML 精粹)
- 在线课程(Coursera / edX / Udacity / B站相关课程)—— 搜索“Software Engineering / 软件工程”即可找到优质课程。
(注:具体版本或课程链接随时间更新,这里提供书名与方向供选读)
推荐工具清单(从轻量到工程级)
- 编辑器 / IDE:VS Code、IntelliJ IDEA、PyCharm、Eclipse
- 版本控制:Git + GitHub/GitLab/Bitbucket
- CI/CD:GitHub Actions、GitLab CI、Jenkins
- 管理与沟通:Trello、Jira、Notion、Slack、钉钉(按团队选择)
- 构建/依赖:Maven / Gradle / npm / pip / conda
- 测试:JUnit / pytest / Jest / Selenium(UI)
- 容器/部署:Docker、Docker Compose
学期 12 周学习计划(模板,可按课表调整)
周次 主题 目标与任务 第1周 课程导论 + 需求工程 阅读 SRS 模板,完成一个小系统的 5 个用户故事 第2周 需求分析与用例 写 SRS 初稿、画用例图,课堂讨论 第3周 软件架构与设计原则 学习 SOLID、画系统架构图,做架构说明 第4周 UML 与设计模式入门 类图、序列图、学习 3 个常见设计模式 第5周 版本控制与工作流 建 Repo、制订分支策略、练习 PR 流程 第6周 单元测试与 TDD 为模块写单元测试,CI 集成测试触发 第7周 中期项目演示 项目演示 + 代码复审,收集反馈 第8周 持续集成与自动化 配置 CI、自动化测试与构建 第9周 性能与安全基础 性能测试入门、基本安全检查 第10周 项目管理与估算 制定进度计划、识别风险、估算剩余工作 第11周 部署与交付 学习部署流程、撰写部署说明 第12周 最终演示与回顾 最终 demo、撰写项目总结、期末复习
项目实战指南(团队合作必看)
团队角色建议
- Product Owner(需求负责人)
- Scrum Master / Project Manager(进度与流程)
- Tech Lead(架构与代码质量)
- Developers(实现)
- QA(测试)
小团队可合并角色,关键是明确责任。
关键流程(建议)
- 需求 -> 拆分成用户故事 -> 估点 -> 分配任务。
- 每日站会(最多 10 分钟):昨天做了什么、今天计划做什么、阻碍是什么。
- 每个任务对应一个 Issue,并在 PR 中关联 Issue。
- PR 必须:通过 CI、至少 1 个 reviewer、清晰的描述与测试。
- Sprint 结束做 Review 与 Retrospective(写改进项)。
代码评审要点(PR Checklist)
- 是否有清晰的描述?包含变更原因和截图/日志?
- 是否有单元测试?测试是否通过?
- 是否遵循编码规范?是否有重复代码?
- 是否有潜在性能或安全问题?
- 是否影响公共接口(API)?若影响,是否有兼容方案?
实用模板(可直接复制到项目)
README 模板(最小化)
# 项目名 简短一句话描述项目。 ## 运行(快速开始) 1. 克隆仓库: `git clone <repo>` 2. 安装依赖: `pip install -r requirements.txt` 或 `npm install` 3. 运行: `python main.py` 或 `npm start` ## 运行测试 ```bash # 运行单元测试 pytest贡献
- Fork -> 新分支
feature/xxx-> 提交 -> 发 PR- PR 描述写清变更点、关联 Issue、测试说明
联系
## 简单 Issue 模板 ```markdown ### 标题 (简洁描述问题/需求) ### 类型 - [ ] Bug - [ ] 新功能 - [ ] 文档 ### 描述 (详细描述,如何复现/预期行为/截图) ### 优先级 低 / 中 / 高PR 模板
### 关联 Issue Fixes #<issue-number> ### 变更概述 - 做了什么 - 为什么要做 ### 测试说明 - 如何运行测试 - 已通过哪些测试 ### Reviewer 注意点 - 需要重点 review 的地方会议记录模板(Meeting Minutes)
# 会议日期:YYYY-MM-DD ## 参与者 - A, B, C ## 讨论要点 1. 进度更新 2. 风险/阻碍 3. 决议/分工 ## 行动项(Owner - 到期日) - A - 完成模块 X - YYYY-MM-DD推荐的 Commit Message 规范(简洁)
<type>(scope): subject body (可选,描述更详细的变更)type 范例:feat / fix / docs / style / refactor / test / chore
例如:feat(auth): add JWT token refresh
Git 常用速查命令
# 基础 git clone <url> git checkout -b feature/xxx git add . git commit -m "feat: add login" git push origin feature/xxx # 同步主分支 git fetch origin git checkout main git pull git checkout feature/xxx git rebase main # 或者 git merge main # 合并与撤销 git merge feature/xxx git revert <commit> git reset --hard <commit> # 小心使用
考试与作业复习要点
- 理清概念:需求/设计/测试/维护 的界限与相互关系。
- 能画简单 UML(类图、序列图、用例图)。
- 理解并能举例说明设计模式的使用场景。
- 能说明软件生命周期模型的优缺点(瀑布 vs 敏捷)。
- 能说明一条完整的 CI/CD 流水线都包含哪些步骤。
- 作业/项目:优先保证功能正确 + 可运行 + 文档完备,再追求完美。
常见错误与避免建议
- 不写或写得含糊的需求 -> 导致实现偏离预期。
- 没有分支策略 -> 冲突多、回滚难。
- 忽视单元测试 -> 回归问题多且难定位。
- 文档缺失 -> 新成员上手困难。
- 团队沟通不到位 -> 重做或低效。
练习项目(可放进课程作业或简历)
- 图书管理系统(含用户、借还记录、推荐模块)
- 简易社交平台(帖子、评论、点赞)
- 在线投票系统(含身份验证、防刷票、计票)
- 小游戏(多人对战,带记录与排行榜)
每个项目建议:实现最小可交付版本(MVP)→ 写测试 → CI → 部署(Heroku/GitHub Pages/Docker)。
结语(给你的建议)
软件工程最重要的不是单点的技术,而是“把技术组织成流程并保证质量”。课堂上掌握概念,项目里练习流程,代码与文档都要为“他人阅读与长期维护”负责。
按本指南执行一次课程项目,你会收获比单纯写代码更多的工程能力与团队协作经验。
有需要的话我可以:
- 把上面某一部分(例如:12周学习计划、PR 模板或 CI 配置)展开成更详细的步骤;
- 或者把 README/Issue/PR 模板按你项目语言(Python/Java/JS)定制一版。
评价:我觉得写得太牛逼了...这么全面,这么长,考虑得这么细致...感觉我的饭碗要不保了
博文编辑页面的截图


浙公网安备 33010602011771号