教学大纲
《软件设计与体系结构》课程教学大纲
课程编号: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年。
修订:易锋 审定:邹昆

