第一次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
这个作业的目标 | 了解git操作,熟练掌握使用markdown的使用方法,增强团队协作能力 |
学号 | 102301337 |
团队网站
https://github.com/b-yx/EchoLogic
个人资料截图
团队LOGO
自我评估
一、具备的专业知识和能力
已熟练掌握c,c++这两门语言的基本语法,例如指针、数组、结构体,能实现链表的增删改查操作
二、对哪类技术方向有兴趣
我对人工智能和机器学习方向有着浓厚的兴趣,希望能探索 AI 在医疗、教育等领域的合规落地,平衡技术效率与数据隐私、伦理安全。
三、觉得自己还缺少的能力
在软件工程领域,对前沿技术与发展趋势的认知常显滞后和表层,尚未形成持续学习、深度追踪新技术的惯性与能力,容易与行业演进节奏脱节。
目前的的代码量及结课后希望能达到的代码量
目前我编写的代码量大约在 5000 行左右
结课后希望达到的代码量:8000行
对课程的期待
希望在软件工程这门课上,我能系统掌握从需求分析到测试部署的全流程,熟悉 Git、敏捷等实用工具与方法,写出更规范易维护的代码;同时跳出单纯编码的局限,建立 “解决问题 + 风险预判” 的工程思维,理解团队分工并学会高效沟通;也期待通过实战项目,应对需求变更、进度把控等真实问题,积累拆解复杂任务的能力,为后续实习和工作打下基础。
软件工程课程学习指南
一、学习前准备:打好基础,明确方向
(一)知识储备
-
回顾核心编程知识
软件工程课程涉及代码编写与优化,课前需回顾已学编程语言(如 Java、Python)的基础语法(循环、条件判断、函数定义等),避免因语法问题影响核心内容吸收。同时复习数据结构(数组、链表、栈、队列、树、图)与算法(排序、查找)的原理及应用场景 —— 在软件设计中,合理选择数据结构与算法是提升软件性能的关键技术考量。
-
了解软件开发常识
通过行业文章、科普视频等渠道,初步掌握软件开发全流程(如 App 从需求提出到上线的核心阶段),认识产品经理、开发工程师、测试工程师等角色的核心职责,为后续学习团队协作与角色分工奠定基础。
(二)工具准备
-
安装必备软件
根据课程要求提前部署工具,具体包括:
-
版本控制工具(Git):从官网下载对应系统安装包,完成基础配置(设置用户名 / 邮箱、生成 SSH 密钥);
-
项目管理工具(Jira/Trello):注册账号并熟悉基础操作(创建任务、分配责任人、设置任务状态);
-
开发框架环境:若课程涉及特定框架(如 Spring Boot、Django),提前下载并配置开发环境,避免课堂实操浪费时间。
- 整理学习资料
-
建立专属文件夹,按 “课程章节”“工具类型” 分类存放课件、文档、操作手册;
-
安装笔记软件(Notion、印象笔记),随时记录学习疑问与重点内容,便于后续查阅。
二、课堂学习:专注高效,积极参与
(一)认真听讲,抓准重点
-
聚焦核心概念与逻辑
课堂重点关注软件工程核心概念,包括:
-
软件生命周期(需求分析→设计→编码→测试→维护)各阶段的目标、任务与常用方法;
-
项目管理模型(瀑布模型、敏捷模型、螺旋模型)的适用场景与优缺点。
需注意:不仅要记忆定义,更要理解逻辑(如 “为何部分项目适合敏捷模型,部分适合瀑布模型”)。
-
记录关键案例与技巧
老师讲解的实际案例需详细记录 “背景→问题→解决方案→效果”,借助案例理解抽象理论;同时标注实用技巧,例如:
-
需求分析时与 “用户” 的高效沟通方法;
-
代码评审的核心检查项;
-
测试用例设计的常用思路(等价类划分、边界值分析)。
(二)主动互动,深化理解
-
积极提问
遇到疑问(如模型执行步骤、工具操作问题)及时举手,提问时需清晰描述困惑,例如:“老师,敏捷开发迭代中若需求发生重大变更,该如何调整计划?”,帮助老师精准解答。
-
参与小组讨论
讨论环节主动分享观点(如 “某项目需求优先级排序的依据”),同时倾听同学视角,通过交流碰撞梳理思路,深化对知识点的理解。
(三)重视实操,及时解决问题
-
紧跟老师操作
实操环节(如 Git 代码提交、Jira 任务创建)集中注意力,每完成一步核对结果;若出现错误,先对照步骤自查(命令输入、软件设置),定位问题根源。
-
主动寻求帮助
自查无果后,及时向老师或操作成功的同学请教,清晰说明 “操作步骤 + 错误提示”,避免问题堆积影响后续学习(如项目推进受阻)。
三、课后巩固:及时复盘,强化记忆
(一)整理笔记,梳理知识框架
-
当天完成笔记整理
课后按 “知识点分类”(软件工程基础概念、开发流程、项目管理方法、工具使用)梳理笔记,用简洁语言重述核心内容;对复杂流程(如软件测试流程),可绘制流程图辅助理解(例:单元测试→集成测试→系统测试→验收测试的顺序与重点)。
-
构建知识体系
每周花 1-2 小时,以 “软件生命周期” 为主线,串联各阶段知识点(需求分析方法→设计原则→编码规范→测试类型→维护内容),明确阶段间的衔接逻辑,避免知识点碎片化。
(二)完成作业,检验学习效果
-
独立完成基础作业
理论类作业(简答、选择)需独立完成,不确定的知识点查阅笔记与教材;批改后分析错题原因,对争议答案及时向老师确认。
-
认真对待编程与设计作业
按软件工程规范完成:
-
明确需求→分析实现思路;
-
进行基础设计(模块划分、类设计);
-
编码并自测(检查功能实现、语法与逻辑漏洞);
-
整理作业报告(需求分析、设计思路、实现过程、测试结果、问题与解决方案)。
-
(三)拓展学习,补充知识盲区
-
阅读推荐资料
选择性阅读老师推荐的书籍(如《软件工程:实践者的研究方法》)、论文或行业报告,深入理解理论与实践;通过报告关注领域趋势(DevOps、AI 在软件工程中的应用)。
-
观看学习视频
在 MOOC 平台(Coursera、中国大学 MOOC)或技术社区(B 站、YouTube)查找优质视频,针对薄弱知识点(如敏捷开发实践、测试工具 Jest 使用)补充学习,借助直观演示快速掌握复杂操作。
四、项目实践:学以致用,积累经验
(一)项目启动阶段:明确目标,做好规划
- 深入理解项目需求
-
与小组成员共同研读需求文档,明确功能目标、用户群体、性能要求;
-
对模糊需求及时与老师确认,通过小组会议梳理 “需求清单”,避免开发方向偏差。
-
制定项目计划
-
拆分任务:将项目拆解为 “需求分析报告撰写→系统设计→模块编码→测试” 等子任务,明确内容、负责人与截止时间;
-
选择管理方法:如采用敏捷开发,确定 Sprint 迭代周期与各迭代目标;
-
录入工具:将计划录入 Jira/Trello,方便跟踪进度。
-
(二)项目开发阶段:分工协作,注重质量
- 明确分工,高效协作
-
按成员特长分工(设计、编码、测试),确保职责清晰;
-
定期召开每日站会,同步任务进展;
-
用 Git 规范代码管理(分支策略、提交流程),避免冲突。
- 重视代码质量与设计规范
-
遵守编码规范(命名、注释),保证代码可读性与可维护性;
-
按设计方案开发,修改设计需小组讨论并评估影响;
-
完成模块编码后自测,排查功能与逻辑问题。
(三)项目测试与交付阶段:全面测试,总结复盘
-
开展多维度测试
小组共同完成:
-
单元测试:验证单个模块功能;
-
集成测试:检查模块间接口;
-
系统测试:测试功能、性能、兼容性;
-
用户验收测试:模拟用户场景验证需求匹配度。
发现问题及时记录、分配修改,复测直至解决。
- 完成项目交付与复盘
-
整理交付资料(需求报告、设计文档、源代码、测试报告、用户手册)并提交;
-
召开复盘会议:分析进度延期原因(需求变更、分工问题)、协作漏洞(沟通不及时),提出改进措施,积累实践经验。
五、常见问题应对:主动解决,避免卡顿
(一)理论知识理解困难
-
用案例辅助:查找与理论(如项目管理模型)相关的实际项目案例,分析应用场景与逻辑;
-
小组讨论:与同学针对难点交流,通过多角度理解找到适合自己的思路;
-
请教老师:讨论无果后,让老师用通俗语言或更多实例讲解。
(二)工具操作不熟练
-
查教程:阅读官方文档或基础教程,反复练习核心操作(如 Git 拉取 / 提交代码、解决冲突);
-
整理笔记:记录工具使用常见问题与解决方案,便于快速查阅;
-
向同学学习:观察操作熟练的同学的方法,学习实用技巧(如 Git 快捷键)。
(三)项目协作出现矛盾
-
及时沟通:召开小组会议,让成员充分表达诉求,避免情绪化争吵;
-
聚焦目标:以项目完成为核心,针对矛盾点(如意见分歧、分工不均)寻找折中方案;
-
寻求协助:内部无法解决时,向老师反馈并请求调解,确保项目正常推进。