课程费用

5800.00 /人

课程时长

2

成为教练

课程简介

软件架构的概念:构件及协作关系;典型的软件架构介绍:分层架构及其派生类型;面向服务的架构设计:SOA;面向云的架构设计;用UML图表达软件架构;设计项跟踪及其架构重构;用代码表达架构;数据访问设计;业务逻辑设计;界面逻辑设计;.NET和C++互操作设计...等内容。

目标收益

培训对象

课程大纲

软件架构的概念:构件及协作关系  - 架构关注点,定义构件边界+构件之间通信 
- 构件的描述:4+1视图 
- 非功能性需求:可用性、可靠性、鲁棒性、可维护性,可扩展性,可测性,性能,可复用性、模块化、易部署性等 
- 架构设计方法:场景驱动的迭代架构设计 
- 架构师角色:输入需求,输出架构 
- 讨论:如何才能成为一名合格的架构师? 
- 案例导入:必应词典的架构介绍
典型的软件架构介绍:分层架构及其派生类型 - 一般分层模型:数据,业务+界面
- 典型的分层模型:B/S架构,C/S架构和富客户端应用
- 实例:JSP/JSF应用,ASP.NET应用,AJAX应用,REST风格应用
- 练习:开发一个简单的B/S应用
- 案例讨论:必应词典的分层架构
面向服务的架构设计:SOA  - 架构的核心元素:容器,组件,接口和通信 
- 理解容器:基础服务,承载组件,容器间通信 
- 典型的容器:.NET WCF容器,J2EE应用服务器如GlassFish ,COM容器 
- 理解组件:使用容器,实现接口,组件间通信 
- 非侵入式设计:使用批注扩展组件/容器 
- 典型的组件:WEB服务,.NET WCF服务 ,EJB Bean(消息,会话)等,COM组件,CORBA组件等 
- 理解接口:约定功能,服务接口,远程/本地接口 
- 练习:编写一个简单的基于SOA的C/S应用 
- 案例讨论:必应词典中的服务
面向云的架构设计 - 云架构:云为容器,提供运算,存储和通信等基础服务
- 公有云应用:数据,逻辑,界面都由公共云承载
- 混合云应用:部分数据/逻辑本地服务器+公有云;
- 云应用的消息总线模型:将公有云模拟为本地资源统一通信
- 练习:设计,实现并部署一个基于SOA的B/S架构的云应用
- 案例讨论:从WEB词典到云词典
用UML图表达软件架构  - UML图概述:7种UML图及绘制工具(例如VS2010的架构师工具/ROSE绘图工具/VISIO绘图工具) 
- 用例视图:表达需求,定义系统边界 
- 逻辑视图:类及其关系,类的组织 
- 进程视图:表达运行时对象间的协作关系,活动图,序列图 
- 部署视图:描述物理组件如何分发配置到服务器 
- 开发视图:描述在开发环境中软件的静态组织结构 
- 练习:用UML图描述一个SOA小应用架构
性能设计 - 主要性能指标:平均响应时间、吞吐量或并发数、持续高速性
- 影响性能的主要因素:算法,实现,数据库设计,通信
- 性能瓶颈探测:性能探测工具及探测报告
- 练习:用性能探测工具探测性能,压力测试及内存消耗
- 讨论:必应词典的性能瓶颈及其对策
设计项跟踪及其架构重构  - 迭代设计(小步快跑模式):架构的重构 
- 设计项版本管理 
- 设计项状态跟踪:设计项映射到代码和测试用例 
- 相关工具:微软团队项目服务器(Team Foundation Server)/其他工具 
- 练习:利用源码管理工具跟踪架构设计相关项 
- 讨论:必应词典的架构设计过程
用代码表达架构 - 设计元素:类,接口,模板,包
- 利用面向对象编程语言:c#,Java,c++
- 依赖抽象的设计原则:针对抽象编程,封装变化
- 使用设计模式:创建型模式、结构型模式和行为型模式
- 练习:用抽象类和接口定义一个搜索系统的架构
数据访问设计: - 数据存储设计:文件,数据库,内存,…
- 数据实体定义:主键,外键,二进制数据,约束
- 数据访问层设计:数据表内存表间映射
- 使用数据访问框架:LINQ 2 SQL/数据实体框架,JAVA 可持久化框架(JPA),ADO.NET 数据实体框架
- 练习:使用数据访问框架操作数据库
业务逻辑设计:  - 业务逻辑设计工具:工作流 
- 将业务逻辑包装为服务 
- 确定业务逻辑设计正确性:单元测试 
- 练习:用工作流实现一段业务逻辑,并验证实现的正确性
并行应用设计: - 识别并行任务:Map-Reduce模型
- 并行模式:生产-消费模式,并行,互斥和同步
- 并行实现:多线程,线程池,并行库
- 练习: 用工作流设计并行逻辑
界面逻辑设计  - MVC模式:模型控制视图模式设计界面 
- 界面逻辑:输入验证,修改模型,执行逻辑,更新界面 
- 实例分析:MFC的界面逻辑,JSF的界面逻辑,AJAX应用的界面逻辑,ASP.NE的界面 逻辑 
- 练习:重构一段界面代码,使其满足MVC模式
基于测试和基于合约的设计:测试驱动设计和合约驱动的设计 - 测试驱动开发模型:红绿红模型
- 测试驱动设计:以通过测试用例为驱动力迭代增量完成架构
- 合约的概念:对实现方和调用方间各自的约束
- 基于合约的设计:前置条件,后置条件和不变式
- 练习:基于合约设计一个有理数类
设计可扩展的框架  - 设计扩展点:虚方法,委托(实践),依赖项(参数依赖,成员依赖,类型依赖)
- 可扩展框架:使用基于声明和配置的动态注入依赖 
- 实例分析:.NET的动态扩展框架,Java Spring框架 
- 讨论:必应词典的可扩展性
安全性设计 - 对威胁建模
- 网络安全,服务器安全和软件系统安全
- 常见安全漏洞及防范:拒绝服务,SQL依赖注入,跨站点脚本调用,缓冲区溢出,数据泄密
- 讨论:必应词典针对安全性的设计
.NET和C++互操作设计  - 可选的技术评价:DLL包装,COM和托管C++ 
- 互操作时的系统边界设计
物理部署设计 - 部署单元:组件,数据库组件,数据处理组件,通信组件,中间件
- 部署配置设计:定义配置项
- 验证物理部署设计:使用虚拟机或TFS 实验室
软件架构的概念:构件及协作关系 
- 架构关注点,定义构件边界+构件之间通信 
- 构件的描述:4+1视图 
- 非功能性需求:可用性、可靠性、鲁棒性、可维护性,可扩展性,可测性,性能,可复用性、模块化、易部署性等 
- 架构设计方法:场景驱动的迭代架构设计 
- 架构师角色:输入需求,输出架构 
- 讨论:如何才能成为一名合格的架构师? 
- 案例导入:必应词典的架构介绍
典型的软件架构介绍:分层架构及其派生类型
- 一般分层模型:数据,业务+界面
- 典型的分层模型:B/S架构,C/S架构和富客户端应用
- 实例:JSP/JSF应用,ASP.NET应用,AJAX应用,REST风格应用
- 练习:开发一个简单的B/S应用
- 案例讨论:必应词典的分层架构
面向服务的架构设计:SOA 
- 架构的核心元素:容器,组件,接口和通信 
- 理解容器:基础服务,承载组件,容器间通信 
- 典型的容器:.NET WCF容器,J2EE应用服务器如GlassFish ,COM容器 
- 理解组件:使用容器,实现接口,组件间通信 
- 非侵入式设计:使用批注扩展组件/容器 
- 典型的组件:WEB服务,.NET WCF服务 ,EJB Bean(消息,会话)等,COM组件,CORBA组件等 
- 理解接口:约定功能,服务接口,远程/本地接口 
- 练习:编写一个简单的基于SOA的C/S应用 
- 案例讨论:必应词典中的服务
面向云的架构设计
- 云架构:云为容器,提供运算,存储和通信等基础服务
- 公有云应用:数据,逻辑,界面都由公共云承载
- 混合云应用:部分数据/逻辑本地服务器+公有云;
- 云应用的消息总线模型:将公有云模拟为本地资源统一通信
- 练习:设计,实现并部署一个基于SOA的B/S架构的云应用
- 案例讨论:从WEB词典到云词典
用UML图表达软件架构 
- UML图概述:7种UML图及绘制工具(例如VS2010的架构师工具/ROSE绘图工具/VISIO绘图工具) 
- 用例视图:表达需求,定义系统边界 
- 逻辑视图:类及其关系,类的组织 
- 进程视图:表达运行时对象间的协作关系,活动图,序列图 
- 部署视图:描述物理组件如何分发配置到服务器 
- 开发视图:描述在开发环境中软件的静态组织结构 
- 练习:用UML图描述一个SOA小应用架构
性能设计
- 主要性能指标:平均响应时间、吞吐量或并发数、持续高速性
- 影响性能的主要因素:算法,实现,数据库设计,通信
- 性能瓶颈探测:性能探测工具及探测报告
- 练习:用性能探测工具探测性能,压力测试及内存消耗
- 讨论:必应词典的性能瓶颈及其对策
设计项跟踪及其架构重构 
- 迭代设计(小步快跑模式):架构的重构 
- 设计项版本管理 
- 设计项状态跟踪:设计项映射到代码和测试用例 
- 相关工具:微软团队项目服务器(Team Foundation Server)/其他工具 
- 练习:利用源码管理工具跟踪架构设计相关项 
- 讨论:必应词典的架构设计过程
用代码表达架构
- 设计元素:类,接口,模板,包
- 利用面向对象编程语言:c#,Java,c++
- 依赖抽象的设计原则:针对抽象编程,封装变化
- 使用设计模式:创建型模式、结构型模式和行为型模式
- 练习:用抽象类和接口定义一个搜索系统的架构
数据访问设计:
- 数据存储设计:文件,数据库,内存,…
- 数据实体定义:主键,外键,二进制数据,约束
- 数据访问层设计:数据表内存表间映射
- 使用数据访问框架:LINQ 2 SQL/数据实体框架,JAVA 可持久化框架(JPA),ADO.NET 数据实体框架
- 练习:使用数据访问框架操作数据库
业务逻辑设计: 
- 业务逻辑设计工具:工作流 
- 将业务逻辑包装为服务 
- 确定业务逻辑设计正确性:单元测试 
- 练习:用工作流实现一段业务逻辑,并验证实现的正确性
并行应用设计:
- 识别并行任务:Map-Reduce模型
- 并行模式:生产-消费模式,并行,互斥和同步
- 并行实现:多线程,线程池,并行库
- 练习: 用工作流设计并行逻辑
界面逻辑设计 
- MVC模式:模型控制视图模式设计界面 
- 界面逻辑:输入验证,修改模型,执行逻辑,更新界面 
- 实例分析:MFC的界面逻辑,JSF的界面逻辑,AJAX应用的界面逻辑,ASP.NE的界面 逻辑 
- 练习:重构一段界面代码,使其满足MVC模式
基于测试和基于合约的设计:测试驱动设计和合约驱动的设计
- 测试驱动开发模型:红绿红模型
- 测试驱动设计:以通过测试用例为驱动力迭代增量完成架构
- 合约的概念:对实现方和调用方间各自的约束
- 基于合约的设计:前置条件,后置条件和不变式
- 练习:基于合约设计一个有理数类
设计可扩展的框架 
- 设计扩展点:虚方法,委托(实践),依赖项(参数依赖,成员依赖,类型依赖)
- 可扩展框架:使用基于声明和配置的动态注入依赖 
- 实例分析:.NET的动态扩展框架,Java Spring框架 
- 讨论:必应词典的可扩展性
安全性设计
- 对威胁建模
- 网络安全,服务器安全和软件系统安全
- 常见安全漏洞及防范:拒绝服务,SQL依赖注入,跨站点脚本调用,缓冲区溢出,数据泄密
- 讨论:必应词典针对安全性的设计
.NET和C++互操作设计 
- 可选的技术评价:DLL包装,COM和托管C++ 
- 互操作时的系统边界设计
物理部署设计
- 部署单元:组件,数据库组件,数据处理组件,通信组件,中间件
- 部署配置设计:定义配置项
- 验证物理部署设计:使用虚拟机或TFS 实验室
提交需求