目录

  • 1 软件设计模式模式概述
    • 1.1 课程教学大纲
    • 1.2 软件设计模式概述
    • 1.3 预备知识-UML语言
  • 2 第二单元 面向对象设计原则
    • 2.1 概述
    • 2.2 单一职责原则
    • 2.3 开闭原则
    • 2.4 里氏替换原则
    • 2.5 依赖倒置原则
    • 2.6 接口隔离原则
    • 2.7 合成复用原则
    • 2.8 迪米特法则
    • 2.9 总结与思考
  • 3 创建型设计模式
    • 3.1 简单工厂方法模式
    • 3.2 工厂方法模式
    • 3.3 抽象工厂模式
    • 3.4 工厂模式总结和习题
    • 3.5 单例模式
    • 3.6 实验一 创建型设计模式
  • 4 结构型软件设计模式
    • 4.1 适配器模式
    • 4.2 外观模式
    • 4.3 桥接模式
    • 4.4 实验2:结构型设计模式
  • 5 行为型软件设计模式
    • 5.1 访问者模式
    • 5.2 中介者模式
    • 5.3 策略模式
    • 5.4 状态模式
    • 5.5 模板模式
    • 5.6 实验3:行为型设计模式
  • 6 软件体系结构概述
    • 6.1 软件体系结构的概念
  • 7 经典软件体系结构
    • 7.1 调用-返回风格
    • 7.2 数据流风格
    • 7.3 事件系统软件体系结构
    • 7.4 层次软件体系结构
    • 7.5 MVC软件体系结构
  • 8 基于网络的软件体系结构
    • 8.1 客户端-服务器软件体系结构
    • 8.2 P2P软件体系结构
    • 8.3 网格计算软件体系结构
    • 8.4 SOA软件体系结构
    • 8.5 云计算软件体系结构
    • 8.6 实验四:MVC体系结构
  • 9 课程复习与总结
    • 9.1 复习与总结
课程教学大纲

【课程编号】Z0201416

软件设计与体系结构

Software Design& Architecture

【学分】3      【学时】40      【性质】专业基础      实验8

 

(一)授课对象

四年制本科软件工程专业学生

(二)课程的性质和地位

本课程是软件工程专业的一门专业基础课程。该课程在整个课程体系中处于承上启下的核心地位,它以高级程序设计、面向对象程序设计等课程的学习为基础,也是进一步学习软件测试与质量保证、软件分析与建模技术和软件项目管理等课程的基础。

(三)课程的教学目标

通过本课程学习,使学生掌握常见的软件设计模式和软件体系结构风格的概念、应用场景、解决方案和实现机制,具备针对复杂软件工程问题,给出满足要求的软件结构。(对应毕业要求:G1.2、G1.3、G2.2、G3.2、G3.3

具体要求如下:

1. 理解并掌握常见的面向对象设计模式的问题描述、解决方案、实现效果;(G1.2)

2. 根据特定需求应用设计模式设计并实现软件模块,并测试验证模块的正确性。(G2.2 G3.2)

3. 理解并掌握常见的软件体系结构风格的结构、原理、特点及应用场景;(G1.3)

4. 根据特定需求,可以选择或设计出合适的软件体系结构,并验证其有效性(G2.2 G3.3)

(四)课程支撑的毕业要求

1.能对复杂软件工程计算系统和过程选择或建立适当的描述模型。(G1.2)

2.能够应用工程原理和专业知识分析工程问题的解决途径并进行改进;(G1.3)

3.能够针对软件工程问题或软件系统建立合适的模型,清晰地表达和描述复杂软件工程问题;(G2.2)

4.能针对特定需求完成软件模块的设计与实现,测试验证模块的正确性,并进行重构和优化。(G3.2)

5.能针对特定需求设计并实现功能完整的软件系统,包括软件整体架构设计、各模块及交互协议实现或选择、正确性验证、部署、运行和维护等。(G3.3)

毕业要求

毕业要求指标点

课程目标

权重

G1 工程知识:能够将数学、自然科学、工程基础和专业知识用于解决复杂软件工程问题

G1.2 能对复杂软件工程计算系统和过程选择或建立适当的描述模型

课程目标1

0.1

G1.3能够应用工程原理和专业知识分析工程问题的解决途径并进行改进

课程目标1

0.1

G2问题分析:能够应用数学、自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析复杂软件工程问题,以获得有效结论

G2.2能够针对软件工程问题或软件系统建立合适的模型,清晰地表达和描述复杂软件工程问题

课程目标2课程目标4

0.2

G3设计/开发解决方案:能够设计针对复杂软件工程问题的解决方案,设计满足特定需求的系统、模块或软件过程,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素

G3.2能针对特定需求完成软件模块的设计与实现,测试验证模块的正确性,并进行重构和优化

课程目标2

0.3

G3.3 能针对特定需求设计并实现功能完整的软件系统,包括软件整体架构设计、各模块及交互协议实现或选择、正确性验证、部署、运行和维护等

课程目标4

0.3

 

(四)教学内容

1.软件设计模式概述(2学时)(G1.2

教学内容:1软件设计模式的由来;(2软件设计模式的概念及意义;(3软件设计模式与软件体系结构关系4)软件设计模式的分类

教学目的与要求:

一般了解:软件设计模式由来;

基本掌握:软件设计模式的分类;

重点掌握软件设计模式的概念及意义;理解软件设计模式与体系结构关系。

教学重点和难点

重点:软件设计模式的概念及意义;

难点:软件设计模式与软件体系结构关系

2.创建型软件设计模式(6学时)(G2.2、G3.2

教学内容:1工厂方法与抽象工厂模式;(2生成器模式;(3单例模式

教学目的与要求:

一般了解:生成器模式

基本掌握:简单工厂方法、工厂方法、单例模式

重点掌握:工厂方法与抽象模式的实现机理;

教学重点和难点

重点:理解并掌握简单工厂方法、工程方法和抽象方法模式应用的场景,以及三者之间的区别、优缺点

难点:抽象工厂模式的实现机制、单例模式的多线程实现方式;

3.组合型软件设计模式(8学时)(G2.2、G3.2

教学内容:1组合模式;(2适配器模式;(3外观模式4)桥接模式

教学目的与要求:

一般了解:组合模式

基本掌握:桥接模式

重点掌握:适配器模式、外观模式

教学重点和难点:

重点:理解并掌握适配器模式、外观模式应用场景和机制

难点:桥接模式的应用场景和实现机理

4.行为型软件设计模式(8学时)(G2.2、G3.2

教学内容:(1)迭代器模式;(2访问者模式;(3命令模式;(4)中介者模式;(5)策略模式;(6)状态模式

教学目的与要求:

一般了解:迭代器模式、命令模式

基本掌握:访问者模式、中介者模式

重点掌握:策略模式、状态模式

教学重点和难点:

重点:理解并掌握策略模式、外观模式应用场景和实现机制

难点:桥接模式的应用场景和实现机理

5. 软件体系结构概述(2学时)G3.1

教学内容:(1)软件系统结构的概述;(2软件体系结构的意义;(3软件体系结构与软件质量属性;(4)软件体系结构风格

教学目的与要求:

一般了解:软件系统结构的概述

基本掌握:软件体系结构与软件质量属性;

重点掌握:软件体系结构的意义软件体系结构风格

教学重点和难点:

重点:理解和掌握软件体系结构的概念以及常见的软件体系结构风格

难点:软件体系结构与软件质量属性;

6. 经典软件体系结构(10学时)G2.2、G3.3)

教学内容:(1)调用-返回风格软件体系结构;(2数据流风格软件系统结构;(3事件系统软件体系结构;(4)层次软件体系结构;(5MVC软件系统结构

一般了解:调用-返回风格软件体系结构

基本掌握:数据流风格软件系统结构

重点掌握:事件系统软件体系结构;层次软件体系结构;MVC软件系统结构

教学重点和难点:

重点:理解并掌握数据流风格、事件系统、层次结构和MVC软件体系结构的应用场景、相关概念和实现机制

难点:MVC软件体系结构中各组件之间的关系;事件系统软件体系结构的实现机制

7. 基于网络的软件体系结构(4学时)G2.2、G3.3)

教学内容:(1)客户端—服务器软件体系结构;(2P2P软件体系结构;(3网格计算软件体系结构;(4SOA软件体系结构;(5)云计算软件体系结构

一般了解:云计算软件体系结构

基本掌握:P2P软件体系结构;网格计算软件体系结构;

重点掌握:客户端—服务器软件体系结构;SOA软件体系结构;

教学重点和难点:

重点:理解和掌握客户端—服务器软件体系结构、P2P软件体系结构和SOA软件体系结构各自的特点及其应用场景

难点:云计算软件体系结构;

(六)教学实践环节安排

实验1 创建型设计模式

1、实验目的

(1) 熟练使用面向对象设计原则对系统进行重构;

(2) 熟练使用Power Designer和任意一种面向对象编程语言实现几种常见的创建型设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。

2、实验内容

使用简单工厂模式设计一个可以创建不同几何形状(Shape),如圆形(Circle)、矩形(Rectangle)和三角形(Triangle)等的绘图工具类,每个几何图形均具有绘制Draw()和擦除Erase()两个方法,要求在绘制不支持的几何图形时,抛出一个UnsupportedShapeException异常,绘制类图并编程模拟实现

3、实验要求

(1) 选择合适的面向对象设计原则对系统进行重构,正确无误地绘制重构之后的类图;

(2) 结合实例,正确无误地绘制简单工厂模式、工厂方法模式、抽象工厂模式和单例模式的模式结构图;

(3) 使用任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式,代码运行正确无误。

实验2 结构型设计模式

1、实验目的

熟练使用Power Designer和任意一种面向对象编程语言实现几种常见的结构型设计模式,包括适配器模式、组合模式和外观模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。

2、实验内容

Windows Media PlayerRealPlayer是两种常用的媒体播放器,它们的API结构和调用方法存在区别。现在你的应用程序需要支持这两种播放器API,而且在将来可能还需要支持新的媒体播放器,请问如何设计该应用程序?绘制类图并编程模拟实现。

3、实验要求

(1) 结合实例,正确无误地绘制适配器模式和外观模式的模式结构图;

(2) 使用任意一种面向对象编程语言实现适配器模式和外观模式实例,代码运行正确无误。

实验3 行为型设计模式

1、实验目的

熟练使用Power Designer和任意一种面向对象编程语言实现几种常见的行为型设计模式,包括访问者者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式

2、实验内容

顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购物过程中,顾客需要对这些商品进行访问,以便确认这些商品的质量,之后收银员计算价格时也需要访问购物车内顾客所选择的商品。此时,购物车作为一个ObjectStructure(对象结构)用于存储各种类型的商品,而顾客和收银员作为访问这些商品的访问者,他们需要对商品进行检查和计价。不同类型的商品其访问形式也可能不同,如苹果需要过秤之后再计价,而图书不需要。使用访问者模式来设计该购物过程。

3、实验要求

(1) 结合实例,正确无误地绘制访问者模式和策略模式的模式结构图;

(2) 使用任意一种面向对象编程语言实现访问者模式和策略模式实例,代码运行正确无误。

实验4 行为型设计模式

1、实验目的

熟练使用Power Designer和任意一种面向对象编程语言实现几种常见的行为型设计模式,包括访问者模式、策略模式和状态模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。

2、实验内容

在某论坛系统中,用户可以发表留言,发表留言将增加积分;用户也可以回复留言,回复留言也将增加积分;用户还可以下载文件,下载文件将扣除积分。该系统用户分为三个等级,分别是新手、高手和专家,这三个等级对应三种不同的状态,这三种状态分别定义如下:

(1) 如果积分小于100分,则为新手状态,用户可以发表留言、回复留言,但是不能下载文件。如果积分大于等于1000分,则转换为专家状态;如果积分大于等于100分,则转换为高手状态。

(2) 如果积分大于等于100分但小于1000分,则为高手状态,用户可以发表留言、回复留言,还可以下载文件,而且用户在发表留言时可以获取双倍积分。如果积分小于100分,则转换为新手状态;如果积分大于等于1000分,则转换为专家状态;如果下载文件后积分小于0,则不能下载该文件。

(3) 如果积分大于等于1000分,则为专家状态,用户可以发表留言、回复留言和下载文件,用户除了在发表留言时可以获取双倍积分外,下载文件只扣除所需积分的一半。如果积分小于100分,则转换为新手状态;如果积分小于1000分,但大于等于100,则转换为高手状态;如果下载文件后积分小于0,则不能下载该文件。

请使用状态模式模拟实现论坛系统

3、实验要求

(1) 结合实例,正确无误地绘制状态模式的结构图;

(2) 使用任意一种面向对象编程语言实现状态模式实例,代码运行正确无误。

(七)教学方式与习题要求

在教学过程中主要采用了“项目驱动”教学法和“启发式学习”教学法。理论教学,使用“项目驱动”教学法。 通过精选案例、分解任务、讲练有机融合,将相关知识点融入项目,通过项目实现,让学生掌握软件体系结构的概念、原理、方法和技术,并对软件设计有一个直观和更加感性的认识,使学生能够积极参与整个教学过程

每章应布置一定数量的习题,习题出自教材,并在课堂上讲解

)考核办法

考核分为两部分,形成性考核和总结性考核。形成性考核包括作业、实验,总结性考核采用闭卷考试形式对学生进行考核,学生的最终成绩评定按总结性考核成绩占80%,形成性考核成绩占20%进行统计。

按毕业要求权重分布的考核组成如下表所示:

考核类型

G1.2

G1.3

G2.2

G3.2

G3.3

合计

形成性考核(20分)

课程实验

2

2

4

6

6

20

总结性考核(80分)

知识类考题

6

6

12

18

18

60

分析类考题

2

2

4

6

6

20

总计

10

10

20

30

30

100

 

(八)推荐教材或讲义及主要参考书

1孙玉山,刘旭东著:《软件设计模式与体系结构》,高等教育出版社,2013

2 Len Bass, Paul Clements,Rick Kazman:《软件构架实践(,影印版),清华大学出版社,2013

3Erich Gamma,Richard Helm,Ralph Johnson著:《设计模式》,机械工业出版社,2003

4张友生等:《软件体系结构》,清华大学出版社,2006年。

(九)学时分配

序号

教学内容

学时分配

其中

讲授

实验

上机

其它实践

1

软件设计模式概述

2

2




2

创建型设计模式

6

4

2



3

结构型软件设计模式

8

6

2



4

行为型软件设计模式

8

6

2



5

软件体系结构概述

2

2




6

经典软件体系结构

10

8

2



7

基于网络的软件体系结构

4

4




合计

40

32

8