软件工程第一次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
这个作业的目标 | 自我介绍,完成团队仓库的创建,配置git环境 |
学号 | 112301521 |
团队网站
https://github.com/Boshsama/IG-theshyBigHorseHead
个人资料截图
团队logo截图
技能树与技术偏好
技能树
能力 A:c与cpp的使用
已系统学习并理解 C / C++ 的基础语法、数据类型、指针与内存管理机制。能够熟练运用类与对象进行问题建模,掌握封装、继承、多态等基本面向对象编程思想。能够独立实现常见的数据结构,如二叉树、链表、堆栈、队列、图等。具备一定的 STL(标准模板库)使用经验,能灵活调用容器与算法库函数解决实际问题。
能力 B:算法与数据结构
已系统学习并掌握常见数据结构(数组、链表、栈、队列、堆、树、图等)的实现原理与应用场景。熟练理解与使用排序、查找、贪心、动态规划、图论等核心算法思想。能够将算法模型与实际问题相结合,独立完成从建模、求解到优化的全过程。具备分析算法时间复杂度与空间复杂度的能力,能在多种方案中进行权衡与优化选择。有一定的刷题与实战经验,能够灵活应对不同类型的问题(如竞赛题、工程问题)
能力 C:一些开发工具使用能力
熟练掌握 Git 的基本工作流程(分支、合并、冲突解决等),能进行个人或小型团队项目的版本管理。熟练使用 Visual Studio、VS Code 等常用开发环境进行项目开发与调试。熟悉 CMake、Makefile 等构建工具的基本使用方法,能够编写简单的构建脚本。具备一定的调试与性能分析能力,能够使用调试器和内存分析工具定位问题。有一定的工程化思维,能够合理组织代码结构,撰写清晰的注释与文档,提升代码可读性与可维护性。
主要短板与不足
项目经验不足
目前缺乏将所学知识系统整合到完整项目开发中的实践机会。在团队合作方面经验不足,对多人协作开发、分工管理、代码规范等实际工程问题的体会还不够深入。对项目全流程的整体把控能力尚待培养。
代码量不足,实践深度不够
现阶段的代码量主要停留在千行级别,以课程作业、练习题或算法实现为主。缺少中大型项目中跨模块、跨层次的编码经验,对复杂工程的调试与维护还不够熟悉。编码习惯和工程化思维尚待进一步锻炼。
学识尚浅
目前的知识储备主要集中在基础语法、常见算法与数据结构,对更高层次的领域(如操作系统原理、计算机网络、数据库系统、并发编程等)理解仍不够深入。对部分算法的优化技巧和复杂度分析还停留在初步阶段,对底层实现原理缺乏系统性研究。在前沿方向(如人工智能、分布式系统、高性能计算)的接触有限。
代码量
目前的代码量仅停留在千行级别,希望通过后续的团队工作,自我学习,代码量能达到1w
期望的课程收获
希望通过软件工程这门课,我能够了解软件开发的流程,模型,原型设计等,能够学会前后端的开发,开发引擎的使用,能够通过团队配合,协作,完成自己的项目,开发出期望的软件。
软件工程学习指南
一、学习周期
- 以一学期(约 4 个月,16 周)为学习周期,可根据个人实际情况进行灵活调整。
- 建议每周保持 理论学习 + 实践任务 并行,形成知识和能力的双向巩固。
二、阶段划分与学习内容
(一)第一阶段:基础入门与概念构建(第 1–3 周)
学习目标
- 理解软件工程的基本概念与目标。
- 掌握软件生命周期、传统与现代软件过程模型。
- 学会需求工程的基础方法。
学习内容
- 软件工程基础
- 阅读《软件工程:实践者的研究方法》入门章节。
- 理解软件工程的定义、目标与价值。
- 梳理软件生命周期的阶段(需求 → 设计 → 编码 → 测试 → 维护)。
- 软件过程模型
- 学习瀑布模型、V 模型的原理、优缺点与适用场景。
- 重点掌握敏捷开发与 Scrum 框架,理解迭代式开发思想。
- 需求工程
- 区分功能需求与非功能需求。
- 学习用户故事的编写。
- 练习绘制用例图(推荐工具:Draw.io、StarUML)。
实践任务
- 选择一个小项目(如 学生管理系统)。
- 用自然语言编写需求说明,撰写用户故事。
- 绘制该系统的用例图。
(二)第二阶段:设计与建模能力提升(第 4–6 周)
学习目标
- 掌握软件设计原则与常见架构风格。
- 熟练使用 UML 进行系统建模。
学习内容
- 设计原则
- 理解高内聚、低耦合思想。
- 学习 SOLID 设计原则。
- 体系结构设计
- 学习 MVC、C/S 架构模式的概念与适用场景。
- UML 建模
- 掌握类图(描述静态结构)与时序图(描述对象交互)。
实践任务
- 为学生管理系统绘制 类图,明确类之间的关系(继承、聚合、关联)。
- 选择一个核心流程(如选课),绘制 时序图。
(三)第三阶段:构建与质量保障实践(第 7–12 周)
学习目标
- 熟练使用 Git 进行版本管理。
- 掌握基本的软件测试方法,能编写单元测试。
- 提升代码的可维护性和工程化水平。
学习内容
- 版本控制(Git)
- 掌握仓库初始化、提交、推送、拉取等操作。
- 学习分支创建、合并与冲突解决。
- 在 GitHub 上进行实战练习。
- 软件测试
- 理解单元测试、集成测试、系统测试的差异。
- 区分黑盒与白盒测试。
- 使用 JUnit(Java)/pytest(Python) 进行单元测试编写。
- 编码实践
- 学习命名规范、注释规范,提升代码可读性。
- 了解常见设计模式(单例、工厂、观察者等)。
实践任务
- 在 GitHub 上为学生管理系统创建项目仓库。
- 提交代码、建立分支并合并。
- 为核心类或方法编写单元测试。
- 按照编码规范优化项目代码。
(四)第四阶段:项目管理与维护认知(第 13–16 周)
学习目标
- 掌握项目管理与任务分解方法。
- 理解软件维护的类别与重要性。
学习内容
- 项目管理基础
- 学习 WBS(工作分解结构)、进度估算、风险管理。
- 熟悉常见协作工具(Trello、Jira、Notion)。
- 软件维护
- 学习维护分类:修正性、适应性、完善性。
- 理解软件生命周期中维护的地位与价值。
实践任务
- 使用 Trello/Jira 对学生管理系统进行任务分解与进度规划。
- 假设系统需适配新操作系统,撰写维护方案。
三、学习资源
书籍
- 《软件工程:实践者的研究方法》
- 《Head First 设计模式》
- 《重构:改善既有代码的设计》
在线资源
- Coursera、EdX 软件工程课程
- B 站/YouTube 软件工程与 Git 教程、UML 建模教程
工具
- 版本控制:Git、GitHub/GitLab
- 建模工具:Draw.io、StarUML
- IDE:IntelliJ IDEA、Eclipse、PyCharm、VS Code
- 测试框架:JUnit、pytest
- 项目管理:Trello、Jira、Notion
四、学习评估
1. 阶段评估
- 每阶段完成实践任务,并与同学/导师交流。
- 检查是否达到阶段目标(如能绘制 UML、能写单元测试)。
2. 综合评估
- 学期末对项目进行总结:
- 项目是否覆盖了软件生命周期的关键环节?
- 自己在需求、设计、编码、测试、管理等方面的成长?
- 后续需要补充或强化的环节?
学习指南的分析
这份结构完整涵盖了软件工程的核心要素:需求、设计、编码、测试、管理与维护。保证了理论与实践结合。阶段划分科学,先概念 → 再建模 → 接着实现 → 最后管理与维护,符合软件工程的生命周期逻辑。每阶段目标明确,内容循序渐进。通过以上学习指南,我可以弥补项目经验不足,系统体验“完整项目”,正好弥补短板。提升实践深度,代码量会随着 UML 建模、Git 管理、单元测试、重构逐渐增加。此外还能拓展知识面学习过程模型、UML、设计模式、测试、项目管理,能帮我从“算法 & 数据结构”转向“工程方法论”,拓展知识广度。不仅如此,工程素养养成也是很重要的一方面,学习指南强调团队协作工具、版本控制、编码规范,这对以后做团队项目或实习很有帮助。能培养规范化、工程化思维,而不仅仅是写能跑的程序。