从60年代提出“软件危机”这一概念开始,直到今天仍然没有彻底解决,无数开发团队都不得不面对居高不下的项目失败率。软件工程这一概念仍然无法有效地落地,成为了信息化建设进一步发展的巨大瓶颈。
在架构方面,“如何真正创建弹性的高可用的软件架构”、“架构师的职责和需求之间的边界是什么”、“架构设计如何落地”等问题也横在众多开发团队的面前。在软件业从“砖混时代”向“框架时代”过渡的今天,这一矛盾日显突出。
课程体系特点
1、完整、连贯
2、重实践
3、点面俱可受益
课程目标
通过学习使学员掌握软件架构设计的基本理论和方法,掌握架构设计的具体过程,提交物的格式。尤其是接口设计的具体技巧。
通过学习,学员可以掌握常见系统模式的设计方法和技巧。
通过学习,让学员更好的融合于整体项目管理进行架构设计。
通过学习,学员可以根据项目的实际情况,更好地进行架构设计。
课程设置与培训要求
1、 了解软件架构设计的基础知识、开发流程和标准,熟悉国际先进的和流行的软件架构设计的模式。
2、 针对中国软件企业的现状,介绍软件架构设计的实用方法和有关技术。
3、 敏捷开发方法的介绍和实例分析。
4、 项目管理模式和软件架构设计。
设计模式思想与困惑---你的了解设计模式吗? | 内容一:软件设计模式---模式到底是什么?价值在哪里? 1. 什么是模式 2. 为什么需要设计模式? 难道就为了面试吗? 3. 设计模式能够给我们带来什么? 4. 设计模式学习面临的困难和解决思路 5. 从了解模式到正确应用模式 1. 案例分析---某前台展现子系统,在使用模式前解决方案 和 使用模式后的对比 内容二:软件设计模式本质—你真的知道模式背后的原理吗? 1. 发现变化进行封装变化 2. 把变化与不变必须分离 3. 针对接口的编程,而不是针对实现 4. 组合优于继承 1. 案例分析—通过正反例子分析模式背后的本质 内容三:什么是好的设计-----难道使用设计模式就是好的设计吗? 1. 什么是好的设计? 2. 难道不使用设计模式就是坏的设计吗? 3. 为什么需求变化总是使你痛苦? 和你的设计有关系吗? 4. 好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。 5. 设计模式可以使你的设计更灵活,更易复用,更具可扩展性 1. 案例分析—通过多种设计方案的对比, 那种更合适? | | 设计模式应用策略1—面向对象思维 | 内容一:面向对象思维是模式基础 1. 面向对象分析与设计的本质 2. 面向对象设计思维与面向过程设计思维—职责驱动设计 3. 抽象对象模型 4. 封装对象模型 5. 继承对象模型 6. 多态对象模型 7. 面向对象常见的错误认识—思考OO带来的价值 8. 为什么学习设计模式需要面向对象思维 9. 从面向对象到模式到再到真正的面向对象 10. 案例分析—通过例子说明比较面向对象思维和面向过程思维的差别,难道面向对象就一定是最优的? 你真正理解面向对象吗? 面向对象到底真正有哪些好处, 不要人云亦云 ! 内容二:面向对象设计原则(principles) 1. 依赖倒置原则(DIP) 2. 开放封闭原则(OCP) 3. 单一职责原则(SRP) 4. Liskov 替换原则(LSP) 5. 接口隔离原则(ISP) 6. 对象组合优于类继承 7. 封装变化点 8. 面向接口编程 9. 案例分析—每组原则,分别通过案例进行分析,为什么需要使用原则进行考虑 | GOF23设计模式是建立在对面向对象技术深刻理解的基础之上的,本节深入讲解面向对象设计,几大经典的面向对象设计原则,OO对象模型,从各个角度奠定学习设计模式之核心基础 | 设计模式应用策略2—知道模式 即使知道设计模式不一定成为一个优秀的设计师,但是不了解设计模式绝对不会成为优秀的设计师 | 内容一:知道模式 –你连设计模式都不了解, 还算是设计师吗? 1. 了解模式-需要知道自己不知道 2. 研读模式的关键4要素 3. 创建型模式 4. 行为型模式 5. 结构型模式 6. 该阶段经常遇到的应用问题和对策 7. 案例分析—设计模式连连看, 你知道模式吗? 某公司设计模式考试题 内容二:模式案例– 数据库连接池系统设计 1. 介绍项目背景情况,如何应对将来的各种变化 2. 学员分组进行设计 3. 应用设计模式,如何改善设计 4. 分析设计模式是否带来软件的可维护性 5. 学习(Factory Method/Adapter/Proxy/Observer/Strategy等几种设计模式和设计原则) | 本节深入阐述GOF 23种经典设计模式(包括创建型模式、结构型模式、行为型模式),深入解析它们的意图、动因、原理、实现与应用实践。 | 设计模式应用策略3—临摹大师 看看那帮牛B的大师他们怎样使用设计模式的 ,他们也是在滥用设计模式吗? | 内容一:研读经典系统—学习那些牛B的大师如何使用设计模式 1. 学习设计模式后,可是无法使用在真实项目的症状 2. 分析经典作品,重新思考设计模式的威力 3. 研读设计模式的关键要素 内容二:模式案例–Junit设计模式应用分析 1. Erich Gamma 和Kent Beck 的Junit 2. Junit架构思路(微内核模式) 3. Juint的设计, 哪些值得我们学习 4. 设计JUnit的过程中是怎样应用设计模式的。 5. 学习设计模式(Command/Composite/Template Method/ Adapter/Observer/Decorate ) 6. 通过研读经典学习到什么? | | 设计模式应用策略4—你知道如何用模式去思考吗 有时放弃模式更值得学习 | 内容一:用模式思考系统设计 1. 基于模式的设计系统 2. 用模式思考的过程 3. 模式的应用层次和组合应用模式 4. 基于模式的方法和步骤 内容二:放弃设计模式的智能—只要遵循原则,保持简单 1. 放弃模式更需要智能, 2. 设计需要的原则 a) 重用原则 b) 扩展原则 c) 隔离原则 d) 转接原则 e) 保变原则 3. 案例分析---怎样去除设计模式, 不用设计模式 内容三:模式案例–缓存系统 1. 项目系统背景和需求 2. 缓存任何对象,任何java对象都可以缓存。 3. 拥有全面的API--给你全面的程序来控制所有的缓存的特性。 4. 永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。 5. 缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。 6. 系统的设计思考过程 7. 展示如何用模式,进行设计 | | 设计模式应用策略5—重构到模式 通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。 | 内容一:重构到模式- 1. 设计坏味道概述 2. 重构思想 3. 理解如何结合重构和模式; 4. 用模式导向的重构(pattern-directed refactoring)改善既有代码的设计; 5. 找出需要进行模式导向重构的代码段; 6. 了解为什么使用模式来改善既有的设计要优于在新的设计早期使用模式。 7. 一组坏味(也就是问题),表示需要进行模式导向的重构; 8. 实现同一模式的不同方式的示例; 9. 什么时候应该通过重构实现模式、趋向模式以及去除模式给出建议。 10. 常见设计模式的重构演化的过程 内容二:案例- 对现有系统进行重构从而改善设计 1. 介绍项目需求情况,进行设计 2. 通过重构逐步实现设计模式 3. Framework 设计思想—好莱坞原则 | “虽然软件的演化,利用重构从而得到模式”是有效应用设计模式的实践准则。本节以一些重构技巧来展示如何通过演化的方式来步步达至设计模式,从而帮助学员更好地掌握如何在软件设计中运用设计模式,发现更多设计模式。 | 设计模式对比大讨论 | 内容一:模式大PK, 通过对比了解设计模式的细节 1. 创建型模式讨论 a) 简单工场 工厂方法 抽象工场 b) Abstract Factory,builder,Prototype 模式 c) 单例模式 2. 行为型模式 a) Adapter与Bridge b) Composite、Decorator与Proxy c) Façade模式与 Adapter模式 /Proxy模式 d) Composite 与Iterator模式 3. 结构型模式 a) 封装变化-Strategy/State/ Iterator模式 b) 封装结构---Mediator模式与Facade模式 c) 对象作为参数-- Visitor/Command/Mementor d) 通信应该被封装还是被分布- Mediator和Observer e) 对发送者和接收者解耦-Command模式与职责链模式 将实践中常容易混淆或常常联合使用的几个模式放在一组讨论,对比分析,讲解思想。如何发现、应用更多模式。通过对“相似或相关的设计模式”的对比分析,加深理解,是避免“模式误用”的好方法。 | | 设计模式总结 | 内容一:设计模式总结 1. 设计模式不是银弹 2. 设计模式真正给设计者带来的价值 3. 设计模式仅仅是工具 4. 超越设计模式 | |
上海市信息技术培训中心
上课时间:2013.11.13-15
咨询人:魏老师 021-52550076
|