软工第一次作业
第一次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
这个作业的目标 | 1. 了解github的基础操作以及如何在github上提交自己的贡献;2. 清楚自己的能力和本学期软件工程课程的目标 |
学号 | 102301302 |
一、我们团队的github主页
https://github.com/YQL-light/Groups-warehouses
我们的logo:
二、成员资料
目录:
个人资料:
其他成员:
(篇幅有限只取了其中几位成员的截图)
三、自我评估
后端:
C/C++语言:会c和c++基础的语法,会使用c++的面向对象编程,近期正在学习c语言的多进程编程以及网络编程;
Java语言:会基础的java语法,完成过模拟宠物店的项目,也完成过嵌入mysql的数据库项目,包括基本的增删改查功能,了解一部分Spring的使用但并不熟练;
python语言:会python基础的语法,正在学习用python辅助网络编程的部分
前端:
了解一些HTML简单的语法。
技术偏好:
更偏好于使用C++进行的编程,对前端也有兴趣但目前还没有开始体系的学习,计划在本学期开始接触相关的知识展开学习。
目前缺少的能力:
算法能力薄弱:较不擅长数据结构于算法方面的学习,和树有关的问题掌握得不是很好,计划本学期通过学习和刷题实现提升;
前端语言了解少:只在学习java的过程中了解到了一些html的基本语法,还没有体系地学习过相关的知识;
python语言不够深入:目前还不太能够独立地用python语言进行程序的编写,但可以通过需要的时候及时搜索和学习来弥补一部分不足。
四、目标
之前的代码量:(单个项目内最多)六百行
希望达到的代码量:单个项目两千+行
五、期待的收获
希望这学期能在这门课程中学习到一个项目开发的各个过程,找到适合自己能力和兴趣的那一部分。用课程的需要引导我弥补现在自身的不足。
六、学习指南
deepseek:
当然!这是一份为初学者设计的简要软件工程学习指南,它遵循一个从基础到进阶的循序渐进路径。
软件工程学习指南(简要版)
本指南的核心思想:软件工程不仅仅是写代码,更是关于如何系统化、高效地构建和维护高质量软件的一系列方法、工具和最佳实践。
第一阶段:编程与计算机基础(基石阶段)
这是你成为软件工程师的起点,必须打牢。
-
掌握一门编程语言
- 推荐:Python 或 Java。
- Python: 语法简洁,易于上手,应用领域广泛(Web、数据科学、AI、自动化等)。
- Java: 严谨、面向对象特性明显,是企业级后端开发的主流语言,能帮你建立牢固的编程思想。
- 目标: 不仅要学会语法,更要理解其核心概念(变量、数据类型、控制流、函数、面向对象)。
-
理解计算机科学基础
- 数据结构: 数组、链表、栈、队列、哈希表、树、图。了解它们的特点和适用场景。
- 算法: 学习基本的算法思想(排序、搜索、递归)和复杂度分析(大O表示法)。这是面试和解决复杂问题的关键。
- 计算机组成原理(初步): 了解程序是如何在计算机上运行的(CPU、内存、硬盘)。
第二阶段:软件开发核心技能(工匠阶段)
学会如何像一个工程师一样“造东西”。
-
版本控制 Git
- 必须掌握! 这是团队协作开发的基石。
- 学习:
clone
,add
,commit
,push
,pull
,branch
,merge
等基本操作。学会使用 GitHub 或 GitLab。
-
数据库知识
- SQL(关系型数据库): 掌握基本的增删改查(CRUD)、表连接、索引等概念。MySQL 或 PostgreSQL 是很好的起点。
- NoSQL(非关系型数据库): 了解一种如 MongoDB 的使用场景,知道它与SQL的区别。
-
软件开发方法与设计
- 面向对象设计(OOD): 深入理解封装、继承、多态,并学会用它们来设计可维护、可扩展的代码。
- 设计模式: 了解常用的设计模式(如单例、工厂、观察者模式),它们是解决常见设计问题的经验总结。
- API 设计: 学习如何设计和构建 RESTful API,这是现代前后端和微服务通信的标准方式。
第三阶段:工程化与协作(工程师阶段)
从“写代码”到“交付软件”。
-
软件开发生命周期与敏捷开发
- 了解 Scrum 或 Kanban 等敏捷开发流程。理解迭代、冲刺、每日站会等概念。
-
构建、测试与部署
- 测试: 学会编写单元测试、集成测试。了解 TDD(测试驱动开发)。
- CI/CD(持续集成/持续部署): 了解其基本概念和流程(代码提交 -> 自动构建 -> 自动测试 -> 自动部署)。
- 容器化: 学习 Docker。它可以将你的应用及其依赖打包,实现环境一致性。
-
操作系统与网络
- Linux: 学会基本的命令行操作,因为大多数服务器都运行 Linux。
- 网络基础: 理解 HTTP/HTTPS、TCP/IP 协议、DNS 等基本概念。
做一个完整的项目
-
- 将前面学到的所有知识结合起来,独立或与朋友合作完成一个完整的项目(例如:一个简单的博客系统、待办事项应用)。
- 过程: 需求分析 -> 设计 -> 编码 -> 测试 -> 部署到云服务器(如 AWS, Azure, 阿里云)。
-
阅读优秀的代码
- 在 GitHub 上关注一些高质量的开源项目,阅读它们的源代码,学习其代码组织和设计思路。
-
保持学习与专精
- 软件工程领域日新月异。选择一个你感兴趣的方向深入下去,如:
- 后端开发: 深入学习分布式系统、微服务、消息队列、性能优化。
- 前端开发: 深入学习现代框架(React, Vue)、用户体验、性能。
- 移动开发: 深入学习 Android (Kotlin/Java) 或 iOS (Swift)。
- ** DevOps / 云原生:** 深入学习 Kubernetes, 云服务平台等。
- 软件工程领域日新月异。选择一个你感兴趣的方向深入下去,如:
推荐学习资源
- 在线课程: Coursera, edX, Udemy,以及国内的慕课网。
- 经典书籍:
- 《代码大全》
- 《程序员修炼之道》
- 《设计模式:可复用面向对象软件的基础》
- 《重构:改善既有代码的设计》
- 社区与平台: Stack Overflow(解决问题),GitHub(参与项目),技术博客(如掘金、InfoQ)。
总结:
理论(计算机基础) + 实践(动手写项目) + 工具(Git, Docker等) + 协作(敏捷,代码规范) = 一名合格的软件工程师。
这条道路没有捷径,但遵循这个路线图,一步一个脚印,你一定能成功入门并成长为一名优秀的软件工程师。祝你学习顺利!
分析:
我认为整体来说是比较合理的,大体上我或许会跟着这份指南往下学习,但更多的情况或许还是随着项目的展开而让学习紧紧跟上脚步,从实践当中去学。且人的精力有限,上述指南所需要的知识也需要慢慢积累。