课程简介 Course Introduction
软件工程是研究和指导软件开发和维护的工程类学科,它以计算机科学理论及其他相关学科的理论为指导,采用工程化的概念、原理、规范、 技术和方法进行软件工程项目的开发和维护, 把经过实践证明正确的管理措施和当前能够得到最好的技术方法结合起来,以较少的代价获取高质量的软件产品。 通过几十年的努力,软件工程已逐步发展成为一门成熟的专业学科。
软件工程作为计算机相关专业的一门专业主干课,重点要求学生学习与软件开发和维护有关 的四个方面的主要内容——过程与模型、 方法与技术、 工具与环境、 标准与规范。 进而通过课程实践培养学生运用软件工程基本原理解决实际问题, 并从事复杂软件项目开发和维护的实践应用能力与创新能力, 努力成为当今信息社会和知识经济时代所需要的高素质计算机专业人才。
通过本课程的学习,使学生初步建立工程化意识,学会用工程化思想(包括技术、方法与环境)开发各种软件,以软件的生命周期作为主线,掌握软件工程的基本理论,进一步系统化、工程化,为今后实际工程中能够进行系统分析与设计奠定良好的基础。
教学大纲 Teaching Syllabus


一、课程描述及课程目标

(一)课程描述

软件工程是研究和指导软件开发和维护的工程类学科,它以计算机科学理论及其他相关学科的理论为指导,采用工程化的概念、原理、规范、 技术和方法进行软件工程项目的开发和维护, 把经过实践证明正确的管理措施和 当前能够得到最好的技术方法结合起来,以较少的代价获取高质量的软件产品。 通过几十年的努力,软件工程已逐步发展成为一门成熟的专业学科。

软件工程作为计算机相关专业的一门专业主干课,重点要求学生学习与软件开发和维护有关 的四个方面的主要内容——过程与模型、 方法与技术、 工具与环境、 标准与规范。 进而通过课程实践培养学生运用软件工程基本原理解决实际问题, 并从事复杂软 件项目开发和维护的实践应用能力与创新能力, 努力成为当今信息社会和知识经济时代所需要的高素质计算机专业人才。

通过本课程的学习,使学生初步建立工程化意识,学会用工程化思想(包括技术、方法与环境)开发各种软件,以软件的生命周期作为主线,掌握软件工程的基本理论,进一步系统化、工程化,为今后实际工程中能够进行系统分析与设计奠定良好的基础。

(二)课程目标

毕业要求

具体指标点

课程教学目标

掌握软件工程概念知识

软件工程概念和基础知识

熟练掌握软件与软件工程基本概念和基本知识

掌握生存周期与软件开发模式

生存周期与软件开发模式

要求熟练掌握生存周期与软件开发模式

掌握两种编程思想

结构化程序设计、面向对象

使学生掌握结构化程序设计、面向对象编程思想

掌握软件流程

软件的评审、测试与维护,项目计划与项目管理方法

使学生掌握有关软件的评审、测试与维护,项目计划与项目管理方法

掌握软件工程方法

软件工程的方法项目的分析、设计、实现和维护

使学生能用软件工程的方法参与软件项目的分析、设计、实现和维护

二、课程内容

(一)第1 软件工程学概述

主要知识点:

1.1 软件危机

1.2 软件工程

1.3 软件生命周期

1.4 软件过程

教学要求:通过本章的学习,使学生了解软件的特点,软件生产发展的三个阶段,各阶段的特点,软件危机的产生及其表现形式;初步了解软件的生存周期模型;掌握软件工程的定义及特点,软件生存期各阶段的特点和内容;牢固掌握软件危机产生的原因;掌握软件生命周期中各阶段的基本任务。

重点:软件危机的产生、表现、原因;软件工程的定义。

难点:软件生命周期

采用的教学方法:课堂讲授

讲授学时:3学时

(二)第2章 可行性研究

2.1 可行性研究的任务

2.2 可行性研究的过程

2.3 系统流程图

2.4 数据流图

2.5 数据字典

2.6 成本/效益分析

教学要求:掌握可行性研究的必要性,掌握可行性研究的任务及可行性研究的具体步骤;了解系统流程图的作用及符号表示,掌握数据流图的画法及数据字典的编写。

重点:可行性研究的任务及步骤,数据流图的画法及数据字典的编写。

难点:数据流图的画法。

采用的教学方法:课堂讲授

讲授学时:3学时

(三)第3章 需求分析

3.1 需求分析的任务

3.2 与用户沟通获取需求的方法

3.3 分析建模与规格说明

3.4 实体-联系图

3.5 数据规范化

3.6 状态转换图

3.7其他图形工具

3.8验证软件需求

教学要求:掌握需求分析的任务和步骤、结构化分析方法及原型化分析方法,熟练掌握数据流图的细化及ER图以及规范化方法(如范式),IPO图的画法;掌握常用图形工具的使用方法。了解需求分析文档建立和复审的方式。

重点:需要分析过程。

难点:各种图形工具的应用。

采用的教学方法:课堂讲授

讲授学时:6学时

(四)第5章 总体设计

5.1 设计过程

5.2 设计原理

5.3 启发规则

5.4 数描绘软件结构的图形工具

5.5 面向数据流的设计方法

教学要求:了解总体设计的过程;掌握软件总体设计的基本任务,软件设计的基本原理。理解模块化,抽象,信息隐蔽,模块独立性等概念,明确度量模块独立性的校准---耦合性及内聚性。熟练掌握结构化设计方法(要求能划分数据流的类型,将其能换成软件结构图,并能根据优化准则将其优化。)

重点:将交换流程的数据流图,转换为软件结构。

难点:将一个复杂型数据流图转换为软件结构图并优化。

采用的教学方法:课堂讲授

讲授学时:6学时

(五)第6章 详细设计

6.1 结构程序设计

6.2 人机界面设计

6.3 过程设计的工具

6.4 面向数据结构的设计方法

6.5 程序复杂程度的定量度量

教学要求:能熟练的使用详细设计描述工具来设计模块中的算法及程序的逻辑结构。常用的算法过程的描述工具;算法的复杂性评价问题。使学生明确详细设计阶段的主要任务,掌握算法复杂性的度量方法。

采用的教学方法:课堂讲授

讲授学时:6学时

(六)第7章 实现

7.1 编码

7.2 软件测试基础

7.3 单元测试

7.4 集成测试

7.5 确认测试

7.6 白盒测试技术

7.7黑盒测试技术

7.8调试

7.9软件可靠性

教学要求:掌握软件测试的概念与主要任务,软件的排错技术和软件可靠性的评测方法。软件测试的目标、原则以及测试方案的建立和测试过程。测试实例的构造方法及测试步骤。深刻理解白盒,黑盒测试技术。深刻理解测试过程中单元测试,集成测试,验收测试的任务及使用的方法。

重点:白盒与黑盒测试方法;单元测试,集成测试的方法;

难点:测试用例的设计。

采用的教学方法:课堂讲授

讲授学时:6学时

(七)第8章 维护

8.1 软件维护的定义

8.2 软件维护的特点

8.3 软件维护的过程

8.4 软件的可维护性

8.5 预防性维护

8.6 软件再工程过程

教学要求:掌握软件维护的类型、软件的可维护性以及软件的维护方法;软件维护的目标与任务,软件维护的特殊性以及软件维护的管理流程。理解软件维护的内容,维护任务的实施,深刻理解如何提高软件的维护性。

重点:软件维护的内容、特点、方法、技术、文档

难点:软件维护任务的实施

采用的教学方法:课堂讲授

讲授学时:3学时

(八)第9章 面向对象方法学引论

9.1 面向对象方法学概述

9.2 面向对象的概念

9.3 面向对象建模

9.4 对象模型

9.5 动态模型

9.6 功能模型

9.7 3种模型之间的关系

教学要求:掌握面向对象的概念,包括对象和类、对象的属性和操作,以及对象之间的关系;面向对象程序设计的特性,如封装、继承和多态性;面向对象的建模,包括对象模型、动态模型和功能模型的概念。

重点:面向对象、类、类的层次结构、方法和消息的实质以及对象之间的关系

难点:面向对象程序设计的特性;面向对象建模的概念

采用的教学方法:课堂讲授

讲授学时:3学时

(九)第10章 面向对象分析

10.1 面向对象分析的基本过程

10.2 需求陈述

10.3 建立对象模型

10.4 建立动态模型

10.5 建立功能模型

10.6 定义服务

教学要求:了解面向对象分析的基本过程;掌握对象模型、动态模型、功能模型的元素、结构和构造方法;掌握绘制对象图、画状态图、画数据流程图;掌握确定对象类、确定关联、确定属性,识别继承。

重点:面向对象分析的基本过程。

难点:画对象图、画状态图、画数据流程图。

采用的教学方法:课堂讲授

讲授学时:3学时

(十)第11章 面向对象设计

11.1 面向对象设计的准则

11.2 启发规则

11.3 软件重用

11.4 系统分解

11.5 设计问题域子系统

11.6 设计人机交互子系统

11.7设计任务管理子系统

11.8设计数据库管理子系统

11.9设计类中的服务

11.10设计关联

11.11设计优化

教学要求:掌握面向对象设计的准则;掌握面向对象设计所用启发性规则、软件重用、系统分解等方法;了解设计问题域、人机交互、管理等子系统;了解设计优化。

重点:面向对象设计所用启发性规则、软件重用、系统分解

难点:设计优化。

采用的教学方法:课堂讲授

讲授学时:6学时

(十一)第12章 面向对象实现

12.1 程序设计语言

12.2 程序设计风格

12.3 测试策略

12.4 设计测试用例

教学要求:了解面向对象程序设计语言;程序设计风格;面向对象测试。

重点:程序设计风格,面向对象测试

难点:设计测试用例

采用的教学方法:课堂讲授

讲授学时:3学时

(十二)第13章 软件项目管理

13.1估算软件规模

13.2 工作量估算

13.3 进度计划

13.4 人员组织

13.5质量保证

13.6软件配置管理

教学要求:了解软件开发成本结算、软件项目进度安排、软件项目计划内容及软件质量的定义、质量保证的基本概念。

重点:软件开发成本结算、软件项目进度安排、软件项目计划内容

难点:软件质量的定义、质量保证

采用的教学方法:课堂讲授

讲授学时:6学时

三、课程的预期学习成果

在本门课程结束时,学生应该能够:

1、 熟练掌握软件项目开发的过程

2、 能够完整的撰写软件项目生命周期中的各个文档

3、 掌握项目管理的相关知识。

四、课程要求

(一)出勤

学生应积极参与课堂教学并完成相关的作业、课堂测验。

(二)阅读资料

学生应认真进行课前预习,阅读教材和指定参考书及重要的参考文献。

(三)课堂展示

根据时间及课堂班人数,在可能的情况下安排小组实验课程讨论与效果演示。

(四)课外实践

本课程是理论与实验结合的课程,实验课程单独开设,理论课也穿插相关技术的应用案例展示。

(五)小考与期末考

无小考和期末考,但具有随堂测验和课程设计。

(六)课程论文

课程设计报告

(七)学术诚信

按中山大学南方学院相关规定执行。

(八)剽窃的定义以及相应的惩罚

剽窃是严重违反学校规章制度的行为。一经发现,将上报相关部门,并受到包括开除学籍在内的严厉处罚。

五、课程资料

(一)教科书-必读

《软件工程导论》(第六版),张海藩编著,清华大学出版社,2013

(二)教科书-强烈推荐

《软件工程导论》(第六版)学习辅导,张海藩、牟永敏编著,清华大学出版社,2013

(三)文章-必读

(四)文章-强烈推荐

(五) 其他参考资料

[1] 《软件工程》(原书第9版),Ian Sommerville,机械工程出版社,2011.5

[2] 《软件需求》(第3版), Karl Wiegers等,清华大学出版社,2016.2

[3] UML用户指南》(第2版·修订版),Grady Booch等,人民邮电出版社,2013.1

六、教学活动以及对于预期学习成果的评估

(一)教学活动

1、个人预习

2、课堂讲授

3、课堂问答

4、习题讲解

5、随堂测验

6、课后作业

7、课程设计

8、课下互动

(二)对预期学习成果的考察

预期学习成果

教学活动

学习成果考察内容:作业/课程实验

1 软件工程学概述

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P33页第7

2 可行性研究

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P53页第235题(31

、第4题、所选课程设计题目的可行性研究报告

3 需求分析

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P73页第456题、所选课程设计题目的需求分析报告

5 总体设计

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P114页第3题(1)或(2)或(3)、第45题、所选课程设计题目的总体设计报告

6 详细设计

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P141345678题、所选课程设计题目的详细设计报告

7 实现

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P183页第110题、所选课程设计题目的编码和测试用例报告

8 维护

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P201页的第23

9 面向对象方法学引论

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P230页的第910

10 面向对象分析

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P256的第12331,第4

11 面向对象设计

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P288页第56731,第8

12 面向对象实现

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P304页第4567

13 软件项目管理

1,2,3,4,5,6,7,8

随堂测验(见学习系统)

作业:P335页第1221,第5621

七、评估的程序和方法

(一)评分体系

1、出勤率: 10%

2、课堂参与: 20%

3、课后作业: 10%

4、随堂测验: 10%

5、课程期末设计(或考试): 50%

(二)课程的教学目标与评估方式的对应关系

编号

课程教学目标

评估方式

1

目标1:掌握软件工程的知识,能够利用软件工程的基础知识进行软件项目开发和项目管理,完成课程设计题目,以解决实际问题。

随堂提问、随堂测验、课后作业、课程设计。

2

目标2:能够对具体问题进行分析,找到解决该问题所用的方法。

随堂提问、随堂测验、课后作业、课程设计。

3

目标3:能够综合运用所学软件工程基本知识,完成所选项目的软件项目开发过程;设计能够解决实际问题的小型软件系统;将整个项目的开发过程中的的各种文档形成一份完整的项目开发文档。

随堂提问、随堂测验、课后作业、课程设计。

(三)评分标准及要求

课堂参与度 (10%+20%)

1)全勤10%

2)课堂提问:积极参与课堂提问20%

作业、随堂测验 (10%+10%)

1)课后作业(10%

2)随堂测验(10%

课程设计 (50%)

1)项目演示(10%):

2)课程设计项目效果(源码等)(20%

3)课程设计报告(20%

八、教学进度与学时分配表

周次

课程要点

理论学时

实验学时

习题学时

1

1 软件工程学概述

3

0

0

2

2 可行性研究

3

0

0

3

3章需求分析(3.1~3.4

3

0

0

4

3章需求分析(3.5~3.8

3

0

0

5

5章总体设计(5.1~5.3

3

0

0

6

5章总体设计(5.4~5.5

3

0

0

7

6章详细设计(6.1~6.3

3

0

0

8

6章详细设计(6.4~6.5

3

0

0

9

7章实现(7.1~7.4

3

0

0

10

7章实现(7.5~7.9

3

0

0

11

8章维护

3

0

0

12

9章面向对象方法学引论

3

0

0

13

10章面向对象分析

3

0

0

14

11章面向对象设计(11.1~11.5

3

0

0

15

11章面向对象设计(11.6~11.11

3

0

0

16

12章面向对象实现

3

0

0

17

13章软件项目管理

3

0

0

18

13章软件项目管理

3

0

0

19

复习或考试




20

总课时

54

0

0

注:此表一式三份,于开学两周内填好,一份送教务与科研部,一份开课单位留存,一份自留。


留言板 Message Board
条留言  共

  • 参与互动
    Interaction

  • 扫码加入课程
    Scan QR Code
教学队伍Teaching Members
需要验证您的身份,请输入请求信息:
  • 学号号:
  • 班级选择:
  • 课程密码:

扫一扫二维码,快速加入本课程!

放大二维码 查看使用方法
课程
引导