首页 > 人才培养 > 本科教育 > 教学大纲 > 正文

《软件工程(Software Engineering)》教学大纲

    作者: 发布时间: 2025-11-05 15:09 访问次数:

《软件工程(Software Engineering)》教学大纲

制定时间:2025年04月

 

一、课程基本信息

(一)适用专业:计算机科学与技术

(二)课程代码:

(三)学分/课内学时:2学分/32学时

(四)课程类别:专业教育

(五)课程性质:必修/理论课

(六)先修课程:《数据结构与算法》、《数据库原理及应用》、《面向对象的程序设计方法》等

(七)后续课程:《软件安全开发技术综合实训》、《毕业设计》等

二、课程教学目标

本课程是计算机科学与技术专业的一门专业教育必修课程,本课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践”软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。通过本课程的学习,要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。本课程注重培养学生理论应用于实践的能力,课堂上教师向学生讲述软件工程中的相关原理和概念,并通过课程设计、实验,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。本课程对提高学生的软件开发能力和项目管理能力有重要的现实意义。

(一)具体目标

目标1:软件系统设计、开发的软件工程思想及其在开发团队中应用,实现对大型软件系统复杂工程问题的解决方案进行分析与改进;

目标2:能按软件工程思想正确表达一个实际工程问题的解决方案;

目标3:能够根据用户需求确定计算机应用系统设计目标。

 

(二)课程目标与毕业要求的对应关系

毕业要求

毕业要求指标点

课程目标

教学单元

评价方式

1.专业必需自然科学、工程基础和专业知识,能够用于解决计算机软件开发中的复杂工程问题。

1.5 软件系统设计、开发的软件工程思想及其在开发团队中应用,实现对大型软件系统复杂工程问题的解决方案进行分析与改进。

目标1

软件、软件危机、软件工程、软件生存周期、软件开发模型等方面的基本概念、特点、分类和发展趋势

作业

试卷考核

2. 能够应用自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析计算机软件系统中的复杂工程问题,以获得有效结论。

2.4 能按软件工程思想正确表达一个实际工程问题的解决方案。

目标2

编程标准和编程风格,面向对象的分析和设计方法,设计文档以代码形式进行实现

课内实验

试卷考核

3. 能够设计针对计算机应用系统设计中的复杂工程问题的解决方案,设计满足特定需求的系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。

3.1 能够根据用户需求确定计算机应用系统设计目标。

目标3

需求分析和软件设计的任务和原则,分析和设计的过程和方法,需求和设计文档的撰写

课内实验

试卷考核

三、教学内容与方法

(一)教学内容及要求

 

教学单元

教学内容

学习产出要求

推荐学时

推荐教学方式

支撑

课程目标

备注

1

软件工程概述

软件的概念、特点;软件危机的产生原因及其表现;软件工程的概念,以及软件工程的基本原则;软件过程的定义和基本活动;常用的几种软件过程模型;软件开发的方法;与软件开发项目相关的常用工具;软件工程人员的职业道德。课程思政:通过讲述软件工程,引入中国软件工程发展历程,简要介绍案例“青鸟工程”。

了解此课程的教学安排和考核方式。了解软件的概念、特点;了解软件危机的产生原因及其表现;掌握软件工程的概念,以及软件工程的基本原则;掌握软件过程的定义和基本活动;熟悉常用的几种软件过程模型;了解软件开发的方法;了解与软件开发项目相关的常用工具;了解软件工程人员的职业道德。

2

讲授

研讨

目标1

作业

2

敏捷软件开发

敏捷软件开发方法和敏捷宣言的基本原则;重要的敏捷开发实践,例如Sprint、用户故事、Backlog等;面向敏捷开发的Scrum、Kanban、XP方法。课程思政:通过讲述敏捷软件开发,引入中国目前面临“卡脖子”的问题,简要介绍案例“微信”。

理解敏捷软件开发方法和敏捷宣言的基本原则;理解重要的敏捷开发实践,例如Sprint、用户故事、Backlog等;理解面向敏捷开发的Scrum、Kanban、XP方法;理解敏捷开发和DevOps是一种理念,而CI/CD是实现这两者理念的一种方法。

2

讲授

目标1

作业

3

可行性研究与项目开发计划

可行性研究的目的、意义和内容;可行性研究的主要步骤;项目开发计划的内容。课程思政:通过讲述可行性的必要性,引入中国自主研发的可行性,简要介绍案例“钉钉软件”。

了解可行性研究的目的、意义和内容;掌握可行性研究的主要步骤;了解项目开发计划的内容。

2

讲授

目标1

作业

4

需求分析与结构化分析

需求分析的任务和原则;进行需求分析的步骤和方法;了解需求管理;需求分析的常用方法;软件原型设计;结构化分析的几种常用建模方法;结构化分析的几种图形工具。课程思政:通过讲述需求分析,引入软件开发中需求分析为什么很必要,简要介绍案例“汉字激光照排系统”。

了解需求分析的任务和原则;熟悉进行需求分析的步骤和方法;了解需求管理;熟悉需求分析的常用方法;了解软件原型设计;掌握结构化分析的几种常用建模方法;掌握结构化分析的几种图形工具。

4

讲授

案例

实验

 

目标1

实验

5

软件设计与结构化设计

软件设计的意义和目标;软件设计的原则;软件设计的分类;软件体系结构;结构化设计与结构化分析的关系;表示软件结构的图形工具;面向数据流的软件设计方法;面向数据结构的设计方法;接口设计和数据设计;过程设计的工具和方法;软件设计评审。课程思政:通过讲述结构化设计,引入软件开发中软件设计为什么很重要,简要介绍案例“高斯数据库”。

了解软件设计的意义和目标;掌握软件设计的原则;了解软件设计的分类;了解软件体系结构;了解结构化设计与结构化分析的关系;熟悉表示软件结构的图形工具;掌握面向数据流的软件设计方法;熟悉面向数据结构的设计方法;熟悉接口设计和数据设计;掌握过程设计的工具和方法;了解软件设计评审。

4

讲授

案例

实验

 

目标1

目标3

实验

6

软件实现

编程语言的发展与分类;选择编程语言时所需考虑的因素;良好的编程风格与编码规范;代码重用;分析和评价代码的质量。课程思政:通过讲述软件实现,引入编写代码的重要性,简要介绍案例“杀毒软件之父”—王江民。

了解编程语言的发展与分类;了解选择编程语言时所需考虑的因素;掌握良好的编程风格与编码规范;了解代码重用;了解分析和评价代码的质量。

4

讲授

案例

实验

 

目标2

实验

7

软件测试

软件测试的原则;软件测试的常用模型;软件测试的分类;测试用例和测试用例设计方法;等价类划分法;黑盒测试的其他方法;逻辑覆盖法;白盒测试的其他方法;软件测试的一般步骤,以及每个阶段性测试的关注点;回归测试、自动化测试;软件调试。课程思政:通过讲述软件测试,引入软件测试是保证软件质量的重要步骤,简单介绍案例“中国的工业软件”。

掌握软件测试的原则;了解软件测试的常用模型;了解软件测试的分类;了解测试用例和测试用例设计方法;掌握等价类划分法;熟悉黑盒测试的其他方法;掌握逻辑覆盖法;熟悉白盒测试的其他方法;熟悉软件测试的一般步骤,以及每个阶段性测试的关注点;了解回归测试、自动化测试;熟悉软件调试。

4

讲授

案例

实验

研讨

 

目标2

目标3

实验

8

软件维护

软件部署与软件交付;软件维护的过程和分类;软件的可维护性;软件维护的副作用;软件运维;软件再工程—逆向工程、重构、正向工程。课程思政:通过讲述软件维护与软件工程管理,引入软件开发不仅仅是编码,还有别的相关任务需要完成,简要介绍案例“12306”。

熟悉软件部署与软件交付;了解软件维护的过程和分类;了解软件的可维护性;了解软件维护的副作用;了解软件运维;了解软件再工程—逆向工程、重构、正向工程。

1

讲授

目标3

 

作业

9

面向对象方法与UML

面向对象的基本概念;面向对象软件工程方法的特征与优势;面向对象的实施步骤;统一建模语言UML;UML的9种图。课程思政:通过讲述面向对象方法和统一建模语言,引入使用面向对象方法比使用结构化方法的优势,简要介绍案例“抖音”。

理解面向对象的基本概念;理解面向对象软件工程方法的特征与优势;掌握面向对象的实施步骤;了解统一建模语言UML;掌握UML的9种图。

2

讲授

目标1

 

作业

10

面向对象分析

面向对象分析的过程和原则;面向对象建模的3种模型,对象模型、动态模型和功能模型。课程思政:通过讲述面向对象分析,引入使用面向对象分析方法比使用面向结构化方法的优势,简要介绍案例“北斗卫星导航系统”。

理解面向对象分析的过程和原则;掌握面向对象建模的3种模型,对象模型、动态模型和功能模型。

2

讲授

目标1

 

作业

11

面向对象设计

面向对象设计与结构化设计的不同,面向对象设计与面向对象分析的关系;面向对象设计的过程、原则和启发规则;面向对象系统的分解方法;面向对象问题域、人机交互、任务管理和数据管理各子系统的设计方法;对象设计的方法;软件系统的设计模式。课程思政:通过讲述面向对象设计,引入使用面向对象设计方法比使用结构化设计方法的优势,简要介绍案例“银河麒麟”。

了解面向对象设计与结构化设计的不同,理解面向对象设计与面向对象分析的关系;理解面向对象设计的过程、原则和启发规则;熟悉面向对象系统的分解方法;熟悉面向对象问题域、人机交互、任务管理和数据管理各子系统的设计方法;掌握对象设计的方法;熟悉软件系统的设计模式。

2

讲授

目标1

 

作业

12

面向对象实现

面向对象语言的选择;面向对象程序设计风格。课程思政:通过讲述面向对象程序设计风格的重要性,简要介绍案例“PaddlePaddle”。

了解面向对象语言的选择;熟悉面向对象程序设计风格。

1

讲授

目标1

 

作业

13

面向对象测试

面向对象测试与传统测试的区别;面向对象的单元测试、集成测试、系统测试和回归测试;面向对象测试用例设计的基本概念和面向对象编程对测试的影响;基于故障的测试、基于场景的测试以及表层结构和深层结构的测试。课程思政:通过讲述面向对象测试与传统测试的区别,引入面向对象测试为什么如此重要,简要介绍案例“WPS”。

了解面向对象测试与传统测试的区别;熟悉面向对象的单元测试、集成测试、系统测试和回归测试;理解面向对象测试用例设计的基本概念和面向对象编程对测试的影响;了解基于故障的测试、基于场景的测试以及表层结构和深层结构的测试。

1

讲授

目标3

 

作业

14

软件工程管理

软件估算的概念、方法、原则与技巧;制定软件开发进度计划的方法;软件开发人员组织的形式;软件开发风险管理的概念;软件质量保证的措施;软件配置管理的相关概念;软件工程标准与软件文档的概念;软件过程能力成熟度模型;软件项目管理的相关内容。课程思政:通过讲述软件工程管理,引入软件开发不仅仅是编码,还需要软件工程管理,简要介绍案例“任正飞”。

了解软件估算的概念、方法、原则与技巧;掌握制定软件开发进度计划的方法;了解软件开发人员组织的形式;了解软件开发风险管理的概念;了解软件质量保证的措施;了解软件配置管理的相关概念;熟悉软件工程标准与软件文档的概念;熟悉软件过程能力成熟度模型;了解软件项目管理的相关内容。

1

讲授

目标2

 

作业

(二)教学方法

1.课堂讲授

(1)本课程教学方法以教师为主导的启发式讲授教学法为主,讨论(提问)式教学为辅,结合课外学习的教学方法。实验以学生动手实验为主,教师的启发式讲授教学法为辅,并结合讨论(提问)式教学,以及结合课外学习的教学方法。

(2)本课程概念较多,因此教学形式以讲授方式为主。本课程拟采用多媒体PPT的教学方法,增加课堂信息,浅显通俗地对概念、定义和原理进行解释,增加教学的直观性,教学过程中注意各个知识点的关联性,以使学生更好地理解课程内容。

(3)对课程中关键性概念、设计思想方面的问题可辅以课堂讨论的形式。

(4)为加强和落实动手能力的培养,每章课后应安排作业,帮助学生学习和应用。

2.实验教学

实验教学是软件工程课程中教学过程中重要的环节,课程必做实验4个,各实验按照实验指导书要求学生独立完成,并提交实验报告。

四、考核及成绩评定

(一)考核内容及成绩构成

课程考核以考核学生能力培养目标的达成为主要目的,以检查学生对各知识点的掌握程度和应用能力为重要内容,包括平时考核和期末考核两个部分。平时考核采用作业、实验等方式评定学生成绩;期末考核采用笔试评定学生成绩。各课程目标的考核内容、成绩评定方式、目标分值建议如下:

课程目标

考核内容

成绩评定方式

成绩占总评分比例

目标成绩占当次考核比例

学生当次考核平均得分

目标达成情况计算公式

目标1:软件系统设计、开发的软件工程思想及其在开发团队中应用,实现对大型软件系统复杂工程问题的解决方案进行分析与改进。

掌握软件、软件危机、软件工程、软件生存周期、软件开发模型等方面的基本概念、特点、分类和发展趋势的基础知识。掌握需求分析和软件设计的任务和原则,理解分析和设计的过程和方法,能完成需求和设计文档的撰写。

试卷考试

15%

30%

T1

作业

15%

100%

A1

目标2:能按软件工程思想正确表达一个实际工程问题的解决方案。

掌握编程标准和编程风格,理解面向对象的分析和设计方法,能按照软件工程思想,将设计文档以代码形式进行实现。掌握软件测试的原理和方法,理解测试策略和规范,能使用常用的软件测试工具进行测试用例的设计,并编写简单的软件测试代码。

试卷考试

10%

20%

T2

实验

20%

100%

E1

目标3:能够根据用户需求确定计算机应用系统设计目标。

掌握软件工程管理的基本概念,从工程实践角度理解可行性研究、成本估算、软件质量保证的任务和方法。

试卷考试

 

 

25%

 

 

50%

 

 

T3

实验

15%

100%

E2

总评成绩(100%)=试卷考试(50%)+实验(35%)+作业(15%)

100%

——

——


(二)平时考核成绩评定

1. 实验

必做实验4次,支撑目标2、目标3,共占总评分35%,目标2占20%、目标3占15%。对应目标的评分标准如下:

对应目标

目标2:能按软件工程思想正确表达一个实际工程问题的解决方案。

目标3:能够根据用户需求确定计算机应用系统设计目标。

考查点

实际工程问题的解决方案

计算机应用系统设计目标

成绩比例

60%

40%

评分标准

100%

90%

具有能深刻理解软件工程内涵的能力,具有能深刻理解软件过程中的活动。

具有能深刻理解且掌握软件分析与设计的能力,具有能深刻理解软件工程职业道德与行为规范的能力。

89.9%

80%

具有较深刻理解软件工程内涵的能力,具有较深刻理解软件过程中的活动的能力。

具有较深刻理解且掌握软件分析与设计的能力,具有较深刻理解软件工程职业道德与行为规范的能力。

79.9

70%

具有一定理解软件工程内涵的能力,具有一定理解软件过程中的活动的能力。

具有一定理解且掌握软件分析与设计的能力,具有一定理解软件工程职业道德与行为规范的能力。

69.9%

60%

初步理解软件工程内涵的能力,初步理解且掌握软件过程中的活动的能力。

初步理解且掌握软件分析与设计的能力,初步理解软件工程职业道德与行为规范的能力。

59.9%至

0

不能理解软件工程内涵,不能理解软件过程中的活动。

不能理解且不能掌握软件分析与设计,不能理解软件工程职业道德与行为规范。

2. 作业:

作业5次,支持目标1,总评分15%。由教师设置每一部分的学习点和作业,由平台根据答案对作业自动评分或学生互评得分。


五、参考学习资料

(一)推荐教材:《软件工程——理论与实践》,吕云翔,人民邮电出版社,2024,第3版,ISBN:9787115624208。

    (参考教材:《软件工程原理与方法》,张爽,人民邮电出版社,2023,第1版,ISBN: 9787115620569。