目录

  • 1 课程大纲
    • 1.1 教学大纲
    • 1.2 考核方式
    • 1.3 学习建议
    • 1.4 不定期更新的有用的资料
  • 2 第1周:软件设计模式概述(1)
    • 2.1 软件设计模式
    • 2.2 软件体系结构
  • 3 第1周:UML & 面向对象设计原则(2)
    • 3.1 UML类图 & UML时序图
      • 3.1.1 UMLet安装
      • 3.1.2 UMlet基本操作
      • 3.1.3 UML基础知识
      • 3.1.4 UMLet绘制类图
      • 3.1.5 UMLet绘制用例图
      • 3.1.6 UMLet绘制时序图
      • 3.1.7 UML 类图实例1
      • 3.1.8 UML 类图实例2
    • 3.2 面向对象设计原则
      • 3.2.1 面向对象设计原则综述
      • 3.2.2 单一职责原则
      • 3.2.3 开闭原则
      • 3.2.4 里氏代换原则
      • 3.2.5 接口隔离原则
      • 3.2.6 依赖倒转原则
      • 3.2.7 迪米特法则
      • 3.2.8 合成复用原则
      • 3.2.9 面向对象设计原则总结
    • 3.3 UML类图实验
    • 3.4 面向对象设计原则实验
      • 3.4.1 单一职责原则实验
      • 3.4.2 开闭原则实验
      • 3.4.3 里氏替换原则实验
      • 3.4.4 接口隔离原则实验
      • 3.4.5 依赖倒置原则实验
      • 3.4.6 迪米特法则实验
      • 3.4.7 合成复用原则实验
  • 4 创建型软件设计模式1
    • 4.1 简单工厂方法
      • 4.1.1 简单工厂讲解小视频
    • 4.2 工厂方法模式
      • 4.2.1 工厂方法模式讲解小视频
    • 4.3 抽象工厂模式
      • 4.3.1 抽象工厂模式讲解小视频
    • 4.4 工厂模式在Java源代码中的应用
    • 4.5 工厂模式实例讲解
    • 4.6 工厂模式实验1
    • 4.7 工厂模式实验2
  • 5 创建型软件设计模式2
    • 5.1 生成器模式
      • 5.1.1 生成器模式讲解小视频
    • 5.2 单例模式
      • 5.2.1 单例模式讲解小视频
    • 5.3 生成器 & 单例模式实例讲解
    • 5.4 生成器 & 单例模式实例讲解
    • 5.5 生成器 & 单例模式实验1
    • 5.6 生成器 & 单例模式实验2
    • 5.7 原型模式讲解小视频
  • 6 结构型软件设计模式1
    • 6.1 组合模式
      • 6.1.1 组合模式讲解小视频
    • 6.2 适配器模式
      • 6.2.1 适配器模式讲解小视频
    • 6.3 组合 & 适配器模式实例讲解
    • 6.4 组合 & 适配器模式在Java源代码中的应用
    • 6.5 组合 & 适配器模式实验1
    • 6.6 组合 & 适配器模式实验2
  • 7 结构型软件设计模式2
    • 7.1 外观模式
      • 7.1.1 外观模式讲解小视频
    • 7.2 桥接模式
      • 7.2.1 桥接模式讲解小视频
    • 7.3 外观 & 桥接模式实例讲解
    • 7.4 外观 & 桥接模式在Java源代码中的应用
    • 7.5 外观 & 桥接模式实验1
    • 7.6 外观 & 桥接模式实验2
  • 8 行为型软件设计模式1
    • 8.1 迭代器模式
      • 8.1.1 迭代器模式讲解小视频
    • 8.2 访问者模式
      • 8.2.1 访问者模式讲解小视频
    • 8.3 迭代器 & 访问模式实例讲解
    • 8.4 迭代器 & 访问模式在Java源代码中的应用
    • 8.5 迭代器 & 访问模式实验1
    • 8.6 迭代器 & 访问模式实验2
  • 9 行为型软件设计模式2
    • 9.1 命令模式
      • 9.1.1 命令模式讲解小视频
    • 9.2 中介者模式
      • 9.2.1 中介者模式讲解小视频
    • 9.3 命令 & 中介者模式实例讲解
    • 9.4 命令 & 中介者模式在Java源代码中的应用
    • 9.5 命令 & 中介者模式实验1
    • 9.6 命令 & 中介者模式实验2
  • 10 行为型软件设计模式3
    • 10.1 策略模式
      • 10.1.1 策略模式讲解小视频
    • 10.2 状态模式
      • 10.2.1 状态模式讲解小视频
    • 10.3 策略模式 & 状态模式实例讲解
    • 10.4 策略模式 & 状态模式在Java源代码中的应用
    • 10.5 策略模式 & 状态模式实验1
    • 10.6 策略模式 & 状态模式实验2
    • 10.7 观察者模式实验
  • 11 软件体系结构概述
    • 11.1 软件体系结构概念和意义
    • 11.2 软件质量属性
    • 11.3 软件体系结构风格
    • 11.4 软件体系结构概念
    • 11.5 Spring Boot的Visual Studio Code环境配置
    • 11.6 基于构件的软件体系结构实验
  • 12 经典软件体系结构1
    • 12.1 调用-返回风格软件体系结构
    • 12.2 数据流风格软件体系结构
    • 12.3 Spring Batch简介
    • 12.4 Spring Batch实验
    • 12.5 Spring Batch实验进阶
  • 13 经典软件体系结构2
    • 13.1 事件系统软件体系结构
    • 13.2 观察者模式
    • 13.3 Spring Event 实验
    • 13.4 Guava 事件系统实验
    • 13.5 分布式事件系统实验
  • 14 经典软件体系结构3
    • 14.1 层次软件体系结构
    • 14.2 C# .NET中的三层架构
  • 15 MVC软件体系结构
    • 15.1 MVC软件体系结构
  • 16 客户端-服务器软件体系结构
    • 16.1 C/S软件体系结构
    • 16.2 B/S软件体系结构
    • 16.3 基于网络的MVC软件体系结构
    • 16.4 基于 Servlet 的B/S软件体系结构实验
    • 16.5 Thymeleaf实验
    • 16.6 Spring MVC 创建网络应用程序示例实验
    • 16.7 Spring Boot 测试实验
    • 16.8 Spring Petclinic实验
  • 17 基于网络的软件体系结构2
    • 17.1 P2P软件体系结构
    • 17.2 网格计算软件体系结构
    • 17.3 REST软件体系结构
    • 17.4 REST软件体系结构实验
  • 18 现代软件体系结构
    • 18.1 SOA软件体系结构
    • 18.2 云计算软件体系结构
    • 18.3 微服务软件体系结构
    • 18.4 响应式软件体系结构
    • 18.5 无服务软件体系结构
    • 18.6 微服务软件体系结构实验
    • 18.7 响应式软件体系结构实验
教学大纲

教学大纲

《软件设计与体系结构》课程教学大纲

课程编号:10343240             授课学时:64学时            学分数:4

先修课程:《软件工程》、《面向对象程序设计》

一、课程性质和任务

本课程是为软件工程专业本科开设的专业必修课程。

软件系统体系结构的分析与设计是现代软件工程的核心问题,也是现代软件工程倡导以构件和架构为核心进行软件开发和生产的基础。软件体系结构的分析与设计作为一门专门的课程,在现代软件工程教学体系中,占据了十分重要的地位。站在软件工程的高度讨论软件体系结构,不但要学习构建软件系统体系结构的技术和方法,而且,更需要考察从传统软件工程到现代软件工程的发展历程,研究这些技术和方法的出发点是什么?能完成什么功能、适应怎样的需求,有哪些利弊?在构建软件系统的时候,应该如何选择合适的方法,来设计体系结构。

本课程旨在让学生理解并掌握常见的软件设计模式的相关理论知识和实现机制;掌握软件系统架构分析、体系结构建模与架构设计的相关理论知识,培养学生软件架构设计的基本能力,课程内容主要分为软件系统体系结构和设计模式两大部分。软件设计模式部分主要以GoF的24类设计模式为讲授内容,目的在于使学生深入理解各种典型设计模式技术及原理,并初步具备运用模式设计思想开展软件详细设计的能力。软件体系结构部分主要讲解软件系统结构的基本概念、建模方法和典型软件体系结构风格,使学生初步具备一定的系统架构分析与设计能力。

二、教学内容和要求

(一)课程基本要求

本课程的教学要求:通过本课程的学习,希望学生能够达到以下三个基本目标:

(1)建立构建软件的设计模式与系统架构一般方法的感性认识,通过具体的设计实践,能从内部模块规划设计、系统层次结构的构建开始,了解构建系统结构的一般技术和方法;

(2)在构建软件系统的过程中,理解软件系统构建的一些关键问题,即软件系统的特定质量需求,学习应对不同质量需求的系统对策和设计实现技术;

(3)从软件工程的总体上,从软件工程的全过程角度,把握和应用系统结构设计技术,特别是体系结构设计作为核心环节,与需求管理、项目管理、质量控制等环节的关联和支撑关系。

(二)课程的主要教学内容

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

1) 了解软件设计模式概念的由来和发展历史。

2) 理解类图、对象图、用例图和时序图的概念;掌握UML图形语言,熟练掌握使用UML工具绘制类图、对象图、用例图和时序图。

3) 深刻理解软件设计模式的意义;理解并掌握面向对象设计的七大原则。

4) 了解软件设计模式与软件体系结构的关系和区别。

5) 掌握软件设计模式的分类。

2. 创建型软件设计模式(4学时)

1) 掌握简单工厂方法、工厂方法和抽象工厂模式的应用场景;掌握三种模式的定义和实现机制(代码实现);理解三种模式的异同以及优缺点。

2) 掌握生成器模式应用场景,概念和实现机制(代码实现);掌握生成器模式的优缺点;了解工厂模式、抽象工厂模式与生成器模式的异同。

3) 掌握单例模式的应用场景、概念和实现机制(代码实现);掌握单例模式的优缺点;了解多线程中单例模式的处理方法和策略。

3. 结构型软件设计模式(4学时)

1) 掌握组合模式的应用场景、概念和实现机制(代码实现);掌握组合模式的优缺点;掌握组合模式的两种不同的设计方法及它们的异同和优缺点。

2) 掌握适配器模式的应用场景、作用、概念和两种实现机制(代码实现);掌握类适配器模式和对象适配器模式的异同以及各自的优缺点。

3) 掌握外观模式的应用场景和目的、概念和实现机制(代码实现);掌握外观模式的优缺点;了解外观模式与适配器模式之间的异同。

4) 掌握桥接模式的应用场景、概念和实现机制(代码实现);掌握桥接模式的优缺点;了解桥接模式与抽象工厂模式之间的异同。

4. 行为型软件设计模式(6学时)

1) 掌握行为型软件设计模式与结构型软件设计模式和创建型软件设计模式的区别;

2) 了解迭代器模式的概念和应用场景;了解迭代器模式的实现机制;了解迭代器模式的优缺点。

3) 掌握访问者模式的应用场景;掌握访问者模式的概念和实现机制(代码实现);掌握访问者模式的优缺点,以及访问者模式中被访问者与访问者类之间的关联关系;了解访问者模式中ObjectStructure的Java实现。

4) 熟练掌握命令模式的应用场景、概念和实现机制(代码实现);掌握命令模式的优缺点。

5) 掌握中介者模式的应用场景、概念和实现机制(代码实现);熟练掌握中介者模式优缺点以及中介者模式中Mediator类和Client类的实现细节。

6) 掌握策略模式的应用场景、概念和实现机制(代码实现);熟练掌握策略模式的优缺点。

7) 掌握状态模式的应用场景、概念和实现机制(代码实现);熟练掌握状态模式的优缺点。了解策略模式和状态模式之间的异同。

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

1)了解软件体系结构的概念和发展历史。

2)理解软件体系结构对软件工业的意义。

3)掌握软件质量的九大属性;了解软件体系结构与软件质量属性之间的关联关系。

4)掌握常见的软件体系结构的风格。

6. 经典软件体系结构(8学时)

1) 了解非结构化编程;掌握调用-返回风格软件体系结构的概念,发展历程;掌握主系统-子系统;掌握面向对象软件体系结构;理解主程序-子程序与面向对象体系结构的比较。

2) 掌握数据流风格软件体系结构概念;掌握数据流系统与数据流风格软件体系结构概念;掌握顺序批处理软件体系结构的概念和特点;掌握管道-过滤器软件体系结构的概念和特点;了解顺序批处理系统和管道-过滤器软件体系结构的异同。

3) 掌握事件系统软件体系结构概念;掌握事件处理的策略。掌握并深刻理解观察者模式应用场景、概念和机制。

4) 掌握层次软件体系结构的概念和特点;掌握常见的三层层次软件体系结特点及每层的作用。

5) 掌握MVC软件体系结构的应用场景、概念和实现机制;掌握MVC软件体系结构的优缺点;了解MVC软件体系结构与三层体系结构的异同;掌握MVC体系结构与观察者模式之间的关系。

7. 基于网络的软件体系结构(4学时)

1) 掌握客户端-服务器端体系结构的概念和特性。了解文件共享软件体系结构和两层客户端-服务器软件体系结构;掌握三层客户端-服务器端软件体系结构;了解Java EE软件体系结构;掌握三层层次体系结构与三层客户端-服务器端软件体系结构的区别。

2) 了解P2P软件体系结构的发展历程;了解P2P软件体系结构概念和特性;了解三代P2P软件体系结构的异同;了解JXTA协议。

3) 了解网格计算软件体系结构的概念;了解网格计算与机群超算之间的区别;了解计算应用领域的典型网格计算项目。

4) 掌握SOA软件体系结构概念;掌握Web Services的概念。

5) 掌握云计算软件体系结构的概念及发展历程;掌握云计算的关键技术;了解当前典型的云计算平台;了解云计算软件体系结构和网格计算体系结构的比较。

三、教材和参考资料

(一)建议教材:

孙玉山 刘旭东.软件设计模式与体系结构.高等教育出版社,2013年5月

(二)参考书目

    (1)Erich Gamma 著 刘建中 等 译. 设计模式:可复用面向对象软件的基础. 机械工业出版社,2019年。

(2)刘伟.设计模式.清华大学出版社,2018年。

(3)布希曼;贲可荣 译. 面向模式的软件体系结构. 机械工业出版社,2003年。

                                         修订:易锋                    审定:邹昆