Introducing Architectural Concepts and Diagrams
介绍架构概念和架构图
//红字是论坛自动上的色
目标
完成这一模块(章),你可以:
1、区别架构和设计
2、描述阶层,层,系统品质
3、描述架构工作流
4、描述重要的架构视角的图
5、选择架构类型
6、创建架构工作流工件
证明为什么要架构师这个角色
为什么软件工程现在需要雇佣这个角色的人?因为两个关键的改变
1、规模
2、分步
大规模,分布式企业系统的(关联)风险
迷你分布式系统(如客户端-服务器模式):
高度分布的系统:
架构和设计之间的区别
设个表格显示了架构师是如何与设计者不同
架构原则
1、相关性分离
2、依赖翻转原则
3、把易变性与稳定组件隔离
4、使用组件和容器框架
5、保持组件界面简单和干净
6、保持远程组件界面粗粒度
依赖翻转原则
“Depend on abstractions. Do not depend on concretions.”
(Knoernschild page 12)
依赖抽象。不要依赖结核物。----Knoernschild12页
架构模式和设计模式
1、一个架构师计划系统,这个系统使用一个介于模式的合理步骤
2、一个架构师必须对多样的模式熟悉,以至于有高效性
3、模式种类:
3.1设计模式定义结构和行为,以至于构建高效的,可重用的面向对象软件组件,
去支持功能性需求
3.2架构模式定义为系统和子系统定义j结构和行为,去做支持非功能性需求
阶层,层和系统品质
SunTone架构方法论介绍架构的维度:
1、阶层用来分割逻辑相关(的方面)
2、层用来组织组件和容器的关系
3、系统品质定义贯穿阶层和层的策略和模式
应用SunTone架构方法论
阶层
tiers – “A logical or physical organization of components into an ordered chain of service providers
and consumers.”
(SunTone Architecture Methodology page 10)
阶层-“一个逻辑或物理组织的组件,这些组件是在服务和消费者之间的有序链条中”
(SunTone Architecture Methodology 10 页)
1、客户层-包含一个薄的客户端,例如一个浏览器
2、呈现层-提供HTML页面和表单,这些被送到网页并处理用户的请求
3、逻辑业务层-提供业务服务和实体
4、集成层-提供组件去把逻辑业务层和资源层
5、资源层-包括所有的后台资源,例如数据库管理系统(DBMS)或企业信息系统(EIS)
层
layers–“The hardware and software stack that hosts services within a given tier.
(layers represent component/container relationships)”
(SunTone Architecture Methodology page 11)
层-“在一个给出的阶层主持服务的硬件或软件栈”
-- (SunTone Architecture Methodology 11 页)
1、应用层-提供一个组件的实体实现,去满足功能性需求
2、虚拟平台层-通过应用组件实现的应用程序接口
3、高端平台层-包含产品,例如网页和EJB技术容器以及中间件
4、低端平台层-包含操作系统
5、硬件层-包括计算硬件,例如服务器,储存器和网络服务
系统品质
“The strategies, tools, and practices that will deliver the requisite quality of service
across the tiers and layers.” (SunToneArchitecture Methodology page 11)
“贯穿阶层和层的,传递服务的必要品质的策略,工具,惯例”
1、表现性-称为反应到底的品质-用户体验
2、可操作性-称为系统执行时的品质
3、可开发性-称为计划,花费和系统的物理实现时的品质
4、可进化性-称为系统长期拥有中的品质
//2016年11月20日23:32:00 尽快搞完。最近在做另外一件事,扫描大学书成电子文档。
浏览架构工作流
架构模型对解决模型的创建是必要的:
介绍架构工作流
1、为系统选择一个架构类型
2、为架构上的重要的用例创建详细的部署图
3、精炼架构模型以满足非功能性需求
4、创建和测试架构的基线
5、记录在包图中阶层和层的技术选择
6、根据最终的,详细的部署图创建架构模板
设计模型例子
架构模型例子
解决模型例子
架构视角
架构模型视角需要许多表单。一些元素(例如风险缓解计划)是用文字记录的。
其他可以用UML图:
1、包图
2、组件图
3、部署图
定义包图的元素
1、一个UML包图展现包之间的依赖,它可以包含任何UML元素
2、UML包图标记:
2.1、包的名字可以放入主盒子或者放入名字盒子
2.2、你可以把任何实体放入包,包括其他包
包图例子
一个抽象的包图
//2016年11月21日22:39:03 这一章讲的是架构,从更高的角度讲软件,涵盖了前几章的知识
定义组件图的元素
一个UML组件图由以下元素组成:
UML2需求的接口的画法:
一个组件的特质
1、一个组件可以代表任何软件单元
2、一个组件可以很广大和抽象
3、一个组件可以很小
4、一个组件可能有一个接口,这个接口可以作为服务导出给其他组件
5、一个组件可以是一个文件,例如一个源代码文件,一个对象文件,一个完整的可执行文件,
一个数据文件,HTML文件(超文本标记语言),媒体文件,等等
组件的类型
一个组件是任何物理的软件单元:
组件图例子
组件图可以显示软件依赖。这个例子显示RMI(远程方法请求)依赖:
组件图也可以显示软件依赖。这个例子显示Web Service依赖:
//WebService技术是将XML格式数据放在HTTP头中做请求。SOAP是WebService的一种实现形式。
组件图可以代表建造结构:
定义部署图的元素
一个部署图的目标
1、硬件节点可以代表任何物理硬件的类型
2、硬件之间的连接线表示连接,并且可以包含节点之间使用的通信协议
3、软件组件被放在硬件节点之中,去展示软件在网络之间的分布
部署图的类型
有两种形式:
1、一个描述符部署图展示基础的硬件配置
2、一个实例部署图展示一个详细的硬件配置。例如:
选择架构类型
你使用的架构依赖多种元素,包括:
1、系统需求中的平台限制
2、用户交互模式
3、持久化机制
4、数据和事务的继承
有上百种成功软件的架构。有许多共同的类型:
1、脱机应用
2、客户端/服务器(2阶层)应用
3、N阶层应用
4、以网页为中心的N层应用
5、企业N阶层应用
脱机应用
1、没有额外的数据资源(所有应用数据存在于文件服务器)
2、没有网络通信(所有应用的组件存在于一个机器)
客户端/服务器(2阶层)应用
1、厚客户端(在客户端层中带有业务逻辑)
2、数据存储管理数据完整性
N层应用
1、薄客户端(业务逻辑是存在于应用服务器)
2、应用服务器管理数据完整性
以网页为中心的N层应用
1、网页服务器变成薄客户端
2、网页服务提供呈现和业务逻辑
企业N阶层应用
1、两个客户端:
1.1、为英特网用户的网页浏览器
1.2、为内网用户的GUI(图片化用户界面)薄客户端
2、网页应用服务器提供呈现逻辑
3、应用服务器提供业务逻辑
旅馆预订系统架构
创建详细的部署图
1、为架构上重要的用例设计组件
2、将设计的组件放入架构模型
3、从设计和基础组件的出现,画出详细的部署图
//2016年11月26日23:56:57 不晚了
创建架构模板
1、将详细的部署图分成一组设计组件:边界、服务、实体
2、使用设计组件的类型替换名称(例如,ResvSvcImpl_Stub成为Service Impl_Stub)
创建阶层和层的包图
每一阶层:
1、决定哪个应用组件存在
2、决定组件需要的技术API,通信协议,必要的说明
3、决定使用哪一个容器产品
4、决定使用哪一个操作系统
5、决定使用哪个硬件
旅馆App的阶层和层的图
旅馆系统网页呈现的阶层和层的图
总结
1、架构和设计之间的区别
1.1、设计产生组件,去实现一个用例
1.2、架构提供模板到被实现的设计组件中
你可以通过以下对架构建模:
1、部署图
2、组件图
3、包(图)
4、阶层和层
//2016年11月27日20:56:57 最近又忙起来了,速度有些慢,这章内容真多
//联系我,邮箱:bourne_w@sina.com
交个朋友吧