软件工程第一次团队作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546
这个作业的目标 学习github代码托管网站的使用,学习基本的团队开发流程,学会使用markdown语法
学号 102301527

个人资料截图

image

团队仓库

https://github.com/XunBo2023/cuddly-umbrella

自我技能评估

  1. 掌握C/C++开发,了解TCP/IP协议,SDN技术
    2.对网络通信感兴趣
    3.未曾参与过项目开发经验

代码量

目前代码量:约1k行
完成本课程后希望达到代码量:2k左右

学习期望

希望能学习到现代化的代码管理与成果交付。希望能学习到清晰的现代化软件开发流程

学习指南

核心理念:不要只学编程,要学“工程”
软件工程不仅仅是写代码,它涉及从需求分析到产品维护的整个生命周期。你的目标是成为一个能构建可靠、可维护、可扩展软件系统的工程师,而不仅仅是一个程序员。

第一阶段:奠基篇 - 编程与计算机基础
这个阶段的目标是打下坚实的根基,就像盖楼前要打地基一样。

一门编程语言精通

选择:建议从 Python(语法简单,应用广泛)、Java(面向对象典范,企业级应用多)或 C++(理解内存和底层机制)中任选一门开始。

目标:达到“精通”的程度。这意味着:

熟练掌握其语法、标准库。

深刻理解其核心编程范式(面向对象、函数式编程等)。

了解其内存管理机制(如垃圾回收、指针)。

能使用它编写结构良好、可读性强的代码。

计算机科学核心知识

数据结构与算法:这是软件工程的“内功”。

数据结构:数组、链表、栈、队列、哈希表、树(特别是二叉树、BST、AVL、红黑树)、堆、图。

算法:排序、搜索、递归、分治、动态规划、贪心算法、图论算法(BFS, DFS)。

学习目标:理解它们的原理、时间复杂度/空间复杂度、应用场景。

计算机组成原理:了解计算机如何工作。

冯·诺依曼体系结构、CPU、内存、I/O设备。

操作系统:

进程与线程、进程间通信、死锁、内存管理、虚拟内存、文件系统。

计算机网络:

OSI/TCP-IP模型、HTTP/HTTPS、TCP/UDP、DNS、Socket编程。

本阶段资源推荐:

书籍:《算法导论》、《CSAPP》(深入理解计算机系统)

在线课程:Coursera的《Algorithmic Toolbox》、edX的《CS50》

练习平台:LeetCode(从简单开始)、HackerRank。

第二阶段:工程入门篇 - 软件开发全流程
这个阶段开始接触“工程”部分,学习如何协作和构建软件。

版本控制

工具:Git 是绝对主流。

学习目标:熟练使用 Git 进行代码管理(clone, add, commit, push, pull, branch, merge, rebase)。理解工作流(如 Git Flow, GitHub Flow)。

软件工程方法论

软件开发模型:了解瀑布模型、迭代模型、敏捷开发 和 DevOps。目前业界以敏捷和DevOps为主流。

设计模式与原则:学习经典的23种设计模式,更重要的是理解 SOLID 原则、DRY、KISS等,让你写出易于扩展和维护的代码。

数据库知识

SQL数据库:MySQL、PostgreSQL。精通SQL语言,理解事务、索引、锁、范式。

NoSQL数据库:了解至少一种,如 MongoDB(文档型)、Redis(键值对)。

软件测试

学习编写测试代码:单元测试、集成测试。

了解测试金字塔概念。

工具:JUnit(Java), pytest(Python)。

集成开发环境与构建工具

IDE:熟练使用一款强大的IDE,如 IntelliJ IDEA, Visual Studio Code, PyCharm。

构建工具:Maven/Gradle(Java), npm/webpack(JavaScript)。

本阶段资源推荐:

书籍:《设计模式:可复用面向对象软件的基础》、《重构:改善既有代码的设计》、《Head First设计模式》

实践:在GitHub上创建项目,使用分支进行功能开发;为你的代码编写单元测试。

第三阶段:进阶与专项篇 - 构建复杂系统
这个阶段关注如何构建高性能、高可用、可扩展的分布式系统。

系统设计

基础: RESTful API 设计、缓存技术(Redis)、消息队列(Kafka, RabbitMQ)。

核心概念:负载均衡、数据库分库分表、微服务架构、容器化与虚拟化。

学习目标:能够设计一个像 Twitter、Netflix 这样的复杂系统(不一定实现,但要能画出架构图并说明技术选型)。

网络与安全

深入理解HTTP协议,学习Web安全常见问题(SQL注入、XSS、CSRF)。

了解基本的加密解密原理。

Linux 与 命令行

熟练使用Linux常用命令,能在Linux环境下进行开发、部署和问题排查。

本阶段资源推荐:

书籍:《数据密集型应用系统设计》

网站:github.com/donnemartin/system-design-primer

在线课程:Educative.io 的《Grokking the System Design Interview》

第四阶段:工具与工程实践篇 - 现代化交付
这是成为高级工程师的关键,关注如何高效、可靠地交付软件。

容器化与编排

Docker:学习编写 Dockerfile,构建镜像,运行容器。

Kubernetes:了解Pod、Service、Deployment等核心概念。这是云原生时代的操作系统。

CI/CD

理解持续集成和持续部署/交付的流程。

学习使用 Jenkins, GitLab CI, GitHub Actions 等工具搭建自动化流水线。

云服务

选择一家主流云厂商(AWS, Azure, 谷歌云),学习其核心服务,如计算(EC2)、存储(S3)、网络(VPC)等。

第五阶段:软技能与持续学习
沟通与协作:能清晰地表达技术方案,编写技术文档。参与代码审查。

问题解决能力:遇到bug和线上问题,有系统地排查和解决的能力。

项目管理:了解如何估算工时、管理任务、识别风险。

持续学习:技术日新月异,保持好奇心,关注技术博客(如InfoQ, Stack Overflow Blog)、参加技术会议。

学习路线图与项目实践建议
阶段 建议项目
第一阶段 命令行小游戏(如猜数字)、简单的数据处理脚本、实现基本的数据结构。
第二阶段 带数据库的Web应用(如博客系统、TodoList),使用Git管理,并编写测试。
第三阶段 微服务项目(如拆分成用户服务和文章服务),引入缓存和消息队列。
第四阶段 将你的项目用Docker容器化,并使用GitHub Actions实现CI/CD,最终部署到云服务器。
最重要的建议:

动手,动手,再动手! 看十遍书不如写一遍代码。

阅读优秀的代码:在GitHub上关注一些优质项目,学习别人的代码结构和风格。

不要害怕犯错:遇到Bug和问题是最好的学习机会。

加入社区:Stack Overflow是你最好的朋友。

学习软件工程是一场马拉松,而不是短跑。保持耐心和热情,一步步积累,你一定能成为一名优秀的软件工程师!祝你学习顺利!

指南评估

对我十分有帮助,对我的软件工程学习之旅起到指导作用

编写截图

屏幕截图 2025-10-03 210334

posted on 2025-10-03 21:05  泡鸭爪fang  阅读(16)  评论(0)    收藏  举报