:
:
:
:
:
:
:
:
【课程对象】开发团队中的设计人员、系统分析人员,开发、测试主管或项目经理,以及有望或有志成长为以上角色的技术人员。
【课程目标】掌握软件架构的基础知识、设计原则;掌握C#设计模式、设计方法,熟悉主流架构技术,了解规范的软件项目管理流程,并且通过一些典型的案例,揉合讲师的大型项目经验,以项目过程中的问题带动原理的描述,从理论和实际的结合上重点的讲清问题,帮助学员成为C#架构设计高手。
【师资介绍】康老师:中心首席讲师,(原信息产业部计算机技术培训中心资深软件架构设计专家、UML/RUP专家、高级技术顾问、金牌讲师。)国内着名企业研究院首席架构师,软件设计师,具有16年从事IT行业的软件开发、系统架构设计分析经验。熟悉中国企业的需求管理,经历过多种文化氛围与组织形态,对大型项目、系统工程管理有着深入的实践与体会。在国内外做过各级政府、教育部、中国石化、国税总局金税工程等很多大型复杂信息化项目的架构设计,在实际项目工作中积累了丰富的项目实际工作经验和丰富的系统架构设计分析经验。
【课程设置】24课时(3天)
【课程费用】3800元/人(含培训费、资料费、3天午餐等费用)
【举办日期】2011年11月25—27日(周五—周日,3天):9点—12点;1点半—5点
【举办单位】北京博思创嘉教育科技有限公司
【课程地点】北京 中关村软件园9号楼(国际软件大厦)
【报名地点】北京市海淀区创业中路36号北京市留学人员海淀创业园502号
【课程大纲】
第一单元:设计模式与面向对象的设计思想
一、.Net面向对象与设计模式
1Net中面向对象与设计模式的联系
2.面向对象的设计原则: 开闭原则、依赖倒置原则、Liskov替换原则、单一职责原则、接口分离原则、组合复用原则、所知最少原则案例:会议管理系统等、API函数的启示等
3.用GRASP模式指导C#程序设计信息专家、创建者、高内聚、低耦合、控制者、多态、间接、纯虚构、保护变化案例:信息专家、控制者、低耦合、间接模式案例分析应用GRASP模式精化架构设计案例分析
二、UML中的常见疑难问题辨析
1.类设计
1)UML中关系的辨析: 依赖关系、关联关系辨析;聚合,组合辨析。
2)类设计中的常见问题: 一些常见但易混淆的类关系图;熟悉类的自关联形式;使用关联类;一些易混淆的重数表示方法;建模为对象与建模为属性 / 建模为方法与建模为对象的辨析。
2.交互图中的常见问题:
1)循环、条件、创建、并行的表示。
2)控制类的地位;边界、控制、实体类的交互规则。
3.其它辨析
1)扩展基类与覆盖基类等;自关联、关联多重性、关联角色名辨析。
2)消除多重继承的常用手段。
4.借鉴RUP中的设计思想
1)总体设计阶段需要注意的问题
2)分析类的寻找
3)分析阶段要注意的事。
案例:Robot系统设计Dev文件系统设计
第二单元:设计模式在C#中的运用
一、设计模式介绍
1.从几个案例说起文件解析器:
1)文件解析器的初始设计。
2)初始设计遭遇的问题。
3)用模式来思考。
案例:演示控制系统:
1)一个不错的演示控制系统。
2)功能渐强,结构渐乱。
3)用统一的方式处理问题。
案例:多窗口的系统:
1)直观的想法。
2)松耦合的实现。
案例:薪酬系统:
1)虚假的策略。
2)设计人员的功底; 抽象的重要性。
案例:编辑器。
1)模式的困惑。
2)一切从实际出发。
2.设计模式分类及特点
1)为何需要设计模式;设计模式在软件设计中所处的层级及阶段。
2)设计模式的特点。
3)设计模式的几种分类。
4)设计模式的意图及考虑问题的基本思想。
5)设计模式的优点及不足。
二、组织接口型模式:
1.接口的意义。
2.适配器模式。Adapter1)适配器模式介绍。2)容易被忽略的情况:关于接口的修改。案例:文件解析器系统的接口设计。
3.适配器总结。
4.外观模式。1)令人望而生畏的API函数。2)外观模式的作用。3)容易被忽略的外观。案例:文件解析器系统的外观设计。
5.外观模式与适配器的辨析。
6.中介者模式1)中介者模式的使用场景。2)中介者模式在架构中的重要地位。3)中介者模式与控制者。典型案例分析:组织接口型模式在实际项目中的综合运用。
三、创建型模式
1.单例模式。1)单例模式的意义。2)多线程中的问题。3)C#中的单例案例:引入单例模式。
2.工厂模式1)工厂模式的使用场景。2)工厂模式与反射。案例:引入工厂模式。
3.抽象工厂模式1)创建不同对象的多个系列产品。2)工厂模式与抽象工厂模式的区别。案例:引入抽象工厂模式。
4.构造者模式1)构造者模式的应用场景。2)构造者模式中的控制者。
5.原型模式1)作为工厂的原型2)利用克隆进行原型3)C#对原型模式的支持(ICloneable)典型案例分析:创建型模式在实际项目中的综合运用。
四、扩展型模式1.功能与逻辑的关系1)功能模块的设计要点。2)逻辑模块的设计要点。3)系统稳定及可扩展的秘诀。
2.模板方法模式1)部分的多态。2)模板方法模式的使用场合。3)模板方法模式与IOC。案例:文件解析器中的模板方法模式。
3.策略模式1) 继承与组合的辨析。2) 多态的经典使用。3) 无处不在的策略模式。案例:运输系统;在多窗口系统中引入策略模式。
4.桥接模式1)从“类爆炸”说起。2)复杂多对多的处理。3)仅针对接口编程是不够的。4)桥接模式的要点:抽象类行为的具体实现中有重复的方法。5)从桥接模式到面向对象的误区。案例:在演示控制系统中引入桥接模式。
5.状态模式1)状态模式的本质:类状态机。2)状态模式的前提条件:经常发生改变的是状态(业务流程),而非对应的处理。3)状态模式使用。4)状态模式与表驱动法。
6.策略、桥接、状态、模板方法模式的辨析。
7.装饰模式1)装饰模式的使用场合。2)装饰模式的要点。3)装饰模式在。NET中的应用(MemoryStream等)。案例:装饰模式在打印中的使用。
8.代理模式1)代理模式的使用场合。2)代理模式的要点。3)代理模式与AOP
9.访问者模式1)访问者模式的使用场合。2)双重分发机制。3)与桥接模式的比较。案例:在演示控制系统中引入桥接模式。
10.责任链模式1)责任链模式的使用场合。2)责任链模式的要点。3)消息路由与责任链模式。
11.组合模式1)组合模式的使用场合。2)组合模式的使用要点。案例:组合模式在表单统计中的使用。典型案例分析:扩展型模式在实际项目中的综合运用。
五、操作型模式1.命令模式1)命令模式的特点、优点及缺点。2)命令模式的典型使用场合。案例:在客户端与服务器端传递命令。案例:在元搜索系统中使用命令模式。
2.观察者模式1)观察者模式的使用场景。2)观察者模式与MVC。3)观察者模式使用中变体。4)。Net中的观察者模式(delegate实现)案例:用观察者模式解决多窗口系统的联动问题。
3.享元模式1)享元模式的使用场景。2)内存管理:存根(stub)与享元模式。
4.备忘录模式1)备忘录的使用场景。
5.迭代器模式1)Java、stl、c#中的迭代器实例。案例:构造统一的树状结构迭代。
6.解析器模式:1)解析器模式的使用场合。典型案例分析:操作型模式在实际项目中的运用。
第三单元:设计模式本质论一、关于功能与逻辑的分离。1.隔离关注面。2.软件架构设计的思考。3.单向依赖与双向依赖。4.强依赖与弱依赖。5.面向对象的误会。6.领域模型。7.DIP、DI和IOC。8.分离、分离,还是分离!9.桥接、策略、状态、访问者、模板方法模式。
二、关于间接。1.间接在软件设计中的地位。2.变形记。3.接口在间接中的地位。4.掌握好度。5.间接、间接、还是间接!6.实际项目运用中的折衷。典型案例分析:间接的实际运用。
三、关于动态对象。1.一个有争议的建模例子。2.你真正理解什么是对象吗?3.善于构建动态对象。4.其它的小对象。典型案例分析:动态对象的实际运用。
四、关于常用模式的组合。1.用中介者模式作为中控。2.用桥接/ 策略模式作为情况分支处理。3.用状态模式进行事件分发。4.用命令模式处理复杂的操作。5.用访问者模式、装饰模式、组合模式统一流程。6.用工厂/ 抽象工厂模式进行创建组配。7.用单例模式简化传输,构建无状态对象。8.用模板方法模式处理小流程。9.用观察者模式实现联动和消息相应。10.用状态模式实现控制中枢。
五、关于模式的误用。1.以业务为边界。2.不用模式的正当理由。3.不可避免的类爆炸。4.子类复子类,子类何其多。5.理解模式的本质,而非背诵形式。6.高手的选择。典型案例分析:实际项目中,不能套用模式的案例!
第四单元:软件架构模式一、软件分层的设计方式:1.表现层框架设计1)使用MVC模式设计表现层2)BS和CS的选择3)表现层易用性的考虑4)表现层的设计框架(Struts,WebWork,ASP.net等)2.中间层架构设计1)服务facade设计2)业务逻辑层工作流设计3)业务逻辑层组件设计4)业务逻辑层实体设计5)分布式应用场景6)业务逻辑层框架(EJB,Springframework,。Net框架)7)重要的领域模型(贫血、充血模型)3.数据访问层设计1)ORMapping框架的选取2)数据表设计中的一些注意事项典型案例分析:领域模型中架构分层的具体运用。
二、常用的软件架构风格及实际运用分析:1.系统软件 分层(Layer)、管道和过滤器(Pipes and Filters)、黑板(Blackboard) 2.分布式软件经纪人(Broker) 、客户/服务器(Client/Server)、点对点(Peer to Peer)3.交互软件模型-视图-控制器(Model-View-Controller)、显示-抽象-控制(Presentation-Abstraction-COntrol)典型案例分析:架构风格在实际项目中应用
三、架构设计原则1.抽象(Abstraction)、封装(Encapsulation)和信息隐藏(Information Hiding)2.分而治之(Divide-And-Conquer)和模块化(modularization)3.松耦合和高内聚(Coupling and Cohesion)4.策略和实现的分离(Separation of Policy and Implementation)5.接口和实现的分离(Separation of Interface and Implementation)6.单一引用点(Single Point of Reference)典型案例分析:架构原则在实际项目中应用
第五单元:设计模式综合练习一、设计模式综合案例。1.XXXX网络数据获取及分析案例研究。2.基于网络元搜索的系统架构及设计模式。3.企业薪酬管理系统设计模式综合运用。4.会议管理系统。5.超市POS收款系统软件架构案例研究6.文件解析系统设计模式综合运用。7.Devs文件编辑器系统设计模式综合运用……8.图像处理系统。