软件工程第一次作业
| 软件工程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
|---|---|
| 作业要求 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
| 作业目标 | 学会使用git进行版本控制、团队开发软件+学会使用Markdown记笔记+学会使用博客园记录生活、工作、学习 |
| 学号 | 102301325 |
一.GitHub团队主页
1.1 git代码
git clone -o [localRespositoryName] [url]
git checkout -b [mybranch]
#在README.md中添加我的部分
git fetch [localRespositoryName]
git merge [localRespositoryName]/main
git add .
git commit -m "self-info"
git push -u [localRespositoryName] [mybranch]
# 提pr
1.2 关于我的网页截图

二、团队Logo

三、团队主页链接
四、自我评估
4.1、具备的专业知识和能力
- 能使用c/c++、java、python编程,应用SQL控制数据库
- 能够实现基本的算法与数据结构,例如栈、队列、优先队列、平衡树、红黑树、图、快速排序算法、归并排序算法、Dijkstra算法、Bellman-Ford算法
- 能够使用MyBatis、Spring框架实现JavaWeb的Dao层,目前还在学springMVC和springBoot
- 能够使用MySQL数据库,并嵌入Java中使用
- 能够使用简单使用git将本地文件传到云端以及从云端拉取文件
4.2、感兴趣的技术
- 我对软件开发中数据持久化的技术更感兴趣。我认为数据的持久化使得软件可以更加广泛的使用。数据持久化技术的发展使得软件可以帮助我记录历史信息,根据我的历史信息来提供服务。数据持久化使得软件可以实现需要记录数据使用数据的需求。
- 我对计算机底层cpu控制板块的实现电路及其原理感兴趣,希望自己能通过一些仿真软件或者硬件语言实现一个可用cpu。
- 我对人工智能方向的强化学习板块比较感兴趣,希望能学会相关的知识并对智能驾驶技术做出贡献
4.3、能力、技术缺陷
- 缺乏团队编程的经验,没有团队写过一款软件
- 目前不会使用springMVC和springBoot开发软件后端,缺乏后端开发经验
- 部署方面的知识尚未学习,无法写好的软件部署到云端
4.4、代码量
曾经代码量
累计约50000+,平均每学期10000+,以及假期总共编写大约10000+,主要是应用c/c++实现的算法,以及学习Java开发和使用python计算时编写的代码
目标代码量
希望经过本学期的学习,代码量在本门课程就可以达到10000+。
4.5、课程期待
- 希望通过本课程的学习可以提高软件开发素养,学会从产生一个idea到用软件实现这个想法并应用到群体的开发流程。
- 通过团队作业,希望可以系统化自己的后端技术,完整的开发一款可应用的软件
五、软工学习指南(DeepSeek生成)
5.1、生成内容
好的,这是一份为你精心准备的软件工程课程学习指南。它不仅涵盖了核心知识点,还提供了学习路径、实践方法和资源推荐,旨在帮助你构建扎实的软件工程思维和能力,而不仅仅是应付考试。
软件工程课程学习指南:从理论到实践的全栈之路
一、 核心目标
学习软件工程的核心目标不是记住一堆概念,而是培养工程化思维和系统性解决问题的能力。你需要学会:
- 团队协作:如何与他人高效地共同开发一个项目。
- 过程管理:如何规划、跟踪和控制软件开发的整个生命周期。
- 质量保证:如何确保软件的质量、可靠性和可维护性。
- 需求到产品的转化:如何将模糊的用户需求,转化为一个可运行、有价值的软件产品。
二、 知识体系与学习路径
建议按照软件开发的生命周期来组织你的学习。
阶段一:基础与前提(课程前期)
-
编程语言深化
- 目标:至少熟练掌握一门面向对象语言(如 Java, C++, C# 或 Python)。
- 重点:不仅是语法,更要理解其设计模式、代码规范和生态工具(如包管理、单元测试框架)。
-
数据结构与算法
- 目标:理解常用数据结构和算法的应用场景,这是编写高效、稳定代码的基础。
-
版本控制(Git)
- 目标:这是现代软件工程的“必备技能”,而非“加分项”。
- 必须掌握:
clone,add,commit,push,pull基本操作。- 分支管理:
branch,checkout,merge,理解 Git Flow 或 GitHub Flow 工作流。 - 协同工作:Pull Request/Merge Request 的流程。
阶段二:软件开发核心流程(课程中期)
-
软件过程模型
- 理解并比较:瀑布模型、V模型、增量迭代模型、敏捷开发与DevOps。
- 重点:掌握敏捷的核心(Scrum/Kanban),理解用户故事、冲刺、每日站会等概念。这是目前行业的主流。
-
需求工程
- 学会:如何与用户沟通,获取并分析需求。
- 掌握工具:
- 用户故事:作为【角色】,我想要【完成活动】,以便于【实现价值】。
- 用例图和用例描述:描述系统与外部交互的功能性需求。
- 需求规格说明书:学习如何清晰地、无歧义地记录需求。
-
系统设计与建模
- 统一建模语言(UML):这是沟通设计的“普通话”。
- 必须掌握的图:类图、序列图、用例图、活动图、状态图。
- 目标:能读懂并能用这些图表达自己的设计思路。
- 软件架构:
- 理解经典的三层架构(表现层、业务逻辑层、数据访问层)。
- 了解微服务、事件驱动等现代架构概念。
- 设计原则与模式:
- SOLID原则:面向对象设计的基石,务必理解。
- 常用设计模式:如工厂模式、单例模式、观察者模式、策略模式等。理解其意图和场景,而非死记硬背。
- 统一建模语言(UML):这是沟通设计的“普通话”。
-
实现与测试
- 编码规范:养成写整洁、可读代码的习惯。学习使用 Lint 工具。
- 软件测试:
- 测试级别:单元测试、集成测试、系统测试、验收测试。
- 测试方法:白盒测试、黑盒测试。
- 实践:为自己写的代码编写单元测试(如 JUnit, pytest)。
- 概念:了解测试驱动开发(TDD)、持续集成(CI)中的自动化测试。
阶段三:项目维护与进阶(课程中后期)
-
软件演化
- 重构:学习如何改进现有代码的设计,而不改变其外部行为。马丁·福勒的《重构》是经典。
- 代码异味:能识别出哪些代码需要重构(如长方法、大类、重复代码等)。
-
项目管理
- 估算:如何估算项目的工作量和时间。
- 风险管理:识别和管理项目中的潜在风险。
- 工具:了解如何使用 Jira, Trello 等工具进行任务跟踪。
三、 实践指南:知行合一
理论是灰色的,实践之树常青。
-
“玩具项目”实战
- 找2-4个同学组队,从头到尾完成一个有实际需求的小项目(如一个简单的博客系统、待办事项App、学生选课系统)。
- 强制使用 Git:在 GitHub 或 GitLab 上创建仓库,使用分支和 Pull Request 进行代码合并。
- 强制编写文档:至少写一份简化的需求文档、设计文档和README。
- 强制进行会议:尝试进行几次“站立会议”,同步进度和困难。
-
参与开源项目
- 在 GitHub 上寻找你感兴趣的开源项目,从阅读代码、提交 Issue 开始,最终尝试修复一个简单的 Bug 并提交 Pull Request。这是宝贵的分布式协作经验。
-
代码审查
- 在团队项目中,互相审查对方的代码。这是提升代码质量和个人技术水平的极佳方式。
-
搭建个人CI/CD流水线
- 使用 GitHub Actions 或 GitLab CI 为你的项目搭建一个最简单的流水线:当代码推送时,自动运行测试。这会让你对 DevOps 有切身体会。
四、 推荐资源
- 书籍
- 必读经典:《代码大全》、《人月神话》、《设计模式》(GoF)、《重构》、《敏捷软件开发:原则、模式与实践》。
- 实践入门:《Head First 设计模式》、《UML精粹》。
- 在线课程
- Coursera: “Software Engineering” Specialization。
- edX: MITx系列课程。
- 在线平台与工具
- Git: Pro Git 书籍(免费在线)。
- UML: Draw.io / Lucidchart(免费绘图工具)。
- 社区: Stack Overflow、GitHub、业界技术博客。
五、 学习建议与心态
- 不要只关注编码:软件工程 ≈ 30% 编码 + 70% 沟通、设计、协作和管理。培养你的“软技能”。
- 拥抱变化:需求会变,技术会变,学会在变化中寻找稳定和规律。
- 文档是朋友:清晰的文档能节省未来数倍的沟通和维护成本。
- 工具是生产力的倍增器:花时间学习 Git、IDE、调试器、CI/CD 等工具,它们会让你事半功倍。
- 从“学生思维”转向“工程师思维”:思考问题的角度从“如何实现功能”转变为“如何稳定、高效、可持续地实现功能并交付价值”。
5.2、对DeepSeek生成指南的评价与思考
我认为DeepSeek生成的指南比较符合实际。
起初我认为软件工程课程是教学生一些实际写代码时需要的一些技术,经过一段时间的学习,我认为软件工程这门课程实际上是更高维度的软件开发流程,包括如何从现实到软件,再从软件到现实这一整套完整的开发教学。
对于软件工程来说,代码编写能力与团队开发需要的版本控制git肯定是基础,然后需要学习如瀑布模型,增量模型等软件开发流程模型,以及将用户需求转换为软件原型的语言,还有软件优化,软件测试等技术,当具有一定的软件开发理论后就需要实践应用来巩固。因此我认为deepseek给我的指南是符合我认知的一份学习指南。
上软工这门课到目前为止,我认为我学习到的最重要的知识不是如何用代码实现,而是学会了解用户需求,明白真正需要做的事情,以及要学会和客户沟通而不是闭门造车。一个系统的可拓展能力以及快速修复能力远比快速的完成项目要重要的多。
六、编写截图


浙公网安备 33010602011771号