软件工程课程第一次团队作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546
这个作业的目标 完成Github团队主页搭建,成员介绍,团队Logo文生图任务,以及在博客园发一篇随笔
学号 102301231

1.Github团队主页搭建,成员介绍,团队Logo文生图任务

image
image

676d9f6a-9eb6-4ba1-8eaa-13674d75693c

2.团队主页的网址

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

3.自我评估

编程语言:

熟练掌握 Python,熟悉 C/C++。

工具与平台:

能够使用 Git 进行版本控制,熟悉Linux基本操作。

基础知识:

扎实的数据结构与算法、计算机网络、操作系统基础。

当前能力评估:

我认为自己具备了较为扎实的计算机基础和较强的快速学习与动手实践能力。能够独立或在团队中完成一个完整项目的开发流程。但我也清醒地认识到,我的知识深度和系统性与工业级要求还有差距,尤其是在系统设计、高并发处理、分布式架构等方面经验尚浅。

感兴趣的技术方向:

1.后端架构:我对如何构建高可用、高并发的后端系统充满好奇,希望深入研究分布式系统、微服务、云原生等技术。
2.人工智能/机器学习:AI的巨大潜力让我着迷,我希望能将机器学习技术应用于解决实际问题,而不仅仅是完成课程项目。

最想学习的知识:

1.深入理解计算机系统:计划精读《深入理解计算机系统》等经典书籍,打通从上层应用到底层硬件的知识脉络。
2.分布式系统理论与实践:学习相关理论(如共识算法),并尝试使用Kubernetes、Spring Cloud等工具搭建简单的分布式应用。
3.大型项目源码:希望有机会阅读如Linux内核、Redis等优秀开源项目的源码,学习其设计思想。

4.代码量

目前日均60行,本学期这门课完成后,希望达到日均80行。

5.最期待在课程中能够学习到什么知识,有什么收获

能够学习到什么知识

最期待学到的知识:从“术”到“道”的升华

  1. 一套完整的“软件开发地图”
    · 期待点: 在这之前,你可能更熟悉的是“接到一个具体任务,然后开始编码”。你期待软件工程能给你一张全景地图,让你明白一个软件产品从无到有、从生到死的完整生命周期:需求是如何被捕获和分析的?设计文档怎么写?如何选择架构?测试到底有多少种方法?软件上线后如何维护?
    · 对应教材内容: 第一部分到第四部分(软件过程、建模、管理、演化)恰恰构成了这张地图。你会学习到瀑布模型、敏捷开发等各种软件过程模型,理解不同场景下该走哪条“路”。
  2. “化繁为简”的建模与设计能力
    · 期待点: 如何把模糊的用户需求,转化为清晰、可执行的软件蓝图?你期待学会使用像UML这样的“工程师语言”,通过用例图、类图、时序图等,进行需求分析和系统设计。这不仅是画图,更是一种抽象思维和逻辑表达的训练,是避免后期大规模返工的关键。
    · 对应教材内容: 第三部分“软件建模”是重点,你会深入学习需求工程、体系结构设计、详细设计和模型驱动工程。
  3. 应对“不确定性”的敏捷与实践
    · 期待点: 你可能听说过“敏捷开发”、“Scrum”、“看板”,但很想知道它们具体如何运作。你期待学习到除了传统瀑布模型外,更现代、更适应需求变化的开发方法。更重要的是,你希望了解团队协作的具体工具和流程,如版本控制(Git)的最佳实践、持续集成、每日站会等。
    · 对应教材内容: 第3章“敏捷软件开发”是核心。这本书很好地平衡了传统与敏捷,让你理解为什么敏捷会成为主流。
  4. 保证质量的“安全网”:软件测试
    · 期待点: 不再满足于“跑通就行”,你期待系统性地学习测试理论、方法和技术。比如,单元测试、集成测试、系统测试的区别是什么?如何设计有效的测试用例?自动化测试如何搭建?这会极大提升你代码的可靠性和专业度。
    · 对应教材内容: “软件测试”这章将全面介绍测试的不同层级和目标。

有什么收获

最希望获得的收获:思维与能力的蜕变

  1. 工程化思维取代 hacking 思维
    · 收获: 最大的收获将是从“能写出代码”到“能写出易于维护、可扩展、够健壮的软件”的思维转变。你会开始考虑可读性、可复用性、设计模式,而不是仅仅实现功能。你会理解文档、流程、规范不是负担,而是保证团队协作和项目成功的基石。
  2. 团队协作与沟通的初体验
    · 收获: 如果课程有团队项目,这将是一次宝贵的模拟实战。你将亲身体验版本冲突如何解决、任务如何拆分与分配、设计意见不合时如何沟通、如何做代码审查。这种与人协作完成复杂任务的能力,是未来职场极其重要的软实力。
  3. 对软件生命周期和职业的全景认知
    · 收获: 学完这门课,你会对软件行业的不同岗位(前端、后端、测试、运维、项目经理、产品经理等)有更清晰的认识,理解他们如何在软件生命周期中协同工作。这有助于你规划未来的职业方向,找到自己最感兴趣的领域。
  4. 为未来的实践打下理论基础
    · 收获: 这门课的知识可能暂时看起来有些抽象,但它就像“内功心法”。在你后续做课程设计、参加竞赛(如“中国软件杯”)、甚至毕业设计和实习时,你会反复回想起书中的概念和方法。届时,理论与实践相结合,你的理解会深刻得多。

6.Chatgpt类型的工具生成一份简单的软件工程这门课的学习指南,分析这份学习指南是否合理、是否对你有帮助

指南

《软件工程》课程学习指南(基于机械工业第九版)

一、 核心目标:转变思维,而非仅仅记忆

在学习之初,请明确你的首要目标:完成从“程序员”到“软件工程师”的思维转变。

· 程序员思维: 关注“如何用代码实现这个功能?”
· 工程师思维: 关注“为什么要做这个功能?(需求)”、“如何设计才能稳定、易扩展?(设计)”、“如何保证质量?(测试)”、“如何协同工作?(团队协作)”、“如何长期维护?(演化)”。

本指南的所有建议都围绕这一目标展开。

二、 学习路线图:四阶段法

第一阶段:宏观概览与基础奠基(第1-3周)

· 核心章节:
· 第1章 概述: 明确软件工程的定义、目标和面临的挑战。理解什么是“软件过程”。
· 第2章 软件过程: 重点掌握瀑布模型和增量式开发的区别与联系。这是理解后续所有内容的基础框架。
· 第3章 敏捷软件开发: 这是现代开发的灵魂。必须深刻理解敏捷宣言的四大价值观和十二原则,掌握 Scrum 框架的角色、工件和事件(冲刺、站会等)。思考敏捷为何能应对变化。
· 学习活动:
· 建立知识地图: 用思维导图画出软件生命周期的整体流程,并标出各章节(需求、设计、测试等)在其中的位置。
· 对比分析: 制作一个表格,对比瀑布模型和敏捷开发的优缺点、适用场景。
· 实践联系: 回想你参与过的项目,它更接近哪种模型?遇到了哪些本可以通过更好的过程避免的问题?

第二阶段:核心工程化技能修炼(第4-10周)

这是课程最核心、最实用的部分,对应教材的第三、四部分。

· 核心章节:
· 第6-7章 需求工程: 学会区分功能需求和非功能需求。掌握用例图和用户故事这两种捕获需求的核心技术。
· 第8-11章 设计与实现:
· 第9章 体系结构设计: 了解常见的架构模式(如MVC、客户端-服务器、分层架构)。理解架构选择对系统质量(性能、安全性)的决定性影响。
· 第11章 软件测试: 这是质量保证的核心。必须掌握:
· 测试级别:单元测试、集成测试、系统测试。
· 测试类型:功能测试 vs 非功能测试(如性能测试)。
· 测试用例设计:等价类划分和边界值分析这两个最实用的黑盒测试方法。
· 学习活动:
· “纸上谈兵”式练习: 找一个你熟悉的小应用(如图书馆管理系统、在线购物车),尝试为它编写:
1. 需求规格说明(用用户故事或用例图)。
2. 系统架构图(高层模块划分)。
3. 核心模块的类图。
4. 为某个功能点设计测试用例(使用等价类/边界值)。
· 工具学习: 学习使用 draw.io 或 StarUML 等工具绘制UML图,使用 Git 进行版本控制。这是工程师的必备技能。

第三阶段:项目管理与进化(第11-13周)

· 核心章节:
· 第19-22章 项目管理相关: 重点理解风险管理和项目规划的基本概念。知道如何估算项目成本和工作量(如COCOMO模型的概念)。
· 学习活动:
· 反思: 如果你要接手一个你一年前写的、没有文档的项目,你会从哪里开始?会遇到什么困难?这能让你深刻理解可维护性和文档的重要性。

第四阶段:复习与整合(第14-16周)

· 学习活动:
· 构建知识网络: 再次使用思维导图,但这次要将所有知识点串联起来。例如:一个“用户登录”的需求,如何被设计成类图?如何为其编写测试用例?在敏捷冲刺中如何管理这个任务?
· 团队项目复盘: 如果课程有团队项目,这是最好的学习机会。对照教材,复盘你们团队的过程:需求分析做得好吗?设计是否讨论充分?测试是否完整?沟通协作是否顺畅?总结经验和教训。

三、 高效学习工具与资源推荐

  1. 笔记工具:
    · 强推思维导图(XMind, MindMaster): 用于构建章节结构和知识关联。
    · Notion或飞书文档: 用于整理核心概念、对比表格、实践练习。
  2. 实践工具:
    · 绘图: draw.io(免费、强大)、Visual Paradigm。
    · 版本控制: Git + GitHub/Gitee。务必学会基本操作(clone, add, commit, push, pull, branch)。
  3. 拓展资源:
    · 书籍: 《人月神话》(经典)、《Head First 设计模式》(入门有趣)。
    · 在线: 慕课网、B站上有大量关于敏捷、UML、Git的实战视频。

四、 给“准工程师”的特别建议

· 主动提问: 不要只被动接受。多问“为什么”:为什么要有这些过程?这个模型解决了什么问题?这个原则在什么情况下会失效?
· 拥抱团队合作: 积极寻找或组建学习小组。讨论和辩论是深化理解的最佳途径。
· 理论联系实际: 哪怕是一个很小的个人项目,也尝试用软件工程的方法论去规范它。比如,先写需求再编码,先画类图再实现,代码提交前写单元测试。
· 关注“人”的因素: 软件工程不仅是技术,更是关于“人”的学科。理解沟通、协作和管理的重要性。

总结:

这份指南的核心是 “思维转变” 和 “主动实践” 。《软件工程(第九版)》是一本优秀的教材,但它提供的是一张地图,真正的旅程需要你亲自去走。通过有策略地学习、积极地实践和反思,你一定能在这门课程中收获远超课本分数的宝贵财富,为成为一名优秀的软件工程师迈出坚实的一步。

这份学习指南是否合理、是否对你有帮助

这份指南非常合理,并且具有极高的实用价值。它绝不仅仅是一份“学习计划”,而是一份真正的“工程师成长导航”。

一、 合理性分析:为什么它“合理”?

  1. 符合认知规律(循序渐进): 指南提出的“四阶段法”完全符合学习复杂知识的规律。
    · 先建框架(第一阶段): 在没有全景地图的情况下直接钻技术细节,容易迷失。指南让你先了解“有哪些过程模型”(What),再思考“为什么需要敏捷”(Why),最后才是“如何做需求分析”(How)。这是典型的“自上而下”的学习方法。
    · 再填核心(第二阶段): 在有了宏观认识后,集中精力攻克最核心、最实用的工程化技能(需求、设计、测试),这是软件工程的“肌肉”。
    · 后补全局(第三阶段): 理解了如何“造”软件后,再学习如何“管”项目和“养”软件(演化),这让知识体系更完整。
    · 最终整合(第四阶段): 通过复习和项目复盘,将零散的知识点串联成网络,形成深度理解。
  2. 紧扣教材与课程目标: 指南的章节划分与《软件工程(第九版)》的结构高度吻合,确保了你学习的内容与课程教学同步。它准确地抓住了这本经典教材的精髓——平衡传统与敏捷,强调工程化思维。
  3. 目标导向,而非考试导向: 指南的核心目标是“思维转变”,这直接命中了大三学生学习这门课的最高价值。它提醒你,成功不是背下定义,而是能否用这些知识去思考和解决实际问题。这恰恰是高分和真正能力之间的区别。

二、 有帮助性分析:为什么它“有用”?

  1. 提供了清晰的“行动指令”: 指南没有停留在“你要学好”的层面,而是给出了具体可操作的“学习活动”。
    · “建立知识地图” -> 告诉你用什么工具(思维导图),做什么事。
    · “对比分析” -> 告诉你制作表格来对比模型。
    · “纸上谈兵式练习” -> 给出了一个极其重要的实践方法:即使没有真实项目,也可以找一个熟悉的场景来应用知识。这是将理论“内化”的关键一步。
  2. 预判了学生的痛点并给出解决方案:
    · 痛点: “理论很抽象,不知道有什么用。”
    · 方案: “实践联系:回想你参与过的项目...”、“反思:如果你要接手一个旧项目...”。这些活动强行建立了理论与个人经验之间的联系,让知识瞬间变得鲜活。
  3. 强调了“工程师的标配”工具: 明确推荐了 draw.io, Git 等工具,并说明了其重要性。这解决了学生“只知道概念,不知道用什么工具实现”的困境。掌握这些工具本身就是竞争力的体现。
  4. 包含了“软性”的元认知建议: 最后部分的“特别建议”是画龙点睛之笔。
    · “主动提问” 培养的是批判性思维。
    · “拥抱团队合作” 点明了软件工程的社会性。
    · “关注‘人’的因素” 这是区分优秀技术专家和优秀工程师的关键。

可以优化的细微之处(让你的学习更上一层楼):

尽管指南已经很完善,但你可以在执行过程中加入以下思考,使其更具个性化:

· 与未来职业方向挂钩: 在学习每个模块时,可以思考它与未来求职岗位的关系。
· 如果你对后端开发感兴趣,就应格外深入地学习体系结构设计、非功能需求(性能、安全)和集成测试。
· 如果你对前端开发感兴趣,可以思考如何将敏捷方法(如与产品经理沟通用户故事)、组件化设计(与设计模式相关)应用到工作中。
· 如果你对测试开发感兴趣,那么第8章软件测试就是你的核心,需要深入挖掘自动化测试、测试框架等知识。
· 持续追踪一个开源项目: 可以在GitHub上找一个活跃的中小型开源项目,观察它的Issue讨论、Pull Request、版本发布说明等。你能直观地看到软件工程理论在真实世界中的应用,这是无比宝贵的经验。

结论:

这份学习指南不仅合理,而且远超一般意义上的“指南”。它是一份具有战略高度的学习框架和行动方案。如果你能按照这份指南的思路去主动学习、积极实践,你完全有潜力成为同届学生中在软件工程思维上最领先的那一部分人。

它帮助你回答的不仅是“这门课考什么”,更是“学完这门课,我能成为什么样的人”。

7.博文编辑页面的截图

image

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