软件工程第一次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
这个作业的目标 | 学习团队合作开发,自我介绍,配置git环境 |
学号 | 102301331 |
团队主页网址
https://github.com/Boshsama/IG-theshyBigHorseHead
个人资料截图
团队logo截图
自我评估
能力 A:c++和c的使用
- 掌握基本语法规则和语法,能独立编写中小型程序(如命令行工具、简单算法实现);熟悉指针、内存管理及多文件编译,了解面向对象思想(类、继承、多态)在 C++ 中的应用。
能力 B:数据结构与算法
- 熟悉常见数据结构(数组、链表、栈、队列、树、哈希表)的原理及实现,能运用基本算法(排序、查找、递归)解决问题,了解时间复杂度和空间复杂度分析。
能力 C:基本的版本控制与开发工具使用能力
- 熟练使用 VS Code、GCC 等编译调试工具,掌握 Git 基本操作(提交、分支、合并),能借助调试工具定位代码错误。
主要短板不足:
- 项目经验不足:缺乏大型项目或团队协作开发经验,对模块化设计、代码规范的实践较少。
- 代码量不足:算法题练习量和实际项目代码编写量有限,面对复杂场景时思路不够灵活。
代码量
目前的代码量估计在2000-3000行以内,希望通过本次课程能达到1w左右的代码量
软件工程课程学习指南
软件工程以“系统化、可落地”的方法解决软件从需求到退役的全流程问题,核心是跳出“单人写代码”的局限,掌握团队协作与质量管控能力。本指南梳理关键学习内容,兼顾理论与实践。
一、核心学习目标
- 建立工程思维:理解“流程规范”“文档记录”“质量测试”对软件维护的意义,区别于个人编程的随意性;
- 掌握核心能力:能独立完成需求梳理、简单设计、基础测试,会用工具支撑开发协作;
- 适应团队模式:明确开发中不同角色(开发、测试、产品)的配合逻辑,能处理小型项目中的需求变更与代码冲突。
二、分阶段学习重点
阶段1:基础认知(2周)
- 理论入门:
- 理解软件生命周期:需求分析→软件设计→编码实现→测试验收→部署维护,明确每个阶段的核心产出(如需求文档、设计图);
- 掌握2类主流开发模型:瀑布模型(线性流程,适合需求稳定场景,如政务系统)、Scrum敏捷模型(2-4周迭代,适合互联网项目快速试错)。
- 工具实操:
- Git:掌握git init(初始化)、git add/commit(提交)、git branch/checkout(分支)、git merge(合并)、git pull/push(远程同步),解决简单代码冲突;
- 文档与绘图:用Markdown写需求笔记(标题、列表、代码块),用DrawIO画用例图(描述用户与系统交互)、流程图(梳理业务逻辑)。
- 小实践:分析GitHub上1个小型开源项目(如简易工具类项目),用Markdown写500字笔记,说明其可能采用的开发模型及理由。
阶段2:核心流程深化(3周)
- 需求分析:
- 方法:通过“用户故事”(如“作为学生,我想查询成绩,方便了解学习进度”)梳理需求,排除模糊表述(如“界面好看”→“符合Material Design规范”);
- 产出:简化版《需求规格说明书》,包含功能需求(如“登录、查询”)和非功能需求(如“响应时间≤2秒”)。
- 软件设计:
- 概要设计:按“高内聚、低耦合”拆分模块(如“图书管理系统”拆分为用户模块、图书模块、借阅模块),画模块结构图;
- 详细设计:细化模块内逻辑,如“登录模块”需明确输入(账号密码)、验证流程、数据存储(用户表:id、username、password),画类图或流程图。
- 编码与测试:
- 编码:遵循对应语言规范(C++参考Google规范,Java参考阿里手册),注重变量命名、注释清晰(如函数用途、参数含义);
- 测试:用黑盒测试方法写测试用例(等价类划分:如登录时“正确账号+正确密码”“错误账号+正确密码”;边界值分析:如密码长度6-16位,测试5位、16位、17位),输出《测试用例表》。
阶段3:综合实战(3周)
- 项目准备:3-5人组队,选小型项目(如简易待办APP、学生成绩管理系统、图书馆借阅系统),明确分工(1人负责需求与设计,2-3人编码,1人测试与文档)。
- 流程落地:
- 迭代开发:按敏捷简化流程,2周1个迭代,每天10分钟站会同步进度(昨天做什么、今天计划、遇到的问题);
- 核心产出:需求文档、设计图(模块图+流程图)、可运行代码(提交到GitHub,每次提交写清晰注释,如“完成待办添加功能”)、测试报告(记录Bug及修复情况)。
- 复盘总结:项目结束后,团队一起分析问题(如“需求没确认导致编码返工”“代码冲突处理耗时”),输出1份改进清单(如“下次先让产品确认需求再编码”“每天下班前同步远程代码”)。
三、关键避坑与建议
- 别轻视理论:理解“为什么要做需求文档”“为什么需要测试”,避免“上来就写代码”,减少后期返工;
- 别忽略文档:代码提交时同步更新文档,避免“代码改了,文档还是旧的”,方便团队协作与后续维护;
- 别害怕冲突:遇到Git代码冲突,先和相关开发者沟通修改内容,再协商合并方案,不要强行覆盖代码;
- 别追求完美:优先保证“流程完整”,再优化功能细节,小型项目重点是练流程,而非做复杂功能。
四、推荐学习资源
- 教材:《软件工程导论》(张海藩,打基础)、《敏捷软件开发:原则、模式与实践》(辅助理解敏捷);
- 工具:Git(版本控制)、DrawIO(画图)、Postman(Web项目接口测试)、Teambition(任务管理);
- 实战:B站“黑马程序员-图书管理系统”(跟着做完整项目)、GitHub(找星数少的小型项目学习代码组织);
- 视频:B站“王道计算机考研-软件工程”(快速梳理理论知识点)。
指南合理性分析
- 贴合课程定位:从理论到实战的阶段划分,符合“认知→应用→落地”的学习规律,适配学生从零基础到能做小型项目的能力进阶;
- 聚焦核心痛点:针对学生常犯的“重编码轻流程”“忽略文档”“怕冲突”等问题,给出具体避坑建议,实用性强;
- 资源易获取:推荐的教材、工具、实战教程多为免费或低成本资源,学生可快速上手,无门槛障碍;
- 时间规划合理:总周期8周(2+3+3),每阶段任务量适中,兼顾课程学习与课后实践,避免任务过载。