软件工程第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546
这个作业的目标 学会使用博客园的操作、学会使用markdown记录笔记、学会git版本控制与github基本使用操作、设定好自己的目标并展望未来
学号 102301334

一、团队主页

二、个人资料截图

  • 102301334黄伟圣

  • 5487f2f43f85a886c71eea93e2db2bd3

  • image

三、技能树与技术偏好 - 自我评估

3.1 🎯 已具备的专业知识与能力

能力一:编程基础能力

  • 掌握C/C++/Python等编程语言基础,使用SQL控制数据库
  • 掌握面向对象的语言设计基础,能运用其封装、继承与多态特性进行简单的程序设计和类规划
  • 具备基本的代码调试和错误排查能力

能力二:开发工具使用能力

  • 掌握Git进行版本控制的基本方法,如仓库初始化、分支操作、提交、与远程仓库同步作业等,能用GIt进行个人项目的版本管理
  • 掌握VS Code/IntelliJ IDEA等开发环境,了解AI辅助编程开发工具如Cursor等
  • 了解Linux基础命令操作

能力三:基础数据结构与算法的应用能力

  • 能够使用基础数据结构和算法解决问题,例如链表方法、栈、队列、优先队列、树、图算法、各类排序、查找算法等等

3.2 🔥 感兴趣的技术方向

方向一:人工智能与机器学习

  • 当下智能化发展迅速,各行业都将人工智能融入产品,应该追随潮流学习相关知识,了解过机器学习的基本内容,学习过人工智能的相关课程,未来还会尝试实践

方向二:移动应用开发

  • 尝试各类软件开发方向特别是移动应用开发,应用领域更加广泛,进行移动应用软件编程、测试、维护与销售尝试等,也包括Android开发、混合式APP开发、Web前端、软件测试等内容

3.3 📍 需要提升的能力

缺失能力一:项目工程化经验

  • 目前缺乏中大型项目开发经验
  • 需要学习软件设计模式和架构知识
  • 缺乏团队协作开发的实际经验

缺失能力二:[如特定技术深度]

  • 学习的知识深度不足,大部分学的浅而不精,应该多加强某些方面的深度

四、代码量统计与目标

4.1当前代码量统计

  • 估算累计总代码量: 15000-16000行
  • 主要来源:课程作业以及个人小项目的尝试开发,大部分是C/C++实现的算法尝试,还有部分是Python项目编写代码的尝试

4.2本学期代码量目标

  • 目标总代码量: 8000-10000行
  • 计划增量来源:软件工程课程项目、团队协作开发与技术学习练习

五、课程学习期望

5.1 最期待学习的知识

  1. 软件工程方法论

    • 希望系统学习敏捷开发、测试驱动开发等等工程方法
    • 理解软件生命周期管理等
  2. 团队协作技能

    • 学习如何在团队中有效沟通协作,共同完成任务
    • 掌握代码审查、版本管理的更优方法
  3. 项目实战经验

    • 通过实际项目提升项目经验
    • 学习需求分析、系统设计到部署的全流程

5.2 期望收获

  • 通过课程学习提高软件开发素养,提高创造力
  • 通过团队协作,锻炼自己融入集体中协作的能力,为未来就业打好基础
  • 通过软件开发实践锻炼自己后端等方面技术,实现开发一款可用软件的能力

六、软件工程课程学习指南(deepseek生成)与分析

好的,这是一份为你精心制定的《软件工程》本科学习指南。它不仅仅是一份书单或课程大纲,更是一个融合了理论、实践和思维转变的综合性学习方案。


《软件工程》本科生详细学习指南

核心目标

学习《软件工程》的核心目标不是记忆一堆理论,而是完成从一个“程序员”到“软件工程师”的思维转变。程序员关心如何写出代码,而软件工程师关心如何在时间、预算和资源的约束下,协同多人构建可靠、可维护、有价值的软件系统


6.1 学习路线(建议按此顺序循序渐进)

第一阶段:基础概念与思想建立(1-2个月)

  1. 软件工程概览

    • 目标:理解什么是软件工程,为什么需要它。
    • 内容:软件危机的历史、软件工程的定义、基本原则(如分阶段、计划驱动、团队协作)。
    • 关键问题:没有软件工程会怎样?代码和软件产品的区别是什么?
  2. 软件生命周期与开发模型

    • 目标:掌握软件从无到有再到消亡的全过程,以及组织这个过程的不同方法论。
    • 内容
      • 传统模型:瀑布模型、V模型、增量迭代模型。理解其适用场景和优缺点。
      • 敏捷模型ScrumKanban 是必须掌握的。理解用户故事、冲刺、每日站会、看板等核心实践。
      • 现代实践:DevOps、CI/CD(持续集成/持续交付)的概念。

第二阶段:核心工程化环节深入(2-3个月)

  1. 需求工程

    • 目标:学会如何准确理解和定义“用户想要什么”。
    • 内容:需求分类(功能需求、非功能需求)、获取技术(访谈、问卷)、分析方法、需求规格说明书(SRS)的撰写、用例建模。
  2. 软件设计

    • 目标:学会将需求转化为系统的“蓝图”。
    • 内容
      • 设计原则SOLID原则(重中之重)、高内聚低耦合、DRY等。
      • 体系结构设计:常见的架构模式,如分层架构、MVC、微服务架构。
      • 详细设计:UML图(用例图、类图、序列图、活动图),设计模式(至少掌握单例、工厂、观察者等常用模式)。
  3. 软件实现(编码)

    • 目标:写出高质量、可读性强的代码。
    • 内容:编码规范、代码重构、单元测试、结对编程。
  4. 软件测试

    • 目标:系统化地发现和修复缺陷,确保软件质量。
    • 内容:测试级别(单元测试、集成测试、系统测试、验收测试)、测试类型(功能测试、性能测试、安全测试)、测试方法(黑盒、白盒)。
  5. 软件维护与演化

    • 目标:理解软件大部分生命周期成本在于维护。
    • 内容:维护的类型(改正性、适应性、完善性、预防性)、软件再工程、遗留系统处理。

第三阶段:项目管理与职业素养(1个月)

  1. 项目管理

    • 目标:了解如何管理一个软件项目。
    • 内容:项目估算(成本、工作量)、进度计划(甘特图)、风险管理、团队管理与沟通。
  2. 软件配置管理

    • 目标:管理软件资产的变更。
    • 内容:版本控制(Git是核心)、依赖管理、构建管理。

6.2 重点知识点(必须掌握的核心)

  • 思想层面
    • “没有银弹”:认识到软件工程的复杂性和没有万能解决方案的本质。
    • 迭代与增量开发:理解快速反馈和持续交付价值的重要性。
  • 过程/方法论层面
    • 敏捷宣言与Scrum框架:这是现代软件开发的行业标准。
    • 版本控制Git:不仅是commitpush,要理解分支策略(如GitFlow)。
  • 技术/实践层面
    • UML:至少能看懂并能绘制类图、序列图。
    • 设计模式:理解其思想,并能识别在框架和代码中的应用。
    • 单元测试与TDD:理解测试的重要性,并会编写简单的单元测试。
    • CI/CD:理解其基本流程和价值。
  • 文档层面
    • 能阅读并理解软件需求规格说明书设计文档的结构和内容。

6.3 实践建议(将理论付诸行动)

  1. “项目驱动学习”

    • 不要只做课后习题。找一个你感兴趣的中等规模项目(例如:一个简单的电商网站、一个博客系统、一个个人财务管理工具),用你所学的软件工程方法从头到尾做一遍。
    • 实践全过程:从需求分析(写用户故事)、设计(画UML图)、编码(用Git管理,写单元测试)、测试(写测试用例),到最终部署。
  2. 工具链实践

    • Git:在GitHub或Gitee上创建项目,使用特性分支进行开发,提交Pull Request进行代码合并。
    • 项目管理:尝试使用Jira、Trello或腾讯文档等工具来管理你的项目任务和 backlog。
    • CI/CD:在GitHub上尝试使用GitHub Actions,为你的项目配置一个自动构建和运行测试的流水线。
  3. 团队协作

    • 找2-4个同学组成一个团队,共同完成一个项目。这是体验沟通成本协作挑战的最佳方式。
    • 在团队中实践Scrum:定期开站会,划分冲刺,进行冲刺评审和回顾。
  4. 代码阅读与重构

    • 找一些开源项目(如Spring, Django)的代码来阅读,学习别人的设计思想和代码风格。
    • 对你过去写过的“烂代码”进行重构,应用学到的设计原则,你会立刻体会到软件工程的价值。

6.4 指南分析

1. 合理性分析:

  • 结构合理,符合认知规律:指南采用了“总-分-总”的结构。先从宏观思想入手,再深入到具体技术环节,最后回归到项目管理,符合从认识到理解再到应用的认知过程。
  • 内容全面,覆盖核心知识域:指南涵盖了SWEBOK(软件工程知识体系)和大学课程大纲中的所有核心知识点,并且根据现代工业界的实践(如敏捷、DevOps)进行了增补,确保了知识的时效性和实用性。
  • 理论与实践紧密结合:指南没有停留在理论说教,而是通过“实践建议”部分,为每一个理论知识点都提供了可操作的落地方法。特别是“项目驱动学习”和“团队协作”的建议,是掌握软件工程精髓的关键。
  • 重点突出,目标明确:明确指出了“思维转变”是核心目标,并围绕这一目标筛选了重点知识点(如敏捷、Git、设计模式等),避免了学习者陷入庞杂理论的海洋而迷失方向。

2. 对你的帮助分析:

  • 提供清晰的学习地图:对于初学者,软件工程可能显得零散、抽象。这份指南为你提供了一张清晰的“地图”,让你知道要学什么、为什么学、以及先学后学什么,极大地减少了迷茫感。
  • 强调“动手”的价值:它反复强调实践是检验真理的唯一标准。通过引导你亲自做项目、用工具、组团队,能将枯燥的理论转化为深刻的个人经验,真正内化知识。
  • 培养工程师思维,而不仅是编程技能:这份指南的终极价值在于,它引导你关注代码之外的东西:用户需求、系统设计、团队协作、项目管理、质量保障。这正是区分“码农”和“工程师”的关键,对你未来的职业生涯至关重要。
  • 具备前瞻性和实用性:指南中包含的敏捷、Git、CI/CD等内容,是你未来求职和工作中立刻会用到的技能。提前在学校掌握这些,会让你在求职市场上具备显著优势。

可能的挑战与注意事项:

  • 工作量较大:完全按照这份指南执行,需要投入大量的时间和精力。建议你根据课程进度和个人时间,有选择地、分阶段地实施,不必求全。
  • 对个人自律要求高:特别是“项目驱动学习”部分,需要很强的自我驱动力。找一个志同道合的学习伙伴或小组会非常有帮助。
  • 理论深度需自行把握:指南列出了知识范围,但对每个知识的钻研深度需要你结合教材、课堂和自身兴趣来调整。例如,设计模式可以浅尝辄止,也可以深入钻研。

总结:

这份学习指南是一份非常合理且极具帮助的学习框架。它系统性地将软件工程的理念、知识和技术实践融合在一起,为你指明了从入门到精通的道路。如果你能认真遵循其精神,特别是积极投身于实践项目,你不仅能轻松应对《软件工程》这门课程的考试,更能为自己成为一名合格的软件工程师打下坚实的基础。祝你学习顺利!

6.5 个人对deepseek生成的《软件工程》指南的评价

我认为deepseek生成的指南是比较合理的

最初我认为《软件工程》这门课只是教学生平时编写代码的一些技术和知识,实则不然,《软件工程》更包括了软件开发的一个完整的体系和生命周期内容,教学生如何从一个想法到实际,到更高层次的实现,是一套从头到尾的完整开发流程教学。

学习软件工程,最重要的内容是展现好自己的开发素养,以及使用好版本控制工具Git来配合完成团队协作,然后再要学习诸如瀑布模型、增量模型、原型模型与螺旋模型等等模型入门,再从敏捷开发逐步提高,还要有将用户需求转化为软件完善升级的能力,有软件测试、软件优化的能力,巩固这些理论基础来提升实践能力。

总的来说,软件工程不只是学会写代码,而是要全方位照顾到用户需求、开发需求等等方面的一个立体任务,应该是一个开放的,自由的,且须不断维护的项目。

七、编写截图

  • image
  • image
posted @ 2025-10-05 18:22  AcidNaOH  阅读(15)  评论(0)    收藏  举报