软件工程第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546
这个作业的目标 自我介绍,完成团队仓库的创建,配置git环境
学号 112301521

团队网站

https://github.com/Boshsama/IG-theshyBigHorseHead

个人资料截图

599d2106-ccb5-40e0-b446-1801d0a63140

ce0ffac3-45f2-4018-b4c5-3118deab6e95

团队logo截图

342a5e22-cc21-4032-bceb-292216c5b18e

技能树与技术偏好

技能树

能力 A:c与cpp的使用

已系统学习并理解 C / C++ 的基础语法、数据类型、指针与内存管理机制。能够熟练运用类与对象进行问题建模,掌握封装、继承、多态等基本面向对象编程思想。能够独立实现常见的数据结构,如二叉树、链表、堆栈、队列、图等。具备一定的 STL(标准模板库)使用经验,能灵活调用容器与算法库函数解决实际问题。

能力 B:算法与数据结构

已系统学习并掌握常见数据结构(数组、链表、栈、队列、堆、树、图等)的实现原理与应用场景。熟练理解与使用排序、查找、贪心、动态规划、图论等核心算法思想。能够将算法模型与实际问题相结合,独立完成从建模、求解到优化的全过程。具备分析算法时间复杂度与空间复杂度的能力,能在多种方案中进行权衡与优化选择。有一定的刷题与实战经验,能够灵活应对不同类型的问题(如竞赛题、工程问题)

能力 C:一些开发工具使用能力

熟练掌握 Git 的基本工作流程(分支、合并、冲突解决等),能进行个人或小型团队项目的版本管理。熟练使用 Visual Studio、VS Code 等常用开发环境进行项目开发与调试。熟悉 CMake、Makefile 等构建工具的基本使用方法,能够编写简单的构建脚本。具备一定的调试与性能分析能力,能够使用调试器和内存分析工具定位问题。有一定的工程化思维,能够合理组织代码结构,撰写清晰的注释与文档,提升代码可读性与可维护性。

主要短板与不足

项目经验不足

目前缺乏将所学知识系统整合到完整项目开发中的实践机会。在团队合作方面经验不足,对多人协作开发、分工管理、代码规范等实际工程问题的体会还不够深入。对项目全流程的整体把控能力尚待培养。

代码量不足,实践深度不够

现阶段的代码量主要停留在千行级别,以课程作业、练习题或算法实现为主。缺少中大型项目中跨模块、跨层次的编码经验,对复杂工程的调试与维护还不够熟悉。编码习惯和工程化思维尚待进一步锻炼。

学识尚浅

目前的知识储备主要集中在基础语法、常见算法与数据结构,对更高层次的领域(如操作系统原理、计算机网络、数据库系统、并发编程等)理解仍不够深入。对部分算法的优化技巧和复杂度分析还停留在初步阶段,对底层实现原理缺乏系统性研究。在前沿方向(如人工智能、分布式系统、高性能计算)的接触有限。

代码量

目前的代码量仅停留在千行级别,希望通过后续的团队工作,自我学习,代码量能达到1w

期望的课程收获

希望通过软件工程这门课,我能够了解软件开发的流程,模型,原型设计等,能够学会前后端的开发,开发引擎的使用,能够通过团队配合,协作,完成自己的项目,开发出期望的软件。

软件工程学习指南

一、学习周期

  • 以一学期(约 4 个月,16 周)为学习周期,可根据个人实际情况进行灵活调整。
  • 建议每周保持 理论学习 + 实践任务 并行,形成知识和能力的双向巩固。

二、阶段划分与学习内容

(一)第一阶段:基础入门与概念构建(第 1–3 周)

学习目标

  • 理解软件工程的基本概念与目标。
  • 掌握软件生命周期、传统与现代软件过程模型。
  • 学会需求工程的基础方法。

学习内容

  1. 软件工程基础
    • 阅读《软件工程:实践者的研究方法》入门章节。
    • 理解软件工程的定义、目标与价值。
    • 梳理软件生命周期的阶段(需求 → 设计 → 编码 → 测试 → 维护)。
  2. 软件过程模型
    • 学习瀑布模型、V 模型的原理、优缺点与适用场景。
    • 重点掌握敏捷开发与 Scrum 框架,理解迭代式开发思想。
  3. 需求工程
    • 区分功能需求与非功能需求。
    • 学习用户故事的编写。
    • 练习绘制用例图(推荐工具:Draw.io、StarUML)。

实践任务

  • 选择一个小项目(如 学生管理系统)。
  • 用自然语言编写需求说明,撰写用户故事。
  • 绘制该系统的用例图。

(二)第二阶段:设计与建模能力提升(第 4–6 周)

学习目标

  • 掌握软件设计原则与常见架构风格。
  • 熟练使用 UML 进行系统建模。

学习内容

  1. 设计原则
    • 理解高内聚、低耦合思想。
    • 学习 SOLID 设计原则。
  2. 体系结构设计
    • 学习 MVC、C/S 架构模式的概念与适用场景。
  3. UML 建模
    • 掌握类图(描述静态结构)与时序图(描述对象交互)。

实践任务

  • 为学生管理系统绘制 类图,明确类之间的关系(继承、聚合、关联)。
  • 选择一个核心流程(如选课),绘制 时序图

(三)第三阶段:构建与质量保障实践(第 7–12 周)

学习目标

  • 熟练使用 Git 进行版本管理。
  • 掌握基本的软件测试方法,能编写单元测试。
  • 提升代码的可维护性和工程化水平。

学习内容

  1. 版本控制(Git)
    • 掌握仓库初始化、提交、推送、拉取等操作。
    • 学习分支创建、合并与冲突解决。
    • 在 GitHub 上进行实战练习。
  2. 软件测试
    • 理解单元测试、集成测试、系统测试的差异。
    • 区分黑盒与白盒测试。
    • 使用 JUnit(Java)/pytest(Python) 进行单元测试编写。
  3. 编码实践
    • 学习命名规范、注释规范,提升代码可读性。
    • 了解常见设计模式(单例、工厂、观察者等)。

实践任务

  • 在 GitHub 上为学生管理系统创建项目仓库。
  • 提交代码、建立分支并合并。
  • 为核心类或方法编写单元测试。
  • 按照编码规范优化项目代码。

(四)第四阶段:项目管理与维护认知(第 13–16 周)

学习目标

  • 掌握项目管理与任务分解方法。
  • 理解软件维护的类别与重要性。

学习内容

  1. 项目管理基础
    • 学习 WBS(工作分解结构)、进度估算、风险管理。
    • 熟悉常见协作工具(Trello、Jira、Notion)。
  2. 软件维护
    • 学习维护分类:修正性、适应性、完善性。
    • 理解软件生命周期中维护的地位与价值。

实践任务

  • 使用 Trello/Jira 对学生管理系统进行任务分解与进度规划。
  • 假设系统需适配新操作系统,撰写维护方案。

三、学习资源

书籍

  • 《软件工程:实践者的研究方法》
  • 《Head First 设计模式》
  • 《重构:改善既有代码的设计》

在线资源

  • Coursera、EdX 软件工程课程
  • B 站/YouTube 软件工程与 Git 教程、UML 建模教程

工具

  • 版本控制:Git、GitHub/GitLab
  • 建模工具:Draw.io、StarUML
  • IDE:IntelliJ IDEA、Eclipse、PyCharm、VS Code
  • 测试框架:JUnit、pytest
  • 项目管理:Trello、Jira、Notion

四、学习评估

1. 阶段评估

  • 每阶段完成实践任务,并与同学/导师交流。
  • 检查是否达到阶段目标(如能绘制 UML、能写单元测试)。

2. 综合评估

  • 学期末对项目进行总结:
    • 项目是否覆盖了软件生命周期的关键环节?
    • 自己在需求、设计、编码、测试、管理等方面的成长?
    • 后续需要补充或强化的环节?

学习指南的分析

这份结构完整涵盖了软件工程的核心要素:需求、设计、编码、测试、管理与维护。保证了理论与实践结合。阶段划分科学,先概念 → 再建模 → 接着实现 → 最后管理与维护,符合软件工程的生命周期逻辑。每阶段目标明确,内容循序渐进。通过以上学习指南,我可以弥补项目经验不足,系统体验“完整项目”,正好弥补短板。提升实践深度,代码量会随着 UML 建模、Git 管理、单元测试、重构逐渐增加。此外还能拓展知识面学习过程模型、UML、设计模式、测试、项目管理,能帮我从“算法 & 数据结构”转向“工程方法论”,拓展知识广度。不仅如此,工程素养养成也是很重要的一方面,学习指南强调团队协作工具、版本控制、编码规范,这对以后做团队项目或实习很有帮助。能培养规范化、工程化思维,而不仅仅是写能跑的程序。

后台博文编辑页面的截图

8bff18d08824606a3ba291d0f99ecfe0

posted @ 2025-10-03 00:16  Makise_Kurisu  阅读(19)  评论(0)    收藏  举报