软件工程第一次作业

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

个人介绍截图

fd31623e608f82574f6c4e8b4ffb5d78

团队主页网址

FantasyRL/HachimiONanbayLyudou: Fuzhou University Software Engineering Group “HachimiONanbayLyudou” Public Repository (2025)

自我技能评估

C/C++: 熟悉C和C++基础知识,懂得利用各种数据结构解决问题

Java: 懂得利用Java图形化界面,可以完成简单的页面交互,懂得利用Java面向对象编程的特性解决实际问题

Python: 懂得利用Python编程数学建模,可以跑通神经网络的的实验代码

前端: 略懂前端网页的制作,跟随西二在线学习过一段时间的前端知识

Cursor: 使用cursor完成过简单微信小程序的开发,懂得使用AI工具

代码量

两千行左右(可以说是少得可怜)

期望

希望可以深入体验一个像样的项目开发的具体流程,增长自己的技能,向那些大佬们看齐!

学习指南

ChatGPT生成的学习指南如下:

[!TIP]

软件工程学习指南(适用于课堂学习与课程项目)

认真、实用、可落地的一份学习地图 —— 你可以直接贴到博客,拿来当备课/复习/项目参考。


简介

软件工程既是理论也是实践:它包含需求分析、体系结构与设计、实现、测试、部署、维护与项目管理等环节。学这门课不仅是为了通过考试,更重要的是学会把团队合作、工程化流程和质量保证应用到真实软件项目中。
下面这份指南把核心概念、学习顺序、实战技巧和可直接复用的模板都整理好了,目标是帮助你在课程和小组项目里表现稳健、效率更高。


学习目标(到课程结束你应该能做到)

  • 能合理撰写和评审需求说明(SRS)与用户故事(User Stories)。
  • 能基于需求画出基本的架构与设计图(UML/模块划分)并给出设计理由。
  • 熟练使用版本控制(Git)与代码托管(GitHub/GitLab),掌握分支工作流与代码评审流程。
  • 会编写单元测试、执行集成测试,理解测试金字塔与测试策略。
  • 会进行项目计划、任务分配、进度估算与风险管理(基本的 Scrum/CAN 技能)。
  • 掌握常见设计模式、重构和代码质量评估方法。

如何使用本指南

  1. 先读一遍“核心知识点”部分,建立整体知识框架。
  2. 按照“学期计划”把每一周的任务拆解到日常学习里:阅读 + 实验 + 小练习。
  3. 项目实战时优先用“模板”直接套用(Issue、PR、README、会议记录)。
  4. 考试前用“考前复习要点”自测、做真题或课堂习题。

核心知识点(分门别类,学习时把每项当成一个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(测试)

小团队可合并角色,关键是明确责任。

关键流程(建议)

  1. 需求 -> 拆分成用户故事 -> 估点 -> 分配任务。
  2. 每日站会(最多 10 分钟):昨天做了什么、今天计划做什么、阻碍是什么。
  3. 每个任务对应一个 Issue,并在 PR 中关联 Issue。
  4. PR 必须:通过 CI、至少 1 个 reviewer、清晰的描述与测试。
  5. 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

贡献

  1. Fork -> 新分支 feature/xxx -> 提交 -> 发 PR
  2. PR 描述写清变更点、关联 Issue、测试说明

联系

邮箱:2176354244@qq.com

## 简单 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)定制一版。

评价:我觉得写得太牛逼了...这么全面,这么长,考虑得这么细致...感觉我的饭碗要不保了

博文编辑页面的截图

image

posted @ 2025-10-01 17:56  nbdxwbl  阅读(35)  评论(0)    收藏  举报