软件工程第一次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
这个作业的目标 | 学会使用博客园的操作、学会使用markdown记录笔记、学会git版本控制与github基本使用操作、设定好自己的目标并展望未来 |
学号 | 102301334 |
一、团队主页
二、个人资料截图
-
102301334黄伟圣
-
-
三、技能树与技术偏好 - 自我评估
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 最期待学习的知识
-
软件工程方法论
- 希望系统学习敏捷开发、测试驱动开发等等工程方法
- 理解软件生命周期管理等
-
团队协作技能
- 学习如何在团队中有效沟通协作,共同完成任务
- 掌握代码审查、版本管理的更优方法
-
项目实战经验
- 通过实际项目提升项目经验
- 学习需求分析、系统设计到部署的全流程
5.2 期望收获
- 通过课程学习提高软件开发素养,提高创造力
- 通过团队协作,锻炼自己融入集体中协作的能力,为未来就业打好基础
- 通过软件开发实践锻炼自己后端等方面技术,实现开发一款可用软件的能力
六、软件工程课程学习指南(deepseek生成)与分析
好的,这是一份为你精心制定的《软件工程》本科学习指南。它不仅仅是一份书单或课程大纲,更是一个融合了理论、实践和思维转变的综合性学习方案。
《软件工程》本科生详细学习指南
核心目标
学习《软件工程》的核心目标不是记忆一堆理论,而是完成从一个“程序员”到“软件工程师”的思维转变。程序员关心如何写出代码,而软件工程师关心如何在时间、预算和资源的约束下,协同多人构建可靠、可维护、有价值的软件系统。
6.1 学习路线(建议按此顺序循序渐进)
第一阶段:基础概念与思想建立(1-2个月)
-
软件工程概览
- 目标:理解什么是软件工程,为什么需要它。
- 内容:软件危机的历史、软件工程的定义、基本原则(如分阶段、计划驱动、团队协作)。
- 关键问题:没有软件工程会怎样?代码和软件产品的区别是什么?
-
软件生命周期与开发模型
- 目标:掌握软件从无到有再到消亡的全过程,以及组织这个过程的不同方法论。
- 内容:
- 传统模型:瀑布模型、V模型、增量迭代模型。理解其适用场景和优缺点。
- 敏捷模型:Scrum 和 Kanban 是必须掌握的。理解用户故事、冲刺、每日站会、看板等核心实践。
- 现代实践:DevOps、CI/CD(持续集成/持续交付)的概念。
第二阶段:核心工程化环节深入(2-3个月)
-
需求工程
- 目标:学会如何准确理解和定义“用户想要什么”。
- 内容:需求分类(功能需求、非功能需求)、获取技术(访谈、问卷)、分析方法、需求规格说明书(SRS)的撰写、用例建模。
-
软件设计
- 目标:学会将需求转化为系统的“蓝图”。
- 内容:
- 设计原则:SOLID原则(重中之重)、高内聚低耦合、DRY等。
- 体系结构设计:常见的架构模式,如分层架构、MVC、微服务架构。
- 详细设计:UML图(用例图、类图、序列图、活动图),设计模式(至少掌握单例、工厂、观察者等常用模式)。
-
软件实现(编码)
- 目标:写出高质量、可读性强的代码。
- 内容:编码规范、代码重构、单元测试、结对编程。
-
软件测试
- 目标:系统化地发现和修复缺陷,确保软件质量。
- 内容:测试级别(单元测试、集成测试、系统测试、验收测试)、测试类型(功能测试、性能测试、安全测试)、测试方法(黑盒、白盒)。
-
软件维护与演化
- 目标:理解软件大部分生命周期成本在于维护。
- 内容:维护的类型(改正性、适应性、完善性、预防性)、软件再工程、遗留系统处理。
第三阶段:项目管理与职业素养(1个月)
-
项目管理
- 目标:了解如何管理一个软件项目。
- 内容:项目估算(成本、工作量)、进度计划(甘特图)、风险管理、团队管理与沟通。
-
软件配置管理
- 目标:管理软件资产的变更。
- 内容:版本控制(Git是核心)、依赖管理、构建管理。
6.2 重点知识点(必须掌握的核心)
- 思想层面:
- “没有银弹”:认识到软件工程的复杂性和没有万能解决方案的本质。
- 迭代与增量开发:理解快速反馈和持续交付价值的重要性。
- 过程/方法论层面:
- 敏捷宣言与Scrum框架:这是现代软件开发的行业标准。
- 版本控制Git:不仅是
commit
和push
,要理解分支策略(如GitFlow)。
- 技术/实践层面:
- UML:至少能看懂并能绘制类图、序列图。
- 设计模式:理解其思想,并能识别在框架和代码中的应用。
- 单元测试与TDD:理解测试的重要性,并会编写简单的单元测试。
- CI/CD:理解其基本流程和价值。
- 文档层面:
- 能阅读并理解软件需求规格说明书和设计文档的结构和内容。
6.3 实践建议(将理论付诸行动)
-
“项目驱动学习”:
- 不要只做课后习题。找一个你感兴趣的中等规模项目(例如:一个简单的电商网站、一个博客系统、一个个人财务管理工具),用你所学的软件工程方法从头到尾做一遍。
- 实践全过程:从需求分析(写用户故事)、设计(画UML图)、编码(用Git管理,写单元测试)、测试(写测试用例),到最终部署。
-
工具链实践:
- Git:在GitHub或Gitee上创建项目,使用特性分支进行开发,提交Pull Request进行代码合并。
- 项目管理:尝试使用Jira、Trello或腾讯文档等工具来管理你的项目任务和 backlog。
- CI/CD:在GitHub上尝试使用GitHub Actions,为你的项目配置一个自动构建和运行测试的流水线。
-
团队协作:
- 找2-4个同学组成一个团队,共同完成一个项目。这是体验沟通成本和协作挑战的最佳方式。
- 在团队中实践Scrum:定期开站会,划分冲刺,进行冲刺评审和回顾。
-
代码阅读与重构:
- 找一些开源项目(如Spring, Django)的代码来阅读,学习别人的设计思想和代码风格。
- 对你过去写过的“烂代码”进行重构,应用学到的设计原则,你会立刻体会到软件工程的价值。
6.4 指南分析
1. 合理性分析:
- 结构合理,符合认知规律:指南采用了“总-分-总”的结构。先从宏观思想入手,再深入到具体技术环节,最后回归到项目管理,符合从认识到理解再到应用的认知过程。
- 内容全面,覆盖核心知识域:指南涵盖了SWEBOK(软件工程知识体系)和大学课程大纲中的所有核心知识点,并且根据现代工业界的实践(如敏捷、DevOps)进行了增补,确保了知识的时效性和实用性。
- 理论与实践紧密结合:指南没有停留在理论说教,而是通过“实践建议”部分,为每一个理论知识点都提供了可操作的落地方法。特别是“项目驱动学习”和“团队协作”的建议,是掌握软件工程精髓的关键。
- 重点突出,目标明确:明确指出了“思维转变”是核心目标,并围绕这一目标筛选了重点知识点(如敏捷、Git、设计模式等),避免了学习者陷入庞杂理论的海洋而迷失方向。
2. 对你的帮助分析:
- 提供清晰的学习地图:对于初学者,软件工程可能显得零散、抽象。这份指南为你提供了一张清晰的“地图”,让你知道要学什么、为什么学、以及先学后学什么,极大地减少了迷茫感。
- 强调“动手”的价值:它反复强调实践是检验真理的唯一标准。通过引导你亲自做项目、用工具、组团队,能将枯燥的理论转化为深刻的个人经验,真正内化知识。
- 培养工程师思维,而不仅是编程技能:这份指南的终极价值在于,它引导你关注代码之外的东西:用户需求、系统设计、团队协作、项目管理、质量保障。这正是区分“码农”和“工程师”的关键,对你未来的职业生涯至关重要。
- 具备前瞻性和实用性:指南中包含的敏捷、Git、CI/CD等内容,是你未来求职和工作中立刻会用到的技能。提前在学校掌握这些,会让你在求职市场上具备显著优势。
可能的挑战与注意事项:
- 工作量较大:完全按照这份指南执行,需要投入大量的时间和精力。建议你根据课程进度和个人时间,有选择地、分阶段地实施,不必求全。
- 对个人自律要求高:特别是“项目驱动学习”部分,需要很强的自我驱动力。找一个志同道合的学习伙伴或小组会非常有帮助。
- 理论深度需自行把握:指南列出了知识范围,但对每个知识的钻研深度需要你结合教材、课堂和自身兴趣来调整。例如,设计模式可以浅尝辄止,也可以深入钻研。
总结:
这份学习指南是一份非常合理且极具帮助的学习框架。它系统性地将软件工程的理念、知识和技术实践融合在一起,为你指明了从入门到精通的道路。如果你能认真遵循其精神,特别是积极投身于实践项目,你不仅能轻松应对《软件工程》这门课程的考试,更能为自己成为一名合格的软件工程师打下坚实的基础。祝你学习顺利!
6.5 个人对deepseek生成的《软件工程》指南的评价
我认为deepseek生成的指南是比较合理的
最初我认为《软件工程》这门课只是教学生平时编写代码的一些技术和知识,实则不然,《软件工程》更包括了软件开发的一个完整的体系和生命周期内容,教学生如何从一个想法到实际,到更高层次的实现,是一套从头到尾的完整开发流程教学。
学习软件工程,最重要的内容是展现好自己的开发素养,以及使用好版本控制工具Git来配合完成团队协作,然后再要学习诸如瀑布模型、增量模型、原型模型与螺旋模型等等模型入门,再从敏捷开发逐步提高,还要有将用户需求转化为软件完善升级的能力,有软件测试、软件优化的能力,巩固这些理论基础来提升实践能力。
总的来说,软件工程不只是学会写代码,而是要全方位照顾到用户需求、开发需求等等方面的一个立体任务,应该是一个开放的,自由的,且须不断维护的项目。