软工第一次作业
第一次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
这个作业的目标 | 1、初步学习GitHub,并了解相关操作,建立自己的仓库;2、摸清自己的能力,并制定学习目标。 |
学号 | 102301301 |
一、我们团队的github主页
https://github.com/YQL-light/Groups-warehouses
二、成员资料
目录:
我的:
三、自我评估
已具备的知识与能力
- 熟练运用C、C++语言进行编程:能够熟练使用 C 语言进行面向过程的程序设计,理解指针、链表、栈、队列等的实现。了解 C++ 的类、封装、继承等特性进行初步的面向对象编程,理解其基本思想。
- 初步了解基础的数据结构与算法:了解经典数据结构(线性表、树、图)和基础算法(排序、查找)的理论。
技术兴趣
提高C++编程能力,对前端知识也感兴趣。
目前缺少的能力
- 调试能力弱
- 算法能力薄弱
- 未掌握java、python语言
- 没有相关实践经验
四、代码量
过去:过去两年总共在3000行左右
预期:6000行
五、预期收获
- 学习如何运用 UML 等工具进行软件设计。
- 我渴望亲身体验一次完整的团队项目开发,从头到尾走一遍软件生命周期,并强制自己熟练使用 Git、测试框架、项目管理看板等工程工具。
六、学习指南
deepseek生成如下:
软件工程学习指南:从理论到实践
软件工程不仅仅是“写代码”,它是一套系统化的方法、流程和工具,用于构建高质量、可维护的软件系统。本指南将分为四个阶段,帮助你循序渐进地学习。
第一阶段:核心理念与基础(1-2周)
这个阶段的目标是理解“为什么”,而不仅仅是“怎么做”。
-
什么是软件工程?
- 核心概念:理解软件工程与编程的区别。编程是写代码,而软件工程是包括需求分析、设计、实现、测试、部署和维护的系统工程。
- 关键目标:学习软件工程的四大核心目标:可维护性、可靠性、可扩展性和可用性。
- 重要文档:了解《软件工程宣言》(Agile Manifesto)的核心价值观,建立对现代软件开发的基本认知。
-
软件生命周期模型
- 瀑布模型:理解其线性、阶段化的特点,以及它的优缺点(适用于需求明确的项目)。
- 敏捷开发:重点学习!理解迭代、增量开发、 Scrum 和 Kanban 等框架的核心思想。
- Scrum:了解角色(产品负责人、Scrum Master、开发团队)、工件(产品待办列表、冲刺待办列表)和事件(冲刺计划会、每日站会、评审会、回顾会)。
第二阶段:核心流程与实践(4-6周)
这是软件工程的核心环节,贯穿项目始终。
-
需求分析
- 学会区分:功能需求(系统必须做什么) vs. 非功能需求(系统做得怎么样,如性能、安全性)。
- 学习工具:学会编写用户故事(As a ... I want ... So that ...)或绘制用例图。
-
系统设计
- 架构设计:理解什么是架构,以及常见的模式,如分层架构(表现层、业务逻辑层、数据访问层)。
- 详细设计:学习使用 UML 图进行建模,重点是:
- 类图:表示系统的静态结构。
- 序列图:展示对象之间的动态交互过程。
-
实现(编码)
- 代码规范:学习编写干净、可读的代码。遵循一致的命名规范、适当的注释和代码格式。
- 版本控制:这是必备技能! 熟练掌握 Git 的基本操作:
git clone
,git add
,git commit
,git push
,git pull
- 理解分支(branch)和合并(merge)的概念。
-
测试
- 测试级别:了解单元测试(测试单个函数/类)、集成测试(测试模块间交互)、系统测试(测试整个系统)。
- 测试方法:学会为你的代码编写单元测试(使用 JUnit, PyTest 等框架)。
-
部署与维护
- 基本概念:了解持续集成/持续部署(CI/CD)的简单思想:自动化测试和部署。
- 维护类型:理解纠错性维护(修复bug)、适应性维护(适应新环境)和完善性维护(增加新功能)。
第三阶段:支撑体系与项目管理(2-3周)
-
项目管理
- 估算:了解如何进行粗略的工作量估算(如使用“人天”)。
- 任务分解:学习使用看板工具(如 Trello, 码云 Gitee 的看板)来分解和跟踪任务。
-
协作与工具
- GitHub / GitLab / Gitee:除了 Git 命令,学会使用这些平台的 Pull Request/Merge Request 功能进行代码审查。
- 文档:学会编写清晰的 README.md 文件,说明如何安装、配置和运行你的项目。
第四阶段:综合实践与提升
“知行合一”是学习软件工程的最佳途径。
-
做一个个人项目
- 选题:选择一个你感兴趣的小项目,例如一个简单的待办事项应用、个人博客系统或爬虫。
- 全过程实践:
- 用用户故事描述需求。
- 画一个简单的类图和数据库表设计。
- 使用 Git 进行版本控制,并在 GitHub/Gitee 上托管代码。
- 为核心功能编写单元测试。
- 编写 README 文档。
- 尝试将项目部署到免费的云服务(如 Vercel, Heroku, 或国内的码云Gitee Pages)。
-
加入一个开源项目
- 在 GitHub 上找一个你感兴趣的小型开源项目,从提交 Issue、修复一个简单的 Bug 或改进文档开始,体验团队协作的流程。
推荐学习资源
- 书籍:
- 《代码大全》:软件构建的百科全书。
- 《人月神话》:关于项目管理经典之作。
- 《Head First 设计模式》:理解面向对象设计模式的入门好书。
- 在线课程:
- Coursera: “Software Engineering” 专项课程。
- 中国大学MOOC(慕课网):搜索清华大学、南京大学等名校的《软件工程》课程。
- 工具:
- Git:必备。
- Draw.io:免费的在线绘图工具,可用于画 UML 图。
- Visual Studio Code:轻量级且强大的代码编辑器,拥有丰富的插件生态。
学习心态建议
- 过程重于结果:第一次设计可能很糟糕,代码可能有 bug,这都是学习过程的一部分。
- 沟通是关键:软件工程是团队活动,学会清晰地表达和沟通。
- 保持好奇:技术日新月异,保持学习和探索新工具、新方法的心态。
分析
我认为这份指南整体来说是比较合理的,是一份结构清晰、内容精炼且充实的指南,我应该会大致跟随指南的方向去学习。但它安排的时间很紧凑,个人可能没有办法短时间内一下掌握所有技能,具体还是要根据实际情况做出相应的调整,主要还是随着实践项目的展开而不断深入学习,动手实践是掌握软件工程唯一且最重要的方法。