第一次软工作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering | |
|---|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 | |
| 这个作业的目标 | 自我介绍,初步了解协作开发,明确自己学习目标 | |
| 学号 | 092300124 |
一、团队主页地址
https://github.com/Hannezs/404-Team-Not-Found
二、 当前技能树与技术偏好(自我评估)
1. 目前已具备的专业知识与能力
- 能力 A:扎实的Python编程基础与数据处理能力
描述:熟练掌握Python语法、面向对象编程(OOP)以及常用的数据结构。能够熟练运用NumPy、Pandas进行高效的数据清洗、转换与分析,并使用Matplotlib、Seaborn进行基础的数据可视化。这是我进行任何数据分析或机器学习任务的基础。 - 能力 B:经典的机器学习算法理解与实现能力
描述:理解监督学习(如线性回归、逻辑回归、决策树、SVM、朴素贝叶斯)和无监督学习(如K-Means、PCA)的核心原理。不仅能够调用Scikit-learn库快速搭建模型,更能从零开始实现其中部分算法(如KNN、线性回归)以加深理解,并具备模型评估与调优(交叉验证、网格搜索)的实践经验。
2. 感兴趣的技术方向
- 兴趣方向一:自然语言处理
我对让计算机理解和生成人类语言充满兴趣,特别是大语言模型的微调与应用、文本生成、情感分析等方向。我认为这是当前AI最具潜力和挑战性的领域之一。 - 兴趣方向二:AI基础设施与MLOps
我不仅满足于训练出一个高精度的模型,更对如何将模型可靠、高效地部署到生产环境,并对其进行持续监控和维护感兴趣。这涉及到容器化、模型服务化、流水线自动化等知识,是连接算法与商业价值的关键桥梁。 - 兴趣方向三:计算机视觉的进阶应用
希望在现有图像分类基础上,进一步探索目标检测、图像分割、生成式对抗网络等更复杂的视觉任务。
3. 自觉缺乏或待加强的能力
- 欠缺能力一:大型软件工程的系统化设计与架构能力
描述:目前我的编程经验多集中于算法实现和短平快的课程项目,代码规模较小。我非常缺乏设计一个可扩展、可维护的中大型软件系统的经验,包括如何设计清晰的模块接口、如何管理复杂的项目依赖、如何进行高效的团队协作开发等。 - 欠缺能力二:扎实的计算机系统底层知识
描述:对操作系统、计算机网络、编译原理等基础知识的理解还不够深入,这导致我在进行性能优化或排查一些深层Bug时感到吃力。例如,对并发编程、内存管理、网络协议等理解多停留在表面。 - 欠缺能力三:数据库与系统设计能力
描述:虽然会使用简单的SQL进行查询,但对于数据库的设计原则、索引优化、事务处理等缺乏系统知识。同时,对如何设计一个能支撑高并发的后端系统架构几乎一无所知。
三、 代码量与课程期望
当前代码量估算:累计编写的有效代码(不含作业重复)大约在 8000 - 10000 行 左右,主要集中在机器学习实验、课程作业和小型项目。
本学期课程后期望代码量:期望通过本课程的项目实践,能新增 3000 - 5000 行 高质量、有完整文档和测试的代码,使总代码量有一个质的提升。
四、 对本课程(软件工程)的期望
最期待学习的知识:
系统化的开发流程:希望从头到尾体验一次标准的软件开发生命周期,包括需求分析、系统设计、编码、测试、部署和维护。
团队协作工具与方法:深入学习如何使用Git进行高效团队协作,以及敏捷开发等项目管理方法。
软件设计模式与原则:学习如何写出“优雅”的代码,而不仅仅是“能跑”的代码,了解常用的设计模式和软件设计原则。
希望获得的核心收获:
工程化思维:将从一个“脚本小子”或“算法实验员”转变为一个具备“软件工程师”思维的人,考虑软件的健壮性、可扩展性和可维护性。
完整的项目经验:与团队成员合作,完成一个功能完整、结构清晰的中等规模项目,并将其作为个人作品集的重要组成部分。
解决复杂问题的能力:提升在多人协作、项目规模扩大时,分析、分解和解决复杂技术问题的能力。
五、 关于软件工程学习指南的分析
我选择使用ChatGPT生成一份简单的学习指南,如下所示:
软件工程课程学习指南 (由ChatGPT生成)
1. 掌握基础概念
- 理解软件生命周期(SDLC)、敏捷开发、Scrum等核心方法论。
- 学习需求分析、设计、编码、测试、维护各阶段的任务。
2. 学习建模与设计
- 掌握UML图(用例图、类图、时序图等),用于可视化系统设计。
- 了解设计原则(如SOLID)和常用设计模式。
3. 版本控制与协作
- 精通Git,包括分支策略、合并冲突解决。
- 使用GitHub/GitLab进行团队协作和代码审查。
4. 软件测试
- 学习编写单元测试、集成测试。
- 了解测试驱动开发(TDD)。
5. 项目实践
- 积极参与课程项目,从零开始参与一个完整的小型软件开发。
- 在项目中应用所学工具和方法。
6. 学习资源
- 教材:《软件工程:实践者的研究方法》
- 在线课程:Coursera的Software Engineering专项课程。
分析这份学习指南:
合理性分析:
优点: 这份指南高度合理且全面。它清晰地勾勒出了软件工程课程的核心知识骨架,从理论基础(SDLC、敏捷)到实用技能(Git、UML、测试),再到最终的实践项目,逻辑顺序由浅入深,覆盖了软件工程的关键环节。所推荐的书籍和在线资源也是公认的经典,指南结构符合教学大纲。
对我是否有帮助:
有帮助的方面:它提供了一个非常好的“地图”。作为学生,我可以清晰地看到这门课需要学习的模块有哪些,以及它们之间的关联。这有助于我制定学习计划,查漏补缺,特别是在“建模与设计”和“版本控制与协作”方面,它提醒我这正是我当前所欠缺的。
存在的不足:这份指南的局限性在于它过于纲领化和理想化。它列出了“需要学什么”,但几乎没有涉及“具体怎么学”以及“学习中可能遇到的真实挑战是什么”。例如,它说“精通Git”,但并未指出团队协作中分支管理策略的选择、合并冲突的预防等实际痛点。它更像是一个课程目录,而非一份可操作的学习路径。
我的总结:
这份指南作为一个宏观的学习框架是极佳的,它能确保学习方向不跑偏。但要真正掌握软件工程,我需要在这个框架的指导下,通过大量的项目实践去填充细节,亲身经历并解决指南中未曾提及的、层出不穷的实际问题。本课程正是我进行这种实践的最佳平台。
Markdown编辑器截图:


浙公网安备 33010602011771号