---
url: /courses/software-engineering/index.md
---
# 软件工程

本课程围绕软件项目从需求提出到系统交付的完整过程展开，帮助学生理解软件开发不只是编写代码，还包括需求分析、系统设计、项目计划、团队协作、质量保证、测试交付和持续维护等关键活动。

课程强调“用工程化方法解决软件开发问题”，通过案例分析、文档编写、建模设计和小型项目实践，让学生建立规范的软件开发意识，并能够参与实际项目的分析、设计、实现和交付。

## 课程定位

《软件工程》是软件技术专业的核心专业基础课程，主要衔接程序设计、数据库、Web 开发等前置知识，并服务于后续综合项目开发、岗位实训和毕业设计。

通过本课程学习，学生应能够：

* 理解软件工程的基本思想和常见开发过程；
* 掌握需求获取、需求分析和需求规格说明的基本方法；
* 能够使用常见模型描述系统功能、业务流程和数据关系；
* 理解软件架构、模块划分、接口设计和数据库设计的基本原则；
* 能够编写基本的软件项目文档；
* 理解软件测试、缺陷管理和质量保证的作用；
* 具备项目计划、任务分解、版本管理和团队协作意识。

## 开始学习前

先用一分钟说明你的项目经验、学习目标和希望获得的帮助。课程会把结果保存为本机学习画像，供课程助教调整解释方式。

{{intake-survey:software-engineering-intake}}

## 学习路径

理解软件危机、软件工程的目标、软件生命周期，以及瀑布模型、迭代模型、敏捷开发等常见过程模型。

学习需求获取、用户故事、用例分析、业务流程梳理和需求规格说明书的基本写法。

学习模块划分、系统架构、接口设计、数据库设计和常见 UML 图的使用方法。

学习测试用例设计、缺陷跟踪、版本管理、部署交付、项目复盘和维护改进。

## 课程内容

本课程主要包含以下内容：

* 软件工程概述
* 软件生命周期与过程模型
* 可行性分析与项目立项
* 需求获取与需求分析
* 用例图、活动图、类图等常见建模方法
* 需求规格说明书编写
* 概要设计与详细设计
* 数据库设计与接口设计
* 编码规范与版本管理
* 软件测试基础
* 缺陷管理与质量保证
* 项目计划、任务分解与团队协作
* 软件交付、维护与项目复盘
* 综合项目文档与展示

## 学习成果

完成本课程后，学生应能够独立或协作完成以下任务：

1. 描述一个软件项目的生命周期和主要工作内容；
2. 根据业务场景识别用户、角色、功能和约束条件；
3. 编写基本的需求说明和用户故事；
4. 使用用例图、活动图等方式表达系统需求；
5. 根据需求进行模块划分和系统设计；
6. 编写数据库表结构、接口说明和页面功能说明；
7. 设计基础测试用例并记录缺陷；
8. 使用版本管理工具配合团队完成项目迭代；
9. 整理并展示一份小型软件项目文档。

## 实践任务

课程实践建议围绕一个小型管理系统展开，例如图书借阅系统、课程资源管理系统、社团活动报名系统或在线作业提交系统。

实践过程可分为以下任务：

1. 确定项目主题和用户角色；
2. 梳理业务流程和核心功能；
3. 编写需求规格说明；
4. 绘制用例图、活动图和核心类图；
5. 完成数据库设计和接口草案；
6. 编写测试用例和缺陷记录表；
7. 整理项目文档并进行课堂展示。

## 课程助教

课程助教会优先依据本页课程目标、软件工程知识点和教师经验回答，可用于澄清概念、检查项目文档思路和分析常见误区。

{{assistant-invite:software-engineering-overview-tutor}}
