《软件工程》是软件工程专业的专业必修课;计算机科学与技术、网络工程专业的专业限选课。本课程主要介绍软件工程的概念、技术和方法,包括软件的开发模型、可行性分析、需求分析、软件设计、编码、测试、维护;面向数据流的分析与设计方法、面向对象的分析与设计方法;并对软件重用、快速原型技术作简要的介绍。旨在培养学生分析与设计实际软件系统的能力及具有熟练使用各类流行软件技术解决实际问题的能力和控制软件质量的能力。
课程团队教学本着以学生为中心,以项目驱动,学生通过项目在做中学,掌握软件工程的基本概念和原则,掌握工程化的方法高效地开发高质量软件的初步能力,以及项目管理的初步能力,同时提升团队合作的能力。
要求掌握软件工程的基本概念和原则,能运用软件工程的基本原理、模型、方法和过程开发简单的应用软件,增强软件开发的工程化和规范化意识,提高高效率、高质量开发软件的能力。
《 软件工程》课程教学大纲
课程名称(中文): 软件工程
课程名称(英文): Software Engineering
课程编号: 112059
课程类别: 理论课程 (理论课程、实验课程(独立实验)、实习实训类实践课程)
课程性质: 必修课 (必修课、选修课)
学时学分:总学时 56 学分 3 其中实践学时 16
开出时间: 二 年级 第2 学期
开课单位: 计算机科学与软件学院、大数据学院
适用专业: 软件工程
先修课程:C程序设计、计算机导论、面向对象的程序设计、算法与数据结构、数据库系统原理
执 笔: 熊芳敏
校 对 人: 岑宇森
审 核:
一、课程的教学目标和教学要求
(一)教学目标:
通过对《软件工程》课程进行课程思政的实践与改革,使学生在加强社会主义核心价值观的同时,理解掌握软件项目开发与维护的一般过程,掌握一些常用的软件开发理论、方法、技术与标准以及计算机辅助软件开发工具和环境,增强软件开发的工程化和规范化意识,培养高效率、高质量开发软件的能力,能够综合运用专业知识、方法和技术,设计针对计算机应用的工程问题的解决方案,以及满足特定需求的应用系统,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。具备以下核心能力
核心能力1:人文社会科学素养、良好职业规范;
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
(二)教学要求:
《软件工程》课程的教学要求:紧密结合当前软件工程的理论与实践,全面、系统地反映软件工程课程的全貌,讲授软件工程的基本概念,开发模型,开发管理,需求分析和软件设计的方法与技术以及软件实现和维护,力求学生在实际的软件开发过程中能够灵活运用软件工程的技术和方法;课程思政与专业教学同向同行,传授知识的同时加强学生的社会主义核心价值观,使之具有良好的职业道德、敬业精神和严格的自律意识,具有行业所需的工程能力、质量意识、团队精神、创新精神,具有较高的思想政治素质和道德品质,较强的法治、诚信和行业政策法规意识。
二、教学时数分配
章节 | 教学内容 | 教学时数 |
1 | 软件工程学概述 | 4 |
2 | 可行性研究 | 2 |
3 | 需求分析-SA | 12(8理论+4实验) |
4 | 总体设计-SD | 8(4理论+4实验) |
5 | 详细设计 | 4 |
6 | 编码 | 2 |
7 | 软件测试 | 4 |
8 | 面向对象分析 | 8(4理论+4实验) |
9 | 面向对象设计与实现 | 8(4理论+4实验) |
10 | 软件维护 | 2 |
11 | 项目管理 | 2 |
合计 | 56 |
三、主要教学内容与教学方法
第一章 软件工程学概述(2学时)
【支撑的课程目标】核心能力1:人文社会科学素养、良好职业规范
【教学要求】
1.掌握软件及软件危机的概念;
2.掌握软件工程及软件生存周期的概念;
3.掌握几种典型的软件开发模型的定义及其特点;
4.了解CASE工具及环境的概念。
【教学重点】软件、软件危机及软件生存周期的概念,开发模型的定义及其特点
【教学难点】开发模型的定义及其特点
【教学方法】多媒体课堂讲授、提问法
【教学基本内容】
(1)软件的概念
(2)软件工程的概念
(3)软件生存周期
(4)软件开发模型
(5)CASE工具及环境
第二章 可行性分析(2学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
【教学要求】
1. 了解可行性研究的任务
2. 了解可行性研究过程、掌握项目可行性论证的概念和方法
3. 学习系统流程图
4. 熟练掌握数据字典的定义方法
【教学重点】可行性论证、数据字典的定义
【教学难点】可行性论证、数据字典的定义
【教学方法】案例教学法、讲授法
【教学基本内容】
1. 可行性研究的任务
2. 可行性研究过程
3. 系统流程图
4. 初识数据字典
第三章 需求分析-SA(12学时)
【支撑的课程目标】核心能力7
【教学要求】
1. 理解软件需求分析阶段的主要任务及其重要性;
2. 掌握软件需求分析的主要过程及需求评审的概念;
3. 理解掌握获取软件需求的基本技术手段及方法;
4. 掌握数据流图、ER图、状态转化图;
5. 掌握数据字典的应用;
6. 掌握软件需求规格说明书的基本格式。
【教学重点】
1. 获取初步需求的技术;
2. 需求建模、问题抽象、问题分解和需求建模的概念
3. 基于数据流图进行需求分析的基本过程
4. ER图、状态转化图
【教学难点】获取初步需求的方法、基于数据流图进行需求分析
【教学方法】案例教学法、演示法、做实验
【教学基本内容】
1. 软件需求分析阶段的主要任务及其重要性;
2. 软件需求分析的主要过程;
3. 获取软件需求的基本技术手段及方法;
4. 需求建模:数据流图、ER图、状态转化图,理解数据字典的作用,并掌握数据字典中数据条目的定义方法;
5. 需求规格说明与评审。
第四章 总体设计-SD(8学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
【教学要求】
1.理解软件设计的主要任务;
2.理解掌握内聚度、耦合度、模块化与信息隐藏的概念;
3.启发规则
4.面向数据流的设计方法
5.理解掌握软件设计的常用技术和工具;
6.了解软件设计规格说明书的主要框架结构及设计评审。
【教学重点】
1.启发规则
2.面向数据流的设计方法
3.软件设计中常用的技术和工具
【教学难点】软件设计中常用的技术和工具,特别是面向数据流的设计方法
【教学方法】:案例教学法、演示法、做实验
【教学基本内容】
(1)软件设计过程
(2)软件设计原理
(3)启发规则
(4)过程设计技术和工具
(5)面向数据流的设计方法
(5)设计规格说明与评审
第五章 详细设计(4学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
【教学要求】
1. 掌握结构化程序设计
2. 了解并掌握人机界面设计的主要原则、人机界面设计的一般过程
3. 掌握程序复杂度定量度量方法
4. 掌握常用的几种过程设计的工具
【教学重点】
人机界面设计、复杂度计算方法、判定表
【教学难点】人机界面设计、复杂度计算方法、
【教学方法】:案例教学法、演示法、做实验
【教学基本内容】
(1) 结构化程序设计
(2) 人机界面设计的主要原则、人机界面设计的一般过程、人机界面标准
(3) 程序复杂度定量度量方法
(4) 常用的几种过程设计的工具:程序流程图、判定表、判定树等。
第六章 编码(2学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
【教学要求】
1. 了解程序设计语言的演变发展过程;
2.理解项目开发时影响程序设计语言选择的主要因素;
3.理解编写程序时所需遵循的主要标准和原则;
4.理解程序设计支持环境及其相关概念。
【教学重点】编程准则与编程风格
【教学难点】编程准则与编程风格
【教学方法】案例教学法、演示法
【教学基本内容】
(1)程序设计语言
(3)编程标准
(4)编码风格
第七章 软件测试(4学时 )
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
【教学要求】
1.掌握软件测试的概念、目标及准则;
2.掌握软件测试的基本步骤及其与软件开发之间的关系;
3.掌握白盒测试的主要工作原理及基本路径测试方法;
4.掌握黑盒测试的主要工作原理及几种主要的黑盒测试方法;
5.理解掌握四个软件测试步骤的主要任务及其常用的软件测试方法;
6.理解掌握软件排错的实现过程及主要排错方法;
7.了解软件测试中的主要CASE工具。
8. 掌握软件可靠性的概念
【教学重点】软件测试中白盒和黑盒测试技术以及软件测试策略
【教学难点】1.白盒和黑盒测试技术;2.软件调试
【教学方法】:案例教学法、演示法、提问法
【教学基本内容】
(1)软件测试基础:概念、目标、准则等
(2)单元测试、集成测试、确认测试
(3)软件测试策略
(4)白盒测试技术
(5)黑盒测试技术
(6)基于CASE工具的软件测试和排错
(7)软件可靠性
第八章 面向对象分析(8学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
【教学要求】
1.理解掌握面向对象的主要概念及其思想;
2.掌握UML统一建模语言的主要图形语言机制及其构造表示形式;
3.了解基于UML的软件开发基本过程以及各阶段的主要工作任务;
4.掌握基于UML的面向对象需求分析方法和实现过程。
【教学重点】基于UML的需求分析方法及其实现过程
【教学难点】基于UML的需求分析方法及其实现过程
【教学方法】:案例教学法、演示法、提问法
【教学基本内容】
(1)面向对象分析的概念和基本过程
(2)UML概述
(3)基于UML的需求分析,建立对象模型
(4)建立动态模型
(5)建立功能模型
第九章 面向对象设计(8学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
【教学要求】
1.理解掌握面向对象软件设计的主要任务及其实现过程;
2.掌握面向对象设计的准则
3.理解软件重用的三层含义
2.掌握UML统一建模语言中的图形机制(顺序图、类图、活动图、状态图等)的表示及其在软件设计建模(描述)中的应用;
3.掌握类图的精化设计原则及其实现过程。
【教学重点】采用基于UML的面向对象设计方法将分析模型转换为设计模型的步骤
【教学难点】采用基于UML的面向对象设计方法将分析模型转换为设计模型的步骤
【教学方法】:案例教学法、演示法、提问法
【教学基本内容】
(1) 面向对象设计准则
(2) 启发规则
(3) 软件重用
(4) 系统分解
(5) 设计人机交互子系统、任务管理子系统、数据管理子系统
(6) 设计类中的服务、设计关联
(7) 设计优化
第十章 软件维护(2学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
【教学要求】
1.掌握软件维护的定义和主要类型;
2.理解掌握软件维护的一般实现过程;
3.了解软件维护的主要特点。
4.了解软件再工程过程
【教学重点】
软件维护活动的主要类型
【教学难点】
软件维护的主要实施过程
【教学方法】:多媒体讲授演示法、提问法
【教学基本内容】
(1)软件维护的定义、分类
(2)维护过程
(3)软件的可维护性
(4)软件再工程过程
第十一章 软件项目管理(2学时)
【支撑的课程目标】
核心能力4:算法设计与程序实现能力;
核心能力5:计算机应用系统设计与开发能力;
核心能力7:团队合作与沟通能力。
【教学要求】
1. 掌握估算软件规模的方法
2. 了解几种工作量估算的模型
3. 进度计划
4. 了解并理解质量保证的措施
5. 掌握软件配置管理及一般过程
【教学重点】估算软件规模、进度计划
【教学难点】进度计划
【教学方法】:案例法、讲授法
【教学基本内容】
(1) 估算软件规模
(2) 工作量估算
(3) 进度计划
(4) 质量保证
(5) 软件配置管理
参考书目:
[1] 张海藩,牟永敏.《软件工程导论》(第6版).北京:高等教育出版社,2013
[2] 吕云翔.软件工程—理论与实践(第2版).北京:人民邮电出版社,2018
[3] 张剑波,方芳,周顺平.软件工程过程:原理、方法与工具.北京:高等教育出版社,2019
[4] 郑人杰,殷人昆,陶永雷.实用软件工程(第二版).北京:清华大学出版社,1997《软件工程—理论、方法与实践》,孙家广编著,高等教育出版社,2005
[5] 郭清宇,刘凤华.实用软件工程.北京:中国铁道出版社, 2011
[6] 殷人昆等译.实用面向对象软件工程教程.北京:电子工业出版社, 1998
四、考核方式:
(一)考核方式对课程目标的达成情况:
考核学生算法设计与程序实现能力;
考核学生计算机应用系统设计与开发能力;
考核学生团队合作与沟通能力。
(二)考核方式及具体要求
1.考核方式:闭卷考试+平时成绩
2.总成绩评定:总评成绩=平时成绩*10%+实验成绩30%+期末成绩60%
3. 平时成绩评定:平时成绩=考勤*30%+作业60%+课堂表现10%
4.期末考试:
非疫情情况下都是线下闭卷考试。考核内容按教学大纲的内容进行,考察学生对软件工程基本概念,开发模型,开发管理,需求分析和软件设计的方法与技术以及软件实现和维护的掌握程度,考察学生综合应用知识及创新能力。