软工第一次作业

第一次作业

这个作业属于哪个课程 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

二、成员资料

目录:
our introduction
我的:
z1
z2
z3
z4

三、自我评估

已具备的知识与能力

  • 熟练运用C、C++语言进行编程:能够熟练使用 C 语言进行面向过程的程序设计,理解指针、链表、栈、队列等的实现。了解 C++ 的类、封装、继承等特性进行初步的面向对象编程,理解其基本思想。
  • 初步了解基础的数据结构与算法:了解经典数据结构(线性表、树、图)和基础算法(排序、查找)的理论。

技术兴趣

提高C++编程能力,对前端知识也感兴趣。

目前缺少的能力

  • 调试能力弱
  • 算法能力薄弱
  • 未掌握java、python语言
  • 没有相关实践经验

四、代码量

过去:过去两年总共在3000行左右
预期:6000行

五、预期收获

  • 学习如何运用 UML 等工具进行软件设计。
  • 我渴望亲身体验一次完整的团队项目开发,从头到尾走一遍软件生命周期,并强制自己熟练使用 Git、测试框架、项目管理看板等工程工具。

六、学习指南

deepseek生成如下:


软件工程学习指南:从理论到实践

软件工程不仅仅是“写代码”,它是一套系统化的方法、流程和工具,用于构建高质量、可维护的软件系统。本指南将分为四个阶段,帮助你循序渐进地学习。

第一阶段:核心理念与基础(1-2周)

这个阶段的目标是理解“为什么”,而不仅仅是“怎么做”。

  1. 什么是软件工程?

    • 核心概念:理解软件工程与编程的区别。编程是写代码,而软件工程是包括需求分析、设计、实现、测试、部署和维护的系统工程
    • 关键目标:学习软件工程的四大核心目标:可维护性可靠性可扩展性可用性
    • 重要文档:了解《软件工程宣言》(Agile Manifesto)的核心价值观,建立对现代软件开发的基本认知。
  2. 软件生命周期模型

    • 瀑布模型:理解其线性、阶段化的特点,以及它的优缺点(适用于需求明确的项目)。
    • 敏捷开发:重点学习!理解迭代、增量开发、 Scrum 和 Kanban 等框架的核心思想。
      • Scrum:了解角色(产品负责人、Scrum Master、开发团队)、工件(产品待办列表、冲刺待办列表)和事件(冲刺计划会、每日站会、评审会、回顾会)。

第二阶段:核心流程与实践(4-6周)

这是软件工程的核心环节,贯穿项目始终。

  1. 需求分析

    • 学会区分:功能需求(系统必须做什么) vs. 非功能需求(系统做得怎么样,如性能、安全性)。
    • 学习工具:学会编写用户故事(As a ... I want ... So that ...)或绘制用例图
  2. 系统设计

    • 架构设计:理解什么是架构,以及常见的模式,如分层架构(表现层、业务逻辑层、数据访问层)。
    • 详细设计:学习使用 UML 图进行建模,重点是:
      • 类图:表示系统的静态结构。
      • 序列图:展示对象之间的动态交互过程。
  3. 实现(编码)

    • 代码规范:学习编写干净、可读的代码。遵循一致的命名规范、适当的注释和代码格式。
    • 版本控制这是必备技能! 熟练掌握 Git 的基本操作:
      • git clone, git add, git commit, git push, git pull
      • 理解分支(branch)和合并(merge)的概念。
  4. 测试

    • 测试级别:了解单元测试(测试单个函数/类)、集成测试(测试模块间交互)、系统测试(测试整个系统)。
    • 测试方法:学会为你的代码编写单元测试(使用 JUnit, PyTest 等框架)。
  5. 部署与维护

    • 基本概念:了解持续集成/持续部署(CI/CD)的简单思想:自动化测试和部署。
    • 维护类型:理解纠错性维护(修复bug)、适应性维护(适应新环境)和完善性维护(增加新功能)。

第三阶段:支撑体系与项目管理(2-3周)

  1. 项目管理

    • 估算:了解如何进行粗略的工作量估算(如使用“人天”)。
    • 任务分解:学习使用看板工具(如 Trello, 码云 Gitee 的看板)来分解和跟踪任务。
  2. 协作与工具

    • GitHub / GitLab / Gitee:除了 Git 命令,学会使用这些平台的 Pull Request/Merge Request 功能进行代码审查。
    • 文档:学会编写清晰的 README.md 文件,说明如何安装、配置和运行你的项目。

第四阶段:综合实践与提升

“知行合一”是学习软件工程的最佳途径。

  1. 做一个个人项目

    • 选题:选择一个你感兴趣的小项目,例如一个简单的待办事项应用、个人博客系统或爬虫。
    • 全过程实践
      • 用用户故事描述需求。
      • 画一个简单的类图和数据库表设计。
      • 使用 Git 进行版本控制,并在 GitHub/Gitee 上托管代码。
      • 为核心功能编写单元测试。
      • 编写 README 文档。
      • 尝试将项目部署到免费的云服务(如 Vercel, Heroku, 或国内的码云Gitee Pages)。
  2. 加入一个开源项目

    • 在 GitHub 上找一个你感兴趣的小型开源项目,从提交 Issue、修复一个简单的 Bug 或改进文档开始,体验团队协作的流程。

推荐学习资源

  • 书籍
    • 《代码大全》:软件构建的百科全书。
    • 《人月神话》:关于项目管理经典之作。
    • 《Head First 设计模式》:理解面向对象设计模式的入门好书。
  • 在线课程
    • Coursera: “Software Engineering” 专项课程。
    • 中国大学MOOC(慕课网):搜索清华大学、南京大学等名校的《软件工程》课程。
  • 工具
    • Git:必备。
    • Draw.io:免费的在线绘图工具,可用于画 UML 图。
    • Visual Studio Code:轻量级且强大的代码编辑器,拥有丰富的插件生态。

学习心态建议

  • 过程重于结果:第一次设计可能很糟糕,代码可能有 bug,这都是学习过程的一部分。
  • 沟通是关键:软件工程是团队活动,学会清晰地表达和沟通。
  • 保持好奇:技术日新月异,保持学习和探索新工具、新方法的心态。

分析

我认为这份指南整体来说是比较合理的,是一份结构清晰、内容精炼且充实的指南,我应该会大致跟随指南的方向去学习。但它安排的时间很紧凑,个人可能没有办法短时间内一下掌握所有技能,具体还是要根据实际情况做出相应的调整,主要还是随着实践项目的展开而不断深入学习,动手实践是掌握软件工程唯一且最重要的方法。

博客园后台截图

bky

posted @ 2025-10-03 00:14  zyyy-  阅读(14)  评论(0)    收藏  举报