软件工程第一次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24/homework/15628| |
| 这个作业的目标 | 1. Github团队主页搭建 2. 团队Logo文生图任务 3. 在博客园发一篇随笔 |
| 学号 | 3124004363 |
| 团队主页的网址:https://github.com/pixelllip/mood-software/tree/main | |
| 团队logo: | |
![]() |
|
成员介绍:![]() |
|
![]() |
|
![]() |

自我评估:目前你已经具备了哪些专业知识和能力:略微掌握C语言和python的基本语法
你对哪类技术方向有兴趣:前端开发
你觉得自己还缺少什么样的能力:独自解决项目开发代码的能力
你之目前的代码量:50~100行 本学期这门课完成后,希望达到的代码量:1000行
最期待在课程中能够学习到什么知识,有什么收获:能有所改变
请选择一个Chatgpt类型的工具(如:chatgpt、文心一言,通义千问,讯飞星火等)生成一份简单的软件工程这门课的学习指南,并将指南复制到这篇随笔中。分析这份学习指南是否合理、是否对你有帮助。
这是一份为你准备的《软件工程》学习指南。这份指南旨在帮你建立这门课的宏观图景,并掌握核心知识点。考虑到你需要“简单”的版本,我会尽量提炼核心概念,避免陷入过于琐碎的细节。
软件工程学习指南:从“写代码”到“做产品”
一、 核心思想:什么是软件工程?
软件工程不是单纯的“写代码”,而是运用工程化的原则和方法,来开发、维护和管理软件,目的是在预算内、按时交付高质量、满足用户需求的软件。
一句话核心: 如何系统性地、靠谱地做出好软件。
二、 关键知识模块
1. 软件过程与生命周期
软件和人一样,有从出生到消亡的过程,即软件生命周期。其核心是各种开发模型:
- 瀑布模型: 最经典、最线性。按顺序经过:需求→设计→实现→测试→维护。
- 特点: 简单清晰,但难以应对需求变更。
- 敏捷开发: 目前业界主流,强调迭代、快速响应变化、用户参与。
- 核心实践: Scrum(每日站会、冲刺Sprint、看板)、极限编程(XP)。
- 价值观: 个体与互动 > 流程与工具;可工作的软件 > 详尽的文档。
2. 需求工程
搞清楚“到底要做什么”,这是最容易出错的一环。
- 需求获取: 访谈、问卷调查、用户故事。
- 需求分析: 区分功能性需求(系统做什么)和非功能性需求(性能、安全、可用性等)。
- 需求规格说明: 输出《软件需求规格说明书》。
- 需求验证与变更管理: 确认需求正确,并管理后续的变更。
3. 软件设计
将需求转化为架构蓝图,讲究“高内聚,低耦合”。
- 结构化设计: 面向过程,用数据流图、模块结构图。
- 面向对象设计: 重点掌握 UML(统一建模语言) 的常用图:
- 用例图: 谁(角色)用系统做什么。
- 类图: 类的属性和方法,以及类之间的关系(继承、关联、依赖)。
- 顺序图: 对象之间交互的时间顺序。
- 设计原则: SOLID原则 是重中之重(单一职责、开闭原则、里氏替换等)。
4. 软件测试
测试不是为了证明程序没错,而是为了找出错误。
- 测试级别:
- 单元测试: 测试最小代码模块(通常用JUnit等)。
- 集成测试: 测试模块之间的接口。
- 系统测试: 测试整个系统是否满足需求。
- 验收测试: 用户确认是否满意。
- 测试方法:
- 黑盒测试: 不看代码,只关注输入输出(等价类划分、边界值分析)。
- 白盒测试: 看代码内部逻辑(语句覆盖、分支覆盖、路径覆盖)。
5. 软件项目管理
保证项目不“崩盘”。
- 人员: 团队结构、角色分配。
- 进度: PERT图(依赖关系)、甘特图(时间线)、燃尽图(敏捷进度)。
- 风险: 识别、分析、应对。
6. 软件维护
软件交付后才是真正的开始。维护通常占整个生命周期成本的60%-70%。
三、 学习建议与应试技巧
1. 理解 vs. 背诵
- 不要死记硬背定义。试着用“如果不用这个,会发生什么?”的角度去理解。
- 例子: 为什么要有版本控制(Git)?因为两个人同时改代码会覆盖。
2. 重点掌握“图”
- 数据流图(结构化分析)、E-R图(数据库)、UML图(面向对象)是考试的常客。一定要会画、会读、会区分。
3. 区分易混淆概念
- 验证 vs. 确认:
- 验证:我们是否正确地构建了产品?(做对了吗?)
- 确认:我们是否构建了正确的产品?(做的东西对吗?)
- 黑盒 vs. 白盒: 黑盒看功能,白盒看逻辑。
- 软件过程 vs. 软件模型: 过程是一套活动,模型是这套活动的具体组织方式。
4. 结合实际项目(或课程设计)
如果你正在做课程设计,把理论套进去:
- 你的项目用了瀑布还是敏捷?(哪怕自己做个简单的迭代计划)
- 写需求文档时,区分功能和非功能需求。
- 用Git管理代码,用测试框架写几个单元测试。
这样做一遍,比看10遍书都管用。
5. 典型考试题型应对
- 选择题/填空题: 侧重基本概念(如瀑布模型的阶段、CMMI级别、软件危机的表现)。
- 简答题: 对比两个概念(如黑盒测试与白盒测试的区别),简述某个原则(如开闭原则)。
- 应用题:
- 给你一个场景,画出用例图、类图或顺序图。
- 给你一段需求,设计测试用例(等价类划分)。
- 给你一个项目表格,画出甘特图或计算PERT图的关键路径。
四、 推荐工具(不用全学,了解即可)
- 项目管理: Jira, Trello
- 版本控制: Git, GitHub/GitLab
- 建模/绘图: draw.io, Visual Paradigm, PlantUML
- 测试: JUnit (Java), pytest (Python), Postman (接口测试)
最后:
软件工程是一门“预防医学”式的学科。很多知识点可能在你只有一个人写作业时觉得“多此一举”,但当你未来进入团队协作、维护一个长达数年的系统时,你会发现——这些工程化方法就是拯救你于水火之中的“安全带”。
祝你学习顺利!如果有具体的章节(比如UML图、测试用例设计)搞不懂,随时可以继续问我。




浙公网安备 33010602011771号