作业1
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
这个作业的目标 | 完成 GitHub 主页个人介绍,完成团队主页搭建;生成符合团队特色的 Logo;撰写博客,进行作业展示和自我评估,并在博客中展示和反思学习成果。 |
学号 | 102301405 |
团队主页 | https://github.com/YQL-light/Groups-warehouses |
自我介绍截图
一、技能树与技术偏好(自我评估)
(一)已具备的专业知识和能力
- 数学基础能力:扎实掌握高数知识,能够运用数学思维分析实际问题,比如在处理数据优化、算法复杂度分析等问题时,可借助高数中的极限、导数等知识进行推导;同时掌握线性代数的矩阵运算、向量空间等内容,为后续机器学习中的矩阵操作奠定了良好基础。
- 编程与数据结构能力:具备 C 语言基础,熟练掌握指针、结构体的基本用法,能够使用 C 语言实现简单的程序开发,例如编写数据结构相关的底层代码(链表的创建、插入、删除,栈和队列的基本操作等);还掌握一定基本的 Golang 语言,了解 Golang 的基本语法和简单的并发编程思想。
- 计算机系统认知能力:学习了数据结构课程,熟悉链表、栈、队列、二叉树等常见数据结构的实现与应用,比如知道如何用二叉搜索树提升数据查找效率,在处理有序数据查询场景时,能合理选择该数据结构优化查询性能;通过计算机组成原理课程,了解了软硬件交互逻辑,明晰程序在底层的运行机制,比如清楚指令的执行过程、内存的分配与管理方式,这有助于在程序开发中更好地进行内存优化和性能调优。
(二)感兴趣的技术方向
- 计算机视觉方向:尤其关注图像识别、目标检测的实际应用场景。例如在自动驾驶中的环境感知方面,期望了解如何通过计算机视觉技术识别道路上的车辆、行人、交通信号灯等元素,为自动驾驶决策提供准确依据;在医学影像中的病灶识别领域,好奇如何利用相关技术辅助医生更精准地发现影像中的病灶区域,提高疾病诊断的效率和准确性。
- 嵌入式技术:重点关注嵌入式系统在智能硬件、工业控制及物联网(IoT)领域的应用。在智能硬件方面,希望深入研究消费级嵌入式产品(如智能手环、智能家居控制器)的开发逻辑,理解如何通过嵌入式芯片(如 STM32、ESP32)实现传感器数据采集、低功耗控制及与手机 APP 的交互功能;在工业控制领域,好奇嵌入式系统如何保障工业设备(如 PLC 控制器、机床自动化模块)的实时性与稳定性,确保生产流程的精准运行;在物联网场景中,期待了解嵌入式终端如何实现数据的边缘计算与远程传输,搭建 “感知层 - 网络层 - 应用层” 的完整物联网链路。
(三)目前缺少的能力
- 深度学习实践能力:仅具备基础理论认知,缺乏主流深度学习框架(如TensorFlow、PyTorch)的实际操作经验,无法独立完成模型搭建与训练。
- Python编程能力:当前未系统掌握Python编程技巧,而Python是AI领域的核心开发语言,该技能缺失会限制计算机视觉方向的技术实践。
- 软件工程系统开发能力:缺乏软件工程相关的系统开发经验,不熟悉软件开发的完整流程(如需求分析、系统设计、编码实现、测试部署、维护迭代),在团队协作开发、项目管理、代码规范制定与执行等方面能力不足,难以参与大型软件项目的开发工作。
4.嵌入式开发实践能力:虽对嵌入式方向感兴趣,但目前缺乏嵌入式系统开发的核心技能,比如不熟悉嵌入式 C 语言的底层编程(如寄存器操作、中断处理)、实时操作系统(RTOS,如 FreeRTOS、uC/OS)的使用,也未掌握嵌入式硬件调试工具(如示波器、J-Link 仿真器)的操作方法,无法独立完成从嵌入式硬件选型到软件编程、调试的完整开发流程。
二、代码量现状与目标
(一)当前代码量
截至目前,累计代码量约8000-9000 行(原表述存在笔误,修正为合理区间),代码类型覆盖 C/C++、汇编、Golang、Python,以课程作业为主,个人项目为辅。
当前代码局限:
功能层面:以单一模块、独立功能为主,缺乏多模块协同的系统性开发经验;
技术层面:未涉及高并发(如多线程、分布式)、复杂硬件交互、跨语言集成相关代码;
项目规模:均为小型项目或实验性代码,未参与过团队协作的中大型软件项目,缺乏工程化的代码管理与规范实践。
(二)本学期课程完成后希望达到的代码量
目标累计代码量提升至15000-18000 行,新增代码聚焦 “跨模块协同”“工程化实践”“兴趣方向进阶” 三大核心。
三、最期待在课程中学习到的知识与收获
- 软件工程理论与方法知识:希望深入学习软件工程的核心理论知识,如软件需求分析方法、软件设计模式(如单例模式、工厂模式、观察者模式等)、软件测试策略(单元测试、集成测试、系统测试的方法与工具使用)、软件项目管理(如进度规划、风险控制、团队协作流程)等,了解软件开发的标准化流程和最佳实践,树立正确的软件开发理念。
- 实际项目开发经验:期待通过课程项目实践,参与从需求分析、系统设计到编码实现、测试部署的完整软件开发过程,掌握项目开发中常用的工具(如版本控制工具 Git、项目管理工具 Jira、代码审查工具 SonarQube 等)的使用方法,提升团队协作能力和问题解决能力,能够独立完成小型软件项目的开发,为后续从事计算机视觉方向工程项目开发积累经验。
- 跨学科知识融合能力:希望在课程学习中,能够将软件工程知识与之前所学的数学、数据结构、编程语言等知识相结合,例如在项目开发中,合理运用数据结构优化程序性能,利用数学知识进行算法设计与分析,同时探索软件工程方法在人工智能领域(尤其是计算机视觉方向)和嵌入式领域的应用 —— 在计算机视觉方向,学习如何对相关软件项目进行需求分析和系统设计;在嵌入式方向,了解如何将软件工程的模块化设计、测试流程应用于嵌入式系统开发,确保嵌入式软件的可靠性与可维护性,实现跨学科知识的融合应用。
- 嵌入式与软件工程结合的实践思路:期待在课程中接触到嵌入式软件项目的开发案例,学习如何将软件工程的规范(如需求文档编写、版本控制、测试流程)应用于嵌入式开发场景,例如如何对嵌入式设备的控制软件进行需求拆解、如何设计模块化的嵌入式软件架构以适配不同硬件模块、如何通过单元测试保障嵌入式软件的稳定性,为后续将软件工程能力与嵌入式技术结合打下基础。
- 工程化与团队协作能力:通过课程项目的团队协作,学习项目任务拆解、进度管理、代码审查、冲突解决等实践技能,掌握工程化的文档编写规范与代码管理方法,弥补现有代码 “缺乏系统性、工程化” 的局限,为后续参与中大型项目奠定基础。
四、豆包生成的《软件工程》学习指南及分析
(一)课程核心目标
- 掌握软件工程的基本概念、原理和方法,理解软件开发的完整生命周期,能够从系统的角度看待软件项目开发。
- 具备软件需求分析、系统设计、编码实现、测试验证、项目管理的基本能力,能够参与小型软件项目的开发与管理工作。
- 培养良好的软件开发习惯和团队协作意识,熟悉软件开发过程中的规范与标准,为后续从事软件相关工作奠定坚实基础。
(二)分阶段学习计划
1. 基础入门阶段(第1-4周)
- 核心内容:理解软件工程定义、生命周期(瀑布模型、敏捷模型等)、需求分析方法(如用例图、需求文档编写)。
- 学习方法:每周阅读1章教材(如《软件工程导论》),完成2个需求分析案例练习(如“校园图书管理系统”需求梳理),记录核心概念笔记。
- 工具学习:初步了解Visio(画用例图)、Markdown(写需求文档)。
2. 系统设计与编码阶段(第5-10周)
- 核心内容:学习系统架构设计(模块化划分、数据库设计)、编码规范(命名规则、注释要求)、版本控制工具Git的使用。
- 学习方法:小组协作完成1个小型项目设计(如“学生成绩管理系统”),分工完成架构图绘制、数据库表设计、核心模块编码;每周提交1次Git代码,记录代码提交日志。
- 实践任务:针对自己的编码模块,编写单元测试用例(如输入异常值、边界值的测试),提升代码健壮性。
3. 测试与项目交付阶段(第11-16周)
- 核心内容:掌握软件测试方法(黑盒测试、白盒测试)、测试用例设计、项目文档整合(设计文档、测试报告、用户手册)。
- 学习方法:对小组项目进行完整测试,记录Bug并修复;整合所有项目文档,形成标准化交付包;参与班级项目答辩,学习其他小组的设计思路。
- 拓展任务:尝试使用简单测试工具(如JUnit for Java、PyTest for Python),了解自动化测试基础。
(三)关键学习资源
- 教材:《软件工程导论(第6版)》(张海藩)、《Head First 设计模式》(辅助理解设计原则)。
- 在线资源:B站“软件工程公开课(哈工大)”、Git官方教程(https://git-scm.com/book/zh/v2)、LeetCode“软件工程相关编程题”(练编码规范)。
- 工具:Visio(画图)、Git(版本控制)、Jira(简易项目管理,可选)。
(四)常见问题与解决建议
- 问题:需求分析不全面,后续开发中频繁变更需求。
建议:前期多与“用户”(如模拟的客户、小组同学)沟通,用思维导图梳理需求边界,形成书面需求文档并确认,避免口头需求。 - 问题:团队协作中代码冲突频繁。
建议:规范Git使用流程(如先拉取远程代码再提交、分分支开发),定期召开小组会议同步开发进度,及时解决冲突。 - 问题:测试阶段遗漏Bug,影响项目质量。
建议:按“功能点+异常场景”设计测试用例,采用“交叉测试”(小组内成员互测对方模块),确保测试覆盖全面。
五、学习指南合理性与帮助分析
- 合理性分析
- 符合学习规律:指南按“基础-实践-交付”分阶段设计,与软件工程“需求-设计-编码-测试”的生命周期匹配,从理论到实践逐步深入,避免学习断层,适合有一定编程基础(如C语言、数据结构)的学习者。
- 贴合实际需求:强调Git、测试用例、项目文档等实用技能,这些技能不仅是课程必备,还能直接适配后续AI项目开发(如用Git管理深度学习模型代码、用文档梳理视觉项目需求)与考研复试(复试中可展示课程项目文档与协作经验),与你的考研规划和计算机视觉方向目标契合。
- 资源与问题解决方案具体:推荐的教材、在线课程、工具均为软件工程领域常用资源,且针对需求变更、代码冲突等常见问题给出可操作建议,降低学习难度。
- 对我的帮助
- 明确学习重点:帮助我聚焦“需求分析”“Git使用”“测试用例设计”等核心技能,避免在学习中盲目刷题、忽视项目流程。
- 支撑考研与技术方向:指南中的小组项目实践可提升我的项目开发能力,后续在考研复试中可作为实践案例展示;Git、文档编写等技能也能适配计算机视觉方向的团队研发(如与他人协作优化图像识别模型代码)。
- 弥补能力短板:指南中“编码规范”“单元测试”等内容,能解决我当前“代码仅能实现功能、缺乏规范性与健壮性”的问题,为后续学习Python、深度学习框架打下规范编程的基础。