软件工程(单门课程)教学计划、标准与重难点详解

软件工程(单门课程)教学计划、标准与重难点详解
一、课程基本信息

项目
详情
课程名称
软件工程
适用专业
计算机科学与技术、软件工程、人工智能等计算机类本科专业
先修课程
数据结构与算法、Java/Python 程序设计、数据库原理与应用、计算机网络
总学时
64 学时(理论 40 学时 + 实践 24 学时)
学分数
4 学分
课程定位
专业核心课,衔接编程基础与工程实践,培养软件研发的工程化思维与能力

二、教学计划(按教学模块递进,适配 64 学时)
(一)总体教学目标
通过理论学习与工程实践,使学生掌握软件工程的基本理论、核心方法与主流工具,理解软件生命周期各阶段的核心任务与规范,具备小型软件系统的需求分析、设计、编码、测试与项目管理能力,树立工程化、规范化、团队协作的研发理念。
(二)模块式教学内容安排(分 8 个模块,含理论 + 实践)

教学模块
核心内容
学时分配(理论 + 实践)
教学目标
实践任务
模块 1:软件工程概述
1. 软件工程定义、本质与发展历程软件危机与软件工程化解决方3. 软件生命周期(瀑布模型、迭代模型、敏捷模型等)4. 软件工程的核心原则(模块化、抽象、信息隐藏等)
4+0
理解软件工程的核心价值,掌握不同过程模型的适用场景
案例分析:对比瀑布模型与敏捷模型在电商系统中的应用,撰写分析报告
模块 2:需求工程
1. 需求的定义、分类(功能 / 非功能需求) 需求获取方法(访谈、问卷、原型法)3. 需求分析工具(用例图、类图、活动图). 需求规格说明书(SRS)编写规范 > 5. 需求验证与变更管理
6+4
掌握需求获取与分析的核心方法,能独立编写 SRS 文档
实践:以 “校园二手交易平台” 为目标,完成需求调研,绘制用例图,编写 SRS 文档
模块 3:软件设计基础
1. 软件设计的原则与目标架构设计(分层架构、MVC 架构、微服务架构). 详细设计(模块划分、接口设计、数据结构设计)4. 设计文档(软件设计说明书 SDD)编写
6+4
理解架构设计与详细设计的区别,能完成中小型系统的设计
实践:基于模块 2 的需求,设计校园二手交易平台的架构,绘制架构图与模块接口图,编写 SDD 文档
模块 4:软件设计模式
1. 设计模式的定义、分类(创建型、结构型、行为型)2. 核心设计模式应用(单例、工厂、代理、观察者、策略模式等)3. 设计模式的选型原则与反模式规避
6+2
掌握 10 + 常用设计模式,能在设计中灵活应用
实践:用 Java/Python 实现 “购物车折扣计算” 功能,分别采用策略模式与简单 if-else 实现,对比优劣
模块 5:软件编码与实现
1. 编码规范(命名规范、注释规范、代码格式)>2. 版本控制工具(Git)的核心操作(提交、分支、合并、冲突解决)3. 单元测试基础(JUnit/Pytest)与代码覆盖率 4. 代码评审流程与工具(Gerrit)
4+4
能按规范编码,熟练使用 Git 与单元测试工具,理解代码评审的重要性
实践:1. 基于模块 3 的设计,编写校园二手交易平台核心模块(用户登录、商品发布)代码;2. 使用 Git 管理代码,创建分支并合并;3. 编写单元测试用例,覆盖率≥70%
模块 6:软件测试技术
1. 软件测试的定义、原则与分类(黑盒 / 白盒 / 灰盒测试) 测试用例设计方法(等价类划分、边界值分析、场景法)3. 自动化测试工具(Selenium、Postman)应用 > 4. 测试报告编写规范 缺陷管理(Bug 生命周期、Jira 工具使用)
6+4
掌握核心测试方法与工具,能独立设计测试用例并执行测试
实践:对模块 5 编写的核心代码,设计黑盒测试用例,使用 Selenium 完成登录功能自动化测试,提交测试报告与 Bug 清单
模块 7:软件项目管理
1. 项目管理的核心要素(范围、时间、成本、质量). 进度管理(甘特图、里程碑计划、任务分解 WBS)3. 风险管理(风险识别、评估、应对策略)4. 团队协作模式(Scrum 敏捷协作、每日站会、迭代评审)
4+2
理解项目管理的核心流程,能完成小型项目的进度规划与风险控制
实践:以校园二手交易平台为项目,绘制甘特图,分解 WBS 任务,制定风险应对计划,模拟 Scrum 每日站会
模块 8:软件维护与演化
1. 软件维护的定义、分类(改正性、适应性、完善性维护)2. 软件可维护性设计原3. 软件重构与技术债务管理 > 4. 软件工程前沿技术(DevOps、CI/CD、低代码开发)
4+4
理解软件维护的重要性,掌握可维护性设计方法,了解前沿技术趋势
实践:1. 对模块 5 的代码进行重构,优化可读性与性能;2. 搭建简单 CI/CD 流程(使用 GitHub Actions),实现代码提交后自动测试
模块 9:综合项目实战
团队协作完成中小型软件系统的全生命周期开发(从需求到维护)
0+12
整合所有模块知识,提升团队协作与工程实践能力
实战:3-5 人一组,开发 “校园二手交易平台” 完整版本,提交需求文档、设计文档、代码、测试报告、维护手册,进行项目答辩

三、教学标准(知识、能力、素养三维度)
(一)知识目标(需掌握、理解、了解三个层次)

层次
具体要求
掌握
1. 软件工程的核心概念、原则与生命周期各阶段的核心任务;>2. 需求分析、软件设计、编码、测试、项目管理的核心方法与工具;>3. 至少 10 种常用设计模式的应用场景与实现方式;4. 需求规格说明书、设计文档、测试报告的编写规范; Git、JUnit、Selenium、Jira 等工具的核心操作。
理解
1. 不同软件过程模型(瀑布、敏捷、迭代)的优缺点与适用场景;2. 软件架构设计的核心思想(模块化、分层、松耦合);3. 软件可维护性、可扩展性、可靠性的设计原则;>4. 风险管理与团队协作的重要性。
了解
1. 软件工程的发展历程与前沿趋势(DevOps、低代码、AI 辅助开发);2. 大型复杂软件系统的研发流程与挑战;>3. 软件工程相关的法律法规与行业规范(如软件著作权、数据安全)。

(二)能力目标(基础能力、核心能力、综合能力)

能力类型
具体要求
基础能力
1. 具备文献检索与技术文档阅读能力;2. 能使用 UML 工具(StarUML、Visio)绘制用例图、类图等; 能按规范编写代码与技术文档。
核心能力
1. 需求分析能力:能独立完成中小型系统的需求调研与分析,编写合格的 SRS 文档; 设计能力:能完成中小型系统的架构设计与详细设计,合理应用设计模式;. 编码与测试能力:能按设计文档编码,设计测试用例并执行测试,定位与修复 Bug;. 工具应用能力:熟练使用版本控制、测试、项目管理工具。
综合能力
1. 团队协作能力:能在团队中承担具体角色,通过沟通协作完成项目;>2. 问题解决能力:能解决研发过程中遇到的技术、管理类问题;3. 创新能力:能在现有方法基础上,提出优化方案或创新思路。

(三)素养目标(职业素养、工程素养、道德素养)

素养类型
具体要求
职业素养
1. 树立工程化、规范化的研发理念,杜绝 “黑客式” 编程;2. 具备责任心,对自己编写的代码、设计的方案负责;3. 养成持续学习的习惯,关注行业技术发展趋势。
工程素养
1. 具备成本意识,在设计与开发中平衡功能、性能与成本;. 具备质量意识,重视软件的可靠性、安全性、可维护性;3. 具备风险意识,能提前识别研发过程中的潜在风险并应对。
道德素养
1. 遵守软件行业法律法规,尊重知识产权,杜绝抄袭与侵权;. 重视用户数据安全与隐私保护,在研发中落实数据安全规范;3. 树立正确的职业价值观,拒绝参与不良软件(如恶意软件、诈骗软件)的研发。

四、教学重难点及突破方法
(一)核心重点(必须掌握的核心内容)

重点内容
重点说明
教学方法
需求工程与用例建模
需求是软件研发的基础,用例图是需求分析的核心工具,直接影响后续设计与编码的准确性
1. 理论讲解 + 案例演示(以电商系统为例,拆解用例图绘制步骤);2. 分组实践:让学生针对真实场景调研,教师逐组指导用例图优化;>3. 优秀作业展示与点评,强化规范。
软件架构设计与设计模式应用
架构设计决定系统的扩展性与可维护性,设计模式是解决通用问题的最佳实践
1. 采用 “架构案例拆解” 教学:分析 Spring Boot 框架的分层架构、电商系统的微服务架构;. 设计模式 “代码 + 场景” 结合:每个模式配实际应用场景(如单例模式在数据库连接池中的应用),并演示代码实现;3. 设计重构练习:提供 “反模式” 代码,让学生用设计模式优化。
软件测试用例设计与自动化测试
测试是保障软件质量的核心,自动化测试是企业实际研发的必备技能
1. 理论讲解 + 工具实操:先讲测试用例设计方法,再用 Selenium/Postman 现场演示自动化测试流程;. 实战驱动:以学生编写的代码为测试对象,要求设计全覆盖测试用例,执行自动化测试并提交 Bug;>3. 引入企业真实测试案例,让学生了解测试流程与标准。
团队协作与项目管理
软件工程是团队活动,项目管理能力直接影响项目成败
1. 模拟企业协作场景:将学生分组,分配产品经理、开发、测试等角色,按 Scrum 流程推进项目;2. 引入 Jira/GitHub Projects 工具,让学生实战进度管理与任务分配;3. 项目复盘:每个迭代后组织复盘会,分析进度延误、沟通不畅等问题的解决方案。

(二)教学难点(学生易混淆、难掌握的内容)

难点内容
难点原因
突破方法
不同软件过程模型的选型
学生难以理解不同模型的适用场景,容易机械套用
1. 对比教学:制作 “过程模型对比表”,明确瀑布模型(需求稳定场景)、敏捷模型(快速迭代场景)、迭代模型(大型复杂系统)的适用条件;2. 情景模拟:给出不同项目场景(如政府办公系统、互联网创业项目),让学生分组讨论选型并说明理由;3. 企业案例分享:邀请企业工程师讲解实际项目中模型的选择与调整。
设计模式的灵活应用(而非死记硬背)
学生容易记住模式的代码结构,但不会结合场景选型,或过度设计
1. 问题驱动教学:先提出实际研发问题(如 “如何避免频繁修改折扣计算逻辑”),再引入对应的设计模式(策略模式);>2. 反例教学:展示 “过度使用设计模式” 的代码,分析其弊端;>3. 开放式练习:给出一个功能需求(如 “用户登录认证”),让学生用不同设计模式实现,对比优劣。
需求的准确性与完整性
学生缺乏实际调研经验,容易遗漏关键需求或产生歧义需求
1. 实操训练:提供真实用户群体(如校园学生),让学生现场访谈、发放问卷,教师指导调研技巧;2. 需求评审模拟:组织学生扮演 “客户” 与 “开发”,对需求文档进行评审,提出质疑(如 “二手交易平台是否支持上门取货”);>3. 引入需求规格说明书模板与检查清单,让学生按清单自查需求完整性。
软件可维护性设计
学生关注功能实现,忽视代码可读性、扩展性,导致后续维护困难
1. 对比教学:展示 “可维护性差” 的代码(无注释、命名混乱、耦合度高)与 “可维护性好” 的代码,分析差异;>2. 重构实践:让学生对自己早期编写的代码进行重构,优化命名、注释、模块划分;. 引入代码评审标准(如 Google 代码规范),让学生按标准互评代码。

五、考核方式(过程性考核 + 终结性考核,注重实践能力)

考核环节
占比
考核内容
考核方式
课堂表现与作业
20%
课堂发言、案例分析报告、模块实践任务完成质量
教师评分 + 小组互评
阶段测试
20%
需求分析、设计模式、测试技术等核心知识点
闭卷考试(含案例分析题、设计题)
综合项目实战
40%
项目需求文档、设计文档、代码质量、测试报告、团队协作表现
项目答辩 + 文档评审 + 代码评审
期末考试
20%
软件工程全知识点(理论 + 实践)
开卷考试(含综合设计题、项目管理案例题)

六、教学资源与工具
(一)教材与参考书
  1. 主教材:《软件工程导论》(张海藩,第 6 版)
  1. 参考书:《Head First 设计模式》《敏捷软件开发:原则、模式与实践》《软件测试实战》
  1. 行业规范:《GB/T 8567-2006 计算机软件文档编制规范》
(二)工具支持
  1. 建模工具:StarUML、Visio、DrawIO(绘制 UML 图)
  1. 开发工具:IntelliJ IDEA、PyCharm(编码)
  1. 版本控制:Git+GitHub/GitLab(代码管理)
  1. 测试工具:JUnit/Pytest(单元测试)、Selenium(自动化测试)、Postman(接口测试)
  1. 项目管理:Jira、GitHub Projects(任务管理与进度跟踪)
  1. 文档工具:Markdown、LaTeX(技术文档编写)