《软件设计与体系结构》教学大纲
课程代码 | 045101652 |
课程名称 | 软件设计与体系结构 |
英文名称 | Software Design and Architecture |
课程类别 | 专业课 |
课程性质 | 选修 |
学时 | 总学时:32 实验学时:8 理论学时:24 |
学分 | 2 |
开课学期 | |
开课单位 | 计算机科学与工程学院 |
适用专业 | 计算机科学与技术 |
授课语言 | 中文授课 |
先修课程 | 软件工程、面向对象程序语言 |
毕业要求(专业培养能力) | 本课程对学生达到如下毕业要求有如下贡献: 1.工程知识:掌握扎实的计算机专业基础知识、专业基本原理、方法和手段,能够将程序语言、面向对象设计、软件工程等基础知识和专业知识用于解决复杂软件系统设计问题,并接触和掌握大型软件系统设计知识,为解决以后从事大型软件系统设计与开发打下知识基础。 2.问题分析:能够利用软件工程、UML、面向对象设计、本专业基本原理、方法和手段研究分析软件设计与体系结构中的复杂问题,以获得有效的软件设计与结构。 3.设计/开发解决方案:能够设计针对大型软件系统复杂问 题的解决方案,设计满足特定需求的软件系统,并能够在系统设计环节中体现实用和可靠性,考虑行业及主流技术等因素。 4.研究:能够基于科学原理并采用科学方法对大型软件系统复杂问题进行研究,包括设计实验、分析与解释案例、并通过信息综合得到合理有效的结论。 5.使用现代工具:能够针对软件系统中的复杂问题,设计、开发、选择与使用恰当的技术、资源和工具,包括对系统中复杂问题的预测与模拟,并能够理解其局限性。 |
课程培养学生的能力(教学目标) | 完成课程后,学生将具备以下能力: (1)掌握软件设计的基本原理和基本知识,培养学生发现问题、解决问题的基本能力。[1、2] (2)掌握软件体系结构的基本知识,学生具有设计大型软件系统的初步能力。[1、3、4] (3)掌握常用的软件体系结构建模能力(主要指UML和软件设计模式),并具有初步设计能力,培养学生的实践能力。[3、5] |
课程简介 | 《软件设计与体系结构》是计算机科学与技术专业选修课程,主要研究结构良好的软件体系结构及所包含的设计模式、有价值的经验和针对特定问题的解决方案,能培养和提高学生的洞察力和分析能力,为今后能设计出灵活可复用的软件打下基础。 本课程的主要任务是掌握软件体系结构相关知识、原理和各种类型设计模式的基本结构,对软件体系结构有比较深入的理解,能够从系统结构角度分析现有的软件系统,在设计实际的特定问题是懂得运用具体相关的设计模式,并能利用所学到的有关软件体系结构的知识高效地设计软件系统。 |
教学内容与学时分配 | 本课程有两个主要部分:一、介绍常用的体系结构风格,软件体系结构的组成与常用的描述方法,基于体系结构的软件开发方法;二、实际设计模式的分类描述,主要包括:创建型、结构型和行为型3类共23个设计模式。 (一)软件体系结构概论 2学时 1. 软件复用 2. 软件构件的组织与检索 3. 软件构件化 4. 软件体系结构 重点难点: 1. 软件构件化 2. 软件体系结构(难点) (二)软件体系结构建模 2学时 1. 软件体系结构模型 2. 软件体系结构的形式化描述 3. 软件体系结构的生命周期 4. 软件体系结构的建模语言 5. 基于软件体系结构的开发 重点难点: 1. 软件体系结构的生命周期 2. 软件体系结构的建模语言 3. 基于软件体系结构的开发(难点) (三)软件体系结构风格 4学时 1. 软件体系结构风格概述 2. 常用的软件体系结构风格 3. 管道/过滤器体系结构风格 4. 事件驱动体系结构风格 5. 分层体系结构风格 6. C2体系结构风格 7. 数据共享体系结构风格 8. 解释器体系结构风格 9. 软件体系结构风格概述 10.反馈控制环体系结构风格 11.客户机/服务器体系结构风格 12.浏览器/服务器体系结构风格 13.公共对象请求代理体系结构风格 14.正交体系结构风格 15.基于层次消息总线的体系结构风格 16.MVC体系结构风格 重点难点: 1. 客户机/服务器体系结构风格 2. 浏览器/服务器体系结构风格 3. MVC体系结构风格(难点) (四)设计模式概述 2学时 1. 什么是设计模式 2. Smalltalk MVC中的设计模式 3. 描述设计模式 4. 设计模式的编目 5. 组织编目 6. 设计模式怎样解决设计问题 7. 怎样选择设计模式 8. 怎样使用设计模式 重点难点: 1. 什么是设计模式 2. 设计模式怎样解决设计问题(难点) 3. 怎样选择设计模式(难点) 4. 怎样使用设计模式(难点) (五)创建型设计模式 4学时 内容: 1. Abstract Factory(抽象工厂) 2. Builder(生成器) 3. Factory Method(工厂方法) 4. Prototype(原型) 5. Singleton(单件) 重点难点: 1. Abstract Factory(抽象工厂)(难点) 2. Factory Method(工厂方法)(难点) (六)结构型设计模式 4学时 内容: 1. Adapter(适配器) 2. Bridge(桥接) 3. Composite(组成) 4. Decorator(装饰) 5. FACADE(外观) 6. Flyweight(享元) 7. Proxy(代理) 重点难点: 1. Adapter(适配器)(难点) 2. Bridge(桥接)(难点) 3. Composite(组成) 4. Flyweight(享元) (七)行为型设计模式 6学时 内容: 1. CHAIN OF RESPONSIBILITY(职责链) 2. COMMAND(命令) 3. INTERPRETER(解释器) 4. ITERATOR(迭代器) 5. MEDIATOR(中介者) 6. MEMENTO(备忘录) 7. OBSERVER(观察者) 8. STATE(状态) 9. STRATEGY(策略) 10.TEMPLATE METHOD(模板方法) 11.VISITOR(访问者) 重点难点: 1. CHAIN OF RESPONSIBIL ITY(职责链) 2. COMMAND(命令) 3. OBSERVER(观察者)(难点) 4. STRATEGY(策略)(难点) 5. TEMPLATE METHOD(模板方法)(难点) |
实验教学(包括上机学时、实验学时、实践学时) | 实验学时8学时 |
教学方法 | 课程教学以课堂教学、课外作业、综合讨论、网络以及授课教师的科研项目于积累等共同实施。 |
考核方式 | 本课程注重过程考核,成绩比例为: 实验报告:20% 期末考试(闭卷):80% |
教材及参考书 | 现用教材:孙玉山, 刘旭东等编写“软件设计模式与体系结构”, 高等教育出版社. 参考书: [1]Alan Shalloway、James R.Trott著、熊节译,《设计模式精解》,清华大学出版社,2005.1 [2] Erich Gamma等著、李英军等译,《设计模式——可复用面向对象软件的基础》,机械工业出版社,2004.9 |
制定人及制定时间 | 黄松,2019年4月14日 |
“Software Design and Architecture” Syllabus
Course Code | 045101652 |
Course Title | Software Design and Architecture |
Course Category | Specialty-related Course |
Course Nature | Elective Course |
Class Hours | 24 |
Credits | 2 |
Semester | 6th |
Institute | College of Computer Science and Engineering |
ProgramOriented | Computer Science and Technology |
Teaching Language | Chinese |
Prerequisites | Software Engineering, Object-Oriented Programming Language |
Student Outcomes (Special Training Ability) | Student outcomes includes: 1. Engineering knowledge: master sound computer basic knowledge, basic theory foundation, techniques and methods, be able to incorporate the basic knowledge and professional techniques from programming languages, object-oriented design and software engineering to tackle the design problems of complex systems, and began to understand and master the knowledge about large system so as to lay a good foundation for future work on designs and development of large and complex systems. 2. problem analysis: master the abilities of using knowledge from software engineering, uml, object-oriented to recognize, express and analyze the complex problem existing in software design and architectures based on some typical cases, which finally yield effective software designs and architecture. 3.desing and develop resolution: master the ability of designing software systems and resolutions that meet the specified requirements according to the complex problems in large systems, and take the reliability and applicability into account, as well as the features about industry and main-stream technologies. 4.research ability: master the ability of using scientific methods to research complex problems existing in large software systems, including design experiment, analysis and explanations, get the reasonable and effective conclusions. 5. using modern tools: master the ability of designing, developing, selecting and choosing suitable technologies, resources and tools according to the practical complex problems in software systems, including the prediction and simulations about some typical complex problems, and understand their limitations. |
Teaching Objectives | After this course, students will own the following abilities: (1)master the basic theory and knowledge of software designs, train students the basic ability to find problems and solve problems.[1、2] (2)own the basic knowledge of software architecture and yield the ability to design large software systems.[1、3、4] (3)understand common software architecture, modeling capability (mainly UML and software design patterns), and have preliminary design ability, train students' practical ability.[3、5] |
Course Description | Software design and architecture is an elective course in computer science and technology. It mainly researches on good design patterns and good structure that contains valuable experience and specific solutions to the problems, and train and improve students' insight and analysis ability on designing flexible and reusable software for future work. The main task of this course is to master the basic knowledge of software architecture, principle and types of design patterns, a more in-depth understanding of software architecture, to analyze existing software systems from the viewpoint of system architecture, specific problems in the practical design and understand how to use the specific design patterns related to the structure of the software system and use the knowledge to design effectively software systems. |
Teaching Content and Class Hours Distribution | This course has two main parts: the first part introduces the commonly used architecture style, composition of software architecture and common description method, software development method based on architecture. The second part introduces the actual design pattern description, including: creative type, structural type and behavioral type with a total number of 23 design patterns. (One)Introduction to software architecture 2 hours 1. software reuse 2. organization and retrieval of software components 3. software component 4. software architecture Key and difficult points: 1. software components 2. software architecture (difficulties) (Two)Modeling of software architecture 2 hours 1. software architecture model 2. formal description of software architecture 3. software architecture life cycle 4. software architecture modeling language 5. software architecture based development Key and difficult points: 1. software architecture life cycle 2. software architecture modeling language 3. software architecture based development (difficulties) (Three)software architecture style, 4 hours 1. software architecture style overview 2. common software architecture style 3. pipeline / filter architecture style 4. event-driven architecture style 5. tiered architecture style 6.C2 architecture style 7. data sharing architecture style 8. interpreter architecture style 9. software architecture style overview 10. feedback control loop architecture style 11. client / server architecture style 12. browser / server architecture style 13. common object request broker architecture style 14. orthogonal architecture style 15. architecture style based on hierarchical message bus 16.MVC architecture style Key and difficult points: 1. client / server architecture style 2. browser / server architecture style 3.MVC architecture style (difficulty) (Four)design patterns overview 2 hours 1. what is design pattern? 2. Design patterns in Smalltalk MVC 3. describe design patterns 4. cataloging of design patterns 5. organization cataloging 6. how design patterns solve design problems? 7. how to choose design patterns? 8. how to use design patterns Key and difficult points: 1. what is design pattern? 2., how design pattern solves design problems (difficulties)? 3., how to choose design patterns (difficulties)? 4. how to use design patterns (difficulties) (Five)Creative design patterns 4 hours 1. Abstract Factory 2. Builder 3. Factory Method 4. Prototype 5. Singleton Key and difficult points: 1. Abstract Factory 2. Factory Method (Six)Structural design patterns 4 hours 1. Adapter 2. Bridge 3. Composite 4. Decorator 5. FACADE 6. Flyweight 7. Proxy Key and difficult points: 1. Adapter 2. Bridge) 3. Composite 4. Flyweight (Seven)Behavioral design patterns 6 hours 1. CHAIN OF RESPONSIBILITY( 2. COMMAND 3. INTERPRETER 4. ITERATOR 5. MEDIATOR 6. MEMENTO 7. OBSERVER 8. STATE 9. STRATEGY 10.TEMPLATE METHOD 11.VISITOR Key and difficult points: 1. CHAIN OF RESPONSIBIL ITY 2. COMMAND 3. OBSERVER 4. STRATEGY 5.TEMPLATE METHOD |
Experimental Teaching | Experiment hours 8 |
Teaching Method | The course teaching is carried out by classroom teaching, homework, comprehensive discussion, network, and the accumulation of scientific research projects of teachers. |
Examination Method | This course focuses on process assessment, and the schore ratio is: Experiment report: 20% Final examination (closed): 80% |
Teaching Materials and Reference Books | Current teaching materials: Sun Yushan, Liu Xudong, etc., "software design patterns and architecture", Higher Education Press Reference materials: [1]Alan Shalloway, James R.Trott, "design patterns explained", Tsinghua University press, 2005.1 [2] Erich Gamma, Li Yingjun et al., "design patterns: Reusable Object Oriented Software Based", Mechanical Industry Press, 2004.9 |
Prepared by Whom and When | Huang Song, 2019/4/14 |
《软件设计与体系结构》实验教学大纲
课程代码 | |
课程名称 | 软件设计与体系结构 |
英文名称 | Software Design and Architecture |
课程类别 | 专业课 |
课程性质 | 选修 |
学时 | 总学时:32 实验学时:8 理论学时:24 |
学分 | 2 |
开课学期 | 第六学期 |
开课单位 | 计算机科学与工程学院 |
适用专业 | 计算机科学与技术 |
授课语言 | 中文授课 |
先修课程 | 软件工程、面向对象程序语言 |
毕业要求(专业培养能力) | (本学院开设的专业课填写;根据专业所列的毕业要求来填写) |
课程培养学生的能力(教学目标) | 本课程对学生达到如下毕业要求有如下贡献: 1.工程知识:掌握扎实的计算机专业基础知识、专业基本原理、方法和手段,能够将程序语言、面向对象设计、软件工程等基础知识和专业知识用于解决复杂软件系统设计问题,并接触和掌握大型软件系统设计知识,为解决以后从事大型软件系统设计与开发打下知识基础。 2.问题分析:能够利用软件工程、UML、面向对象设计、本专业基本原理、方法和手段研究分析软件设计与体系结构中的复杂问题,以获得有效的软件设计与结构。 3.设计/开发解决方案:能够设计针对大型软件系统复杂问题的解决方案,设计满足特定需求的软件系统,并能够在系统设计环节中体现实用和可靠性,考虑行业及主流技术等因素。 4.研究:能够基于科学原理并采用科学方法对大型软件系统复杂问题进行研究,包括设计实验、分析与解释案例、并通过信息综合得到合理有效的结论。 5.使用现代工具:能够针对软件系统中的复杂问题,设计、开发、选择与使用恰当的技术、资源和工具,包括对系统中复杂问题的预测与模拟,并能够理解其局限性。 |
课程简介 | 完成课程后,学生将具备以下能力: (1)掌握软件设计的基本原理和基本知识,培养学生发现问题、解决问题的基本能力。[1、2] (2)掌握软件体系结构的基本知识,学生具有设计大型软件系统的初步能力。[1、3、4] (3)掌握常用的软件体系结构建模能力(主要指UML和软件设计模式),并具有初步设计能力,培养学生的实践能力。[3、5] |
主要仪器设备与软件 | UML、Rational Rose 2003或其他UML建模软件 |
实验报告 | 根据指导老师布置的题目,选择合适的软件体系架构及软件设计模式,给出相应的软件系统设计,并完成相应的实验报告。实验报告内容应该给出需求的分析、设计的目的、采用的设计方案和设计模式、最后的解决方案。 |
考核方式 | 本课程注重过程考核,成绩比例为: 实验报告:20% 期末考试(闭卷):80% |
教材、实验指导书及教学参考书目 | 现用教材:孙玉山, 刘旭东等编写“软件设计模式与体系结构”, 高等教育出版社 参考书: [1]Alan Shalloway、James R.Trott著、熊节译,《设计模式精解》,清华大学出版社,2005.1 [2] Erich Gamma等著、李英军等译,《设计模式——可复用面向对象软件的基础》,机械工业出版社,2004.9 |
制定人及发布时间 | 黄松,2019年4月14日 |
《软件设计与体系结构》实验教学内容与学时分配
实验项目编号 | 实验项目名称 | 实验学时 | 实验内容提要 | 实验类型 | 实验要求 | 每组人数 | 主要仪器设备与软件 |
1 | 经典软件体系结构风格 | 2 | 熟悉管道-过滤器软件体系结构、基于事件的隐式调用风格和层次软件体系结构 | 验证性 | 必做 | 1 | UML和Java |
2 | 分布式软件体系结构风格 | 2 | C/S体系结构风格和B/S体系结构风格 | 验证性 | 必做 | 1 | UML和Java |
3 | MVC风格 | 2 | MVC的应用和编程实现 | 验证性 | 必做 | 1 | UML和Java |
4 | 设计原则和设计模式 | 2 | 熟悉主要的面向对象设计原则和设计模式 | 验证性 | 必做 | 1 | UML和Java |
“Software Design and Architecture”Syllabus
Course Code | |
Course Title | Software Design and Architecture |
Course Category | Specialty-related Course |
Course Nature | Elective Course |
Class Hours | 24 |
Credits | 2 |
Semester | 6th |
Institute | College of Computer Science and Engineering |
Program Oriented | Computer Science and Technology |
Teaching Language | Chinese |
Prerequisites | Software Engineering, Object-Oriented Programming Language |
Student Outcomes (Special Training Ability) | After this course, students will own the following abilities: (1)master the basic theory and knowledge of software designs, train students the basic ability to find problems and solve problems.[1、2] (2)own the basic knowledge of software architecture and yield the ability to design large software systems.[1、3、4] (3)understand common software architecture, modeling capability (mainly UML and software design patterns), and have preliminary design ability, train students' practical ability.[3、5] |
Teaching Objectives | Software design and architecture is an elective course in computer science and technology. It mainly researches on good design patterns and good structure that contains valuable experience and specific solutions to the problems, and train and improve students' insight and analysis ability on designing flexible and reusable software for future work. The main task of this course is to master the basic knowledge of software architecture, principle and types of design patterns, a more in-depth understanding of software architecture, to analyze existing software systems from the viewpoint of system architecture, specific problems in the practical design and understand how to use the specific design patterns related to the structure of the software system and use the knowledge to design effectively software systems. |
Course Description | This course has two main parts: the first part introduces the commonly used architecture style, composition of software architecture and common description method, software development method based on architecture. The second part introduces the actual design pattern description, including: creative type, structural type and behavioral type with a total number of 23 design patterns. (One)Introduction to software architecture 2 hours 1. software reuse 2. organization and retrieval of software components 3. software component 4. software architecture Key and difficult points: 1. software components 2. software architecture (difficulties) (Two)Modeling of software architecture 2 hours 1. software architecture model 2. formal description of software architecture 3. software architecture life cycle 4. software architecture modeling language 5. software architecture based development Key and difficult points: 1. software architecture life cycle 2. software architecture modeling language 3. software architecture based development (difficulties) (Three)software architecture style, 4 hours 1. software architecture style overview 2. common software architecture style 3. pipeline / filter architecture style 4. event-driven architecture style 5. tiered architecture style 6.C2 architecture style 7. data sharing architecture style 8. interpreter architecture style 9. software architecture style overview 10. feedback control loop architecture style 11. client / server architecture style 12. browser / server architecture style 13. common object request broker architecture style 14. orthogonal architecture style 15. architecture style based on hierarchical message bus 16.MVC architecture style Key and difficult points: 1. client / server architecture style 2. browser / server architecture style 3.MVC architecture style (difficulty) (Four)design patterns overview 2 hours 1. what is design pattern? 2. Design patterns in Smalltalk MVC 3. describe design patterns 4. cataloging of design patterns 5. organization cataloging 6. how design patterns solve design problems? 7. how to choose design patterns? 8. how to use design patterns Key and difficult points: 1. what is design pattern? 2., how design pattern solves design problems (difficulties)? 3., how to choose design patterns (difficulties)? 4. how to use design patterns (difficulties) (Five)Creative design patterns 4 hours 1. Abstract Factory 2. Builder 3. Factory Method 4. Prototype 5. Singleton Key and difficult points: 1. Abstract Factory 2. Factory Method (Six)Structural design patterns 4 hours 1. Adapter 2. Bridge 3. Composite 4. Decorator 5. FACADE 6. Flyweight 7. Proxy Key and difficult points: 1. Adapter 2. Bridge) 3. Composite 4. Flyweight (Seven)Behavioral design patterns 6 hours 1. CHAIN OF RESPONSIBILITY( 2. COMMAND 3. INTERPRETER 4. ITERATOR 5. MEDIATOR 6. MEMENTO 7. OBSERVER 8. STATE 9. STRATEGY 10.TEMPLATE METHOD 11.VISITOR Key and difficult points: 1. CHAIN OF RESPONSIBIL ITY 2. COMMAND 3. OBSERVER 4. STRATEGY 5.TEMPLATE METHOD |
Instruments and Equipments | UML、Rational Rose 2003 or other UML modeling software |
Experiment Report | According to the topics assigned by the instructor, select the appropriate software architecture and software design model, give the corresponding software system design, and complete the corresponding experimental report. The content of the experiment report should give the analysis of the demand, the purpose of the design, the design pattern and the final solution. |
Assessment | This course focuses on process assessment, and the schore ratio is: Experiment report: 20% Final examination (closed): 80% |
Teaching Materials and Reference Books | Current teaching materials: Sun Yushan, Liu Xudong, etc., "software design patterns and architecture", Higher Education Press Reference materials: [1]Alan Shalloway, James R.Trott, "design patterns explained", Tsinghua University press, 2005.1 [2] Erich Gamma, Li Yingjun et al., "design patterns: Reusable Object Oriented Software Based", Mechanical Industry Press, 2004.9 |
Prepared by Whom and When | Huang Song,2019/4/14 |
“Software Design and Architecture”Experimental Teaching Arrangements
No. | Experiment Item | Class Hours | Content Summary | Category | Requirements | Number of StudentsEach Group | Instruments, Equipments and Software |
1 | Classic software architecture style | 2 | Familiar with the pipeline-filter software architecture, event-based implicit call style, and hierarchical software architecture | Verification | Compulsory | 1 | UML and Java |
2 | Distributed software architecture style | 2 | C/S architecture style and B/S architecture style | Verification | Compulsory | 1 | UML and Java |
3 | MVC style | 2 | Application of MVC and its implementations | Verification | Compulsory | 1 | UML and Java |
4 | Design principle and design pattern | 2 | Familiar with main object-oriented design principles and design patterns | Verification | Compulsory | 1 | UML and Java |