第一次软工作业

这个作业属于哪个课程 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编辑器截图:

image

posted @ 2025-10-05 18:16  reasomn  阅读(21)  评论(0)    收藏  举报