【课程编号】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)层次软件体系结构;(5)MVC软件系统结构
一般了解:调用-返回风格软件体系结构;
基本掌握:数据流风格软件系统结构;
重点掌握:事件系统软件体系结构;层次软件体系结构;MVC软件系统结构
教学重点和难点:
重点:理解并掌握数据流风格、事件系统、层次结构和MVC软件体系结构的应用场景、相关概念和实现机制。
难点:MVC软件体系结构中各组件之间的关系;事件系统软件体系结构的实现机制
7. 基于网络的软件体系结构(4学时)(G2.2、G3.3)
教学内容:(1)客户端—服务器软件体系结构;(2)P2P软件体系结构;(3)网格计算软件体系结构;(4)SOA软件体系结构;(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 Player和RealPlayer是两种常用的媒体播放器,它们的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年
3.Erich 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 | |||

