课程介绍
该课程包含的内容有:架构设计思想、软件质量属性、架构文档撰写、组包原则、面向对象设计原则、常用架构风格、常用的设计模式。
课程收益
通过该课程,希望让学员在多个层次上对架构设计的能力达到提高:
1、全系统架构级,掌握服务的识别与划分技巧
2、哲学层次级,掌握软件内部框架级架构设计模板(架构风格)
3、软件模块级,掌握模块划分的通用模板(设计模式)
课程对象
程序员、软件架构工程师、系统工程师、系统分析师
学员基础
学习本课程应具备下列基础知识:至少掌握一种面向对象语言,有类与对象的基本概念。
关键词
1、 面向对象
2、 质量属性
3、 4+1视图
4、 组包原则
5、 设计原则
6、 架构风格
7、 设计模式
课程大纲
主题 | 授课内容 |
引子 | 从两个案例说起。指出大部分的软件都是“意大利面条”式的代码。 引申出解决之道――软件架构设计、代码持续优化和自动化测试。 |
第1单元 架构设计思路 | 1、架构设计思路 (1)考虑驱动因素 (2)设计基础架构 (3)输出设计结果 (4)跟随项目持续优化 (5)输出优化代码 2、架构设计的驱动因素 (1)软件质量模型 (2)质量属性间的互斥 (3)性能与其他属性的取舍 |
第2单元 模块化程序设计思想 | 该单元介绍代码分模块、分层的思想,以及一些基本的代码解耦方法。 1、模块化设计的目的 2、模块化程序设计方法 (1)什么是模块 (2)什么是好模块 (3)模块接口设计 3、模块杀手--循环依赖 (1)次晨综合症 (2)分层设计思想 |
第3单元 架构设计文档 | 1、架构视图 (1)开发视图――类图和包图 (2)逻辑视图 (3)4+1视图 (4)4+1视图在架构文档中的取舍 2、架构设计文档 (1)架构文档的价值 (2)架构文档的撰写原则 3、平台接口说明文档 (1)平台架构思想 (2)平台接口约束文档 |
第4单元 组包原则 与 设计原则 | 1、 低耦合组包原则 (1)无环依赖原则 (2)稳定依赖原则 (3)稳定抽象原则 2、高内聚组包原则 (1)重用-发布原则 (2)共同重用原则 (3)共同封闭原则 3、面向对象设计原则 (1)单一职责原则 (2)开闭原则 (3)里氏替换原则 (4)接口隔离原则 (5)依赖倒置原则 |
第5单元 基础架构级模块划分--架构风格 | 1、哲学层次的架构设计 2、架构风格定义与分类 3、常用风格的模块划分 (1) “层次结构”(平台设计思想) (2) “面向对象”(同层模块划分) (3) “批处理序列”和“管道-过滤器” (4) “黑板系统” (5) “数据库系统” (6) “进程通信” (7) “事件驱动” (8) “基于规则的系统”与“虚拟机” |
第6单元 设计模式概述 | 1、什么是设计模式 2、使用设计模式的好处 3、被滥用的设计模式 |
第7单元 策略模式 和 外观模式 | 2.1 依赖倒置原则 2.2 策略模式 2.2.1为什么叫策略 2.2.2策略模式的好处 2.2.3案例1 2.2.4运用时机 2.2.5案例2--变体 2.3 外观模式 2.4 表数据入口模式 2.5策略模式与外观模式的区别 |
第8单元 模板方法模式 | 3.1 策略模式带来的重复代码 3.2 模板方法模式 3.3 运用时机与弊端 3.4 模板方法的滥用 |
第9单元 工厂模式 | 4.1 策略模式的局限 4.2 工厂模式 4.3 自动化测试 4.4 扩展运用 4.5 运用时机 |
第10单元 抽象服务模式 和 适配器模式 | 5.1 抽象服务模式 5.2 适配器模式 5.2.1对象形式的适配器模式 5.2.2类形式的适配器模式 |
第11单元 组合模式 | 6.1 扩展功能需求导致违反开闭原则 6.2 组合模式 6.3 运用时机 6.4 组合模式的好处 |
第12单元 MVP模式 和 MVC模式 | 7.1 反例 7.2 抽取“模型”层接口 7.3 “表示器”层 7.4 案例 7.5 数据主动变化处理 7.6 MVC模型 7.7 MVP模型的优缺点 7.8 MVP模式的运用时机 |
第13单元 观察者模式 | 8.1 案例 8.2 合成复用原则 8.3 与工厂模式的矛盾 8.4 观察者模式的运用时机 8.5 用event简化观察者实现 8.6 推模型观察者模式 选讲内容:Lamda表达式 |
第14单元 状态模式 | 9.1有限状态机案例 9.2 switch/case实现 9.3 迁移表实现 9.4 状态模式实现 9.4.1 状态模式类图 9.4.2 旋转门类的实现 9.4.3 状态类的实现 9.4.4 状态模式的优缺点 9.5 状态模式的运用时机 |
第15单元 装饰模式 | 10.1 案例1 10.2 装饰模式的适用场景 10.3 装饰模式 10.4 案例2 |
第16单元 单例和单态模式 | 11.1 单例和单态模式的运用时机 11.2 单例模式 11.3 单态模式 |
第17章 架构师如何工作 | 1、和团队一起工作 2、代码走读 3、结对编程 4、加强学习 |