课程简介
本课程将对软件生命周期与软件架构进行介绍,重点讲述面向对象程序设计原则与模式及方法论、用UML辅助系统分析与设计、借鉴RUP的设计过程、设计模式与软件设计思想、架构设计实践等要点,并结合软件架构设计案例进行进一步分析
目标收益
培训对象
课程大纲
软件生命周期与软件 架构介绍 |
软件架构介绍 IT行业的人才结构与软件架构师的定位 软件架构师应掌握的知识体系 软件架构设计的特点、层次、分类 软件架构的主要理论、方向和趋势 软件工厂,实现软件开发的产业化 软件生命周期进程模型介绍 RUP与XP Agile与CMMI MSF |
技术架构视图─面向对象程序设计原则与模式及方法论 |
衡量软件系统质量的标准 软件系统开始变坏的表现:硬化、脆弱、绑死、胶着。 软件系统关键的质量特性:正确性、健壮性、可扩展性、可复用性、兼容、可移植性、高效性、timeliness、economy and functionality 面向对象设计的基本原则 类的设计原则: 开闭原则、依赖倒置原则、Liskov替换原则、单一职责原则、接口分离原则、组合复用原则、所知最少原则 例:会议管理系统等、API函数的启示等 包内聚原则:发布与复用等价原则、共同封闭原则、共同复用原则 包耦合原则:无循环的依赖原则、稳定的依赖原则、稳定的抽象 用GRASP模式指导架构设计 GRASP架构模式: 信息专家、创建者、高内聚、低耦合、控制者、多态、间接、纯虚构、保护变化 典型案例分析: 违反信息专家模式案例分析 应用信息专家模式案例分析 应用GRASP模式精化架构设计案例分析 软件架构设计的关键因素 什么是架构, 它和系统是如何关联的。 如何获得可维护性、可扩展性、可重用性、互操作性等。 在系统中如何组织组件(Component) 。 如何组织组件(Component)的内部。 如何保持平台相关的细节和应用的分离。 如何应用封装(encapsulation)、抽象(abstraction)和委派(delegation)的原则。 如何应用设计模式来实现好的结构。 案例分析 模板容器、Movie查询等 |
用UML辅助系统分析与设计 |
UML中的常见疑难问题辨析 用例图 - 参与者建模中的常见问题 - 用例建模中的常见问题 - UaseCase的本质讨论 类设计 - UML中关系的辨析: 依赖关系、关联关系辨析;聚合,组合辨析 类设计中的常见问题: - 一些常见但易混淆的类关系图; - 熟悉类的自关联形式;使用关联类; - 一些易混淆的重数表示方法 - 建模为对象与建模为属性 / 建模为方法与建模为对象的辨析。 其它辨析 - 包与组件 - 扩展基类与覆盖基类等;自关联、关联多重性、关联角色名辨析 - 消除多重继承的常用手段 |
借鉴RUP的设计过程 |
借鉴RUP的设计过程 全局分析: 选用架构模式;识别关键抽象;标识分析机制;常见的分析机制 局部分析: 提取分析类: 分析类的类型划分:边界类、实体类、控制类,分析类在模型中的位置,边界类的复用,控制类的变通。 分析动态场景: 消息与责任;事件序列在边界、实体及控制类间的原则;控制类在交互图中的表现特征;交互图的正确性。 整理分析类: 分析类的责任和关联关系;动态与静态的关系;确定类的责任;设计类和子系统接口。 |
设计模式与软件设计思想 |
GOF设计模式 - 使用GOF设计模式,借鉴前人的经验。 - 分析创建型模式: - 单例模式(Singleton)、工厂模式、抽象工厂模式(Abstractfactory) - 分析结构型模式: - 桥梁模式(Bridge)、装饰模式(Decorator)、适配器模式(Adapter)、代理模式(Proxy)、组合模式(Composite) - 分析行为型模式: - 命令模式(Command )、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、访问者模式(Template Method) 设计模式深入讨论 - 设计模式的本质: - 隔离变化点;间接;透明;局部双向依赖;逻辑与功能;用接口抹平差异、延迟调用。 - 模式的推演: - 掌握模式的本质,而非形式。 - 设计模式的高级运用: - 高手的选择;神似而非形似;一切以工程实际为标准;可以牺牲掉的特征;简化的模式;防止滥用;自创的模式。 常用的软件架构风格及适用情况分析 - 系统软件 - 分层(Layer)、管道和过滤器(Pipes and Filters)、黑板(Blackboard) - 分布式软件 - 经纪人(Broker) 、客户/服务器(Client/Server)、点对点(Peer to Peer) - 交互软件 模型-视图-控制器(Model-View-Controller)、显示-抽象-控制(Presentation-Abstraction-COntrol) SOA的设计思想 - SOA的概念 - SOA的设计目标 异构性Heterogeneity;可伸缩性Scalability;适用性Availability;分布式Distribution; .机动性Flexibility;可见性 典型案例分析 媒体显示、数据采集系统、编辑器、文件解析器。 |
架构设计实践 |
静态设计 - 按层+高内聚低耦合的原则进行模块划分 高内聚原则;按功能分解;按业务进行分解;以数据转换为中心分解;实际运用中的折中。 - 划分层次 - 将模块划入对应的层;分层与分区;逻辑模块与实体组件的对应关系。 - 为模块进行职责分配 隔离关注面:低耦合原则;适当采用设计模式; 用设计模式优化核心结构:经典模式运用: 用桥接模式作为中心骨架。 用桥接模式作为中心骨架。 用工厂模式进行组装。 用命令模式处理事务。 模块结构的常见形式 容器模块 + 控制者 + 功能模块 + 临时构建的小类;单例模式;命令模式。 核心模块的接口设计。 外观模式;适配器模式;代理模式;中介者模式。 其它形式的的模块结构:变换型模块结构;事务型模块结构。 模块间的通信及耦合设计 - 组件式编程。 - 通讯机制: - 观察者模式;本地SDK;轮训。 - 解耦: - 针对接口编程;增加间接模块;依赖注入。 - 设计数据层 数据结构选用的设计;数据访问层的设计 动态设计 - 抽象与统一不同的因素 根据业务寻找关键因素;统一到复杂的情况。 - 常用的流程抽象手段: 依赖注入 / 控制反转;表格法;配置文件。 - 逻辑控制: 控制者模式;信息专家模式。 - 消息通知机制 MVC模式;观察者模式;责任链模式;中介者模式。 模块调整 - 调整模块等级。 适当封装;把属性提升为类;将类降为属性;将类提升为组件。 - 用设计模式优化设计 在主体的框架上进行调整:访问者模式;装饰模式。 - 编码时构建适当的动态临时类。 命令模式;事务处理类型。 - 效率的优化 效率与结构的折中:优化效率的3步骤。 |
软件架构设计案例分析 |
综合架构案例剖析 - 商店POS系统架构设计 - 薪酬系统架构设计 - 仓库管理系统架构设计 实战典型案例分析(以实际项目案例为背景) - 需求分析、领域建模:零售店销售系统 - 设计模式的综合运用:Dvc文件分析系统 - 架构分析:互联网商品数据分析系统 - 综合案例分析:图像处理系统 基于搜索的二次开发系统 |
软件生命周期与软件 架构介绍 软件架构介绍 IT行业的人才结构与软件架构师的定位 软件架构师应掌握的知识体系 软件架构设计的特点、层次、分类 软件架构的主要理论、方向和趋势 软件工厂,实现软件开发的产业化 软件生命周期进程模型介绍 RUP与XP Agile与CMMI MSF |
技术架构视图─面向对象程序设计原则与模式及方法论 衡量软件系统质量的标准 软件系统开始变坏的表现:硬化、脆弱、绑死、胶着。 软件系统关键的质量特性:正确性、健壮性、可扩展性、可复用性、兼容、可移植性、高效性、timeliness、economy and functionality 面向对象设计的基本原则 类的设计原则: 开闭原则、依赖倒置原则、Liskov替换原则、单一职责原则、接口分离原则、组合复用原则、所知最少原则 例:会议管理系统等、API函数的启示等 包内聚原则:发布与复用等价原则、共同封闭原则、共同复用原则 包耦合原则:无循环的依赖原则、稳定的依赖原则、稳定的抽象 用GRASP模式指导架构设计 GRASP架构模式: 信息专家、创建者、高内聚、低耦合、控制者、多态、间接、纯虚构、保护变化 典型案例分析: 违反信息专家模式案例分析 应用信息专家模式案例分析 应用GRASP模式精化架构设计案例分析 软件架构设计的关键因素 什么是架构, 它和系统是如何关联的。 如何获得可维护性、可扩展性、可重用性、互操作性等。 在系统中如何组织组件(Component) 。 如何组织组件(Component)的内部。 如何保持平台相关的细节和应用的分离。 如何应用封装(encapsulation)、抽象(abstraction)和委派(delegation)的原则。 如何应用设计模式来实现好的结构。 案例分析 模板容器、Movie查询等 |
用UML辅助系统分析与设计 UML中的常见疑难问题辨析 用例图 - 参与者建模中的常见问题 - 用例建模中的常见问题 - UaseCase的本质讨论 类设计 - UML中关系的辨析: 依赖关系、关联关系辨析;聚合,组合辨析 类设计中的常见问题: - 一些常见但易混淆的类关系图; - 熟悉类的自关联形式;使用关联类; - 一些易混淆的重数表示方法 - 建模为对象与建模为属性 / 建模为方法与建模为对象的辨析。 其它辨析 - 包与组件 - 扩展基类与覆盖基类等;自关联、关联多重性、关联角色名辨析 - 消除多重继承的常用手段 |
借鉴RUP的设计过程 借鉴RUP的设计过程 全局分析: 选用架构模式;识别关键抽象;标识分析机制;常见的分析机制 局部分析: 提取分析类: 分析类的类型划分:边界类、实体类、控制类,分析类在模型中的位置,边界类的复用,控制类的变通。 分析动态场景: 消息与责任;事件序列在边界、实体及控制类间的原则;控制类在交互图中的表现特征;交互图的正确性。 整理分析类: 分析类的责任和关联关系;动态与静态的关系;确定类的责任;设计类和子系统接口。 |
设计模式与软件设计思想 GOF设计模式 - 使用GOF设计模式,借鉴前人的经验。 - 分析创建型模式: - 单例模式(Singleton)、工厂模式、抽象工厂模式(Abstractfactory) - 分析结构型模式: - 桥梁模式(Bridge)、装饰模式(Decorator)、适配器模式(Adapter)、代理模式(Proxy)、组合模式(Composite) - 分析行为型模式: - 命令模式(Command )、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、模板方法模式(Template Method)、访问者模式(Template Method) 设计模式深入讨论 - 设计模式的本质: - 隔离变化点;间接;透明;局部双向依赖;逻辑与功能;用接口抹平差异、延迟调用。 - 模式的推演: - 掌握模式的本质,而非形式。 - 设计模式的高级运用: - 高手的选择;神似而非形似;一切以工程实际为标准;可以牺牲掉的特征;简化的模式;防止滥用;自创的模式。 常用的软件架构风格及适用情况分析 - 系统软件 - 分层(Layer)、管道和过滤器(Pipes and Filters)、黑板(Blackboard) - 分布式软件 - 经纪人(Broker) 、客户/服务器(Client/Server)、点对点(Peer to Peer) - 交互软件 模型-视图-控制器(Model-View-Controller)、显示-抽象-控制(Presentation-Abstraction-COntrol) SOA的设计思想 - SOA的概念 - SOA的设计目标 异构性Heterogeneity;可伸缩性Scalability;适用性Availability;分布式Distribution; .机动性Flexibility;可见性 典型案例分析 媒体显示、数据采集系统、编辑器、文件解析器。 |
架构设计实践 静态设计 - 按层+高内聚低耦合的原则进行模块划分 高内聚原则;按功能分解;按业务进行分解;以数据转换为中心分解;实际运用中的折中。 - 划分层次 - 将模块划入对应的层;分层与分区;逻辑模块与实体组件的对应关系。 - 为模块进行职责分配 隔离关注面:低耦合原则;适当采用设计模式; 用设计模式优化核心结构:经典模式运用: 用桥接模式作为中心骨架。 用桥接模式作为中心骨架。 用工厂模式进行组装。 用命令模式处理事务。 模块结构的常见形式 容器模块 + 控制者 + 功能模块 + 临时构建的小类;单例模式;命令模式。 核心模块的接口设计。 外观模式;适配器模式;代理模式;中介者模式。 其它形式的的模块结构:变换型模块结构;事务型模块结构。 模块间的通信及耦合设计 - 组件式编程。 - 通讯机制: - 观察者模式;本地SDK;轮训。 - 解耦: - 针对接口编程;增加间接模块;依赖注入。 - 设计数据层 数据结构选用的设计;数据访问层的设计 动态设计 - 抽象与统一不同的因素 根据业务寻找关键因素;统一到复杂的情况。 - 常用的流程抽象手段: 依赖注入 / 控制反转;表格法;配置文件。 - 逻辑控制: 控制者模式;信息专家模式。 - 消息通知机制 MVC模式;观察者模式;责任链模式;中介者模式。 模块调整 - 调整模块等级。 适当封装;把属性提升为类;将类降为属性;将类提升为组件。 - 用设计模式优化设计 在主体的框架上进行调整:访问者模式;装饰模式。 - 编码时构建适当的动态临时类。 命令模式;事务处理类型。 - 效率的优化 效率与结构的折中:优化效率的3步骤。 |
软件架构设计案例分析 综合架构案例剖析 - 商店POS系统架构设计 - 薪酬系统架构设计 - 仓库管理系统架构设计 实战典型案例分析(以实际项目案例为背景) - 需求分析、领域建模:零售店销售系统 - 设计模式的综合运用:Dvc文件分析系统 - 架构分析:互联网商品数据分析系统 - 综合案例分析:图像处理系统 基于搜索的二次开发系统 |