软件工程第一次作业
软件工程第一次作业
基本信息
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546 |
| 这个作业的目标 | 初步了解软件工程 |
| 学号 | 102301336 |
团队github主页链接 https://github.com/b-yx/EchoLogic
我的技能树与学习规划
一、自我评估
1. 已具备的专业知识与能力
-
C++ 编程基础:熟练使用 C/C++ 编译和调试工具,掌握基本语法。
-
算法与数据结构:掌握基本的数据结构以及常见基础算法。
2. 技术偏好与兴趣方向
- 对 团队协作开发 较为感兴趣,希望更加深入了解多人协作开发。
3. 当前的不足
- 项目经验缺乏:未参与过项目,缺乏经验。
二、当前代码量与目标
- 当前代码量:约 20000 行,主要集中在c++算法题。
- 学期目标:通过这门课学习,代码量提升到 3 万行以上,并完成一个小型项目的完整开发。
三、学习期望
- 期待系统学习 软件开发的完整流程,从需求分析、设计到编码、测试与维护。
- 希望能掌握:
- 小型项目的具体开发全流程
五、软件工程学习指南(由 Deepseek 生成)
一、基础能力建设阶段
编程语言深度掌握
-
C/C++进阶学习
- 掌握面向对象编程思想:封装、继承、多态
- 学习内存管理:堆栈分配、智能指针、内存泄漏检测
- 理解模板编程和STL标准库的底层实现
-
多语言能力拓展
- Python:用于脚本编写和快速原型开发
- Java/C#:理解企业级开发框架
- JavaScript:前端基础,了解全栈开发
开发工具熟练运用
-
IDE深度使用
- Visual Studio/CLion调试技巧:断点、监视、内存查看
- 代码重构工具:重命名、提取函数、修改变量作用域
-
命令行工具
- Linux基础命令和shell脚本编写
- 编译构建工具:Makefile/CMake的使用
二、工程化思维培养
代码质量保障
-
代码规范
- 学习Google C++ Style Guide等编码规范
- 使用Clang-Format、Clang-Tidy进行代码格式化检查
-
单元测试
- 掌握Google Test框架的使用
- 学习测试驱动开发(TDD)的基本流程
-
调试技能
- 核心转储分析
- 性能剖析工具使用
版本控制精通
-
Git高级用法
- 分支管理策略:Git Flow工作流
- 冲突解决技巧
- 子模块管理
-
代码审查
- 学习编写清晰的代码审查评论
- 掌握通过代码审查学习他人优点的能力
三、软件设计能力提升
设计原则与模式
-
SOLID原则理解
- 单一职责原则
- 开闭原则
- 里氏替换原则
- 接口隔离原则
- 依赖倒置原则
-
常用设计模式
- 创建型:工厂模式、单例模式
- 结构型:适配器、装饰器
- 行为型:观察者、策略模式
架构设计入门
- 系统分层架构
- 表现层、业务逻辑层、数据访问层的划分
- 模块化设计
- 高内聚低耦合的模块划分原则
- 接口设计规范
四、项目实战训练
个人项目实践
-
项目选题建议
- 简易HTTP服务器
- 命令行工具开发
- 小型游戏开发
-
开发流程实践
- 需求分析文档编写
- 技术方案设计
- 迭代开发计划制定
团队协作项目
-
敏捷开发体验
- 站立会议、迭代计划会、复盘会的参与
- 用户故事编写和任务拆分
-
协作工具链
- 项目管理:GitHub Projects/Trello
- 文档协作:飞书/Notion
- 持续集成:GitHub Actions
五、工程全流程实践
开发阶段
-
需求分析
- 用户需求访谈技巧
- 功能需求文档编写
-
系统设计
- 数据库设计:ER图绘制
- API设计:RESTful接口设计原则
测试与部署
-
测试策略
- 单元测试、集成测试、系统测试的区分
- 测试用例设计方法
-
部署运维
- 容器化基础:Docker使用
- 日志管理和监控
六、持续学习与提升
学习资源推荐
-
经典书籍
- 《代码大全》
- 《重构》
- 《设计模式》
-
实践平台
- LeetCode算法练习
- GitHub开源项目参与
能力评估方法
-
代码量统计
- 关注有效代码量而非单纯行数
- 定期回顾代码质量提升情况
-
项目成果检验
- 完成至少一个完整项目从设计到部署的全流程
- 获得真实用户反馈并进行迭代优化
执行建议
- 循序渐进:从1000行代码的小项目开始,逐步挑战更复杂的系统
- 刻意练习:每个技术点都要通过实际编码来巩固
- 及时复盘:每周总结学习收获和遇到的问题
- 交流分享:积极参与技术讨论,通过教授他人来深化理解
合理性分析
-
它给了我全面的框架,把散落的知识点串联成完整链路,更关注软件的整体架构与开发流程。
-
当然,由于是AI生成的,内容的深度和精确度需要我自己在实践中去校验和补充,它并非“标准答案”。
五、结语
对我而言,本学期的学习计划是开始理解并参与完整的软件开发流程。认识到自身经验的不足,我将通过课程与实践来积累,这也是为未来做准备的机会。

浙公网安备 33010602011771号