http://blog.csdn.net/byxdaz/article/details/4848270 本书的目标是向软件架构师提供实用的指南和技术,以更快地得到好的系统结构设计。我们的哲学是不应该致力于设计理想化的系统结构,而是应该仔细地评估和权衡所有技术、市场、人员、成本方面的问题,从而获取一个好的解决方案。
一、软件体系结构术语 系统结构风格或者系统结构模式 参考系统结构或者领域特定的软件系统结构(应用在一个特定领域) 产品线系统结构(应用在一个组织的一组产品) 软件系统结构(应用在软件系统或者产品) 二、4种视图 1、一个软件体系结构有4种截然不同的视图:概念视图、模块视图、执行视图、代码视图。
使用这个4种视图提供了一种设计软件系统结构的系统化方法,帮助架构师设置优先级,分析权衡,并保证没有缺漏。
2、不同视图强调的不同工程关注点: 在概念视图中,问题和解决方案主要通过领域术语来考虑的。对于特定的软件及硬件技术,它们应当是相对独立的。概念视图的工厂关注点包括: 系统如何满足需求?
商用构件怎样组装成整体,怎样在功能层上与系统的其他部分交互? 领域特定的硬件和软件如何融入系统? 功能是如何被分割并进入产品个版本的? 系统如何与之前版本的产品合并?它如何支持未来的版本? 如何支持产品线? 如何将由需求或领域中所做的变动引起的影响最小化? 在模块视图中,概念视图中的构件和连接子被映射为子系统和模块。在这里,架构师强调的是如何用现有的软件平台以及技术实现概念的解决方案。主要的工程关注点有如下几点: 产品是如何映射到软件平台的? 使用了什么样的系统支持或系统服务?具体是在什么地方? 怎么支持测试? 如何降低模块间的依赖性? 如何将模块与子系统的复用最大化? 当商用软件、软件平台或标准发生变动时,采用何种技术在封装产品时可以将它们与产品进行隔离? 执行视图描述模块如何映射到运行时平台说提供的元素,以及这些又如何映射到硬件体系结构。执行视图定义系统的执行时实体及其属性,比如内存使用和硬件分配。对于执行视图,其工程关注点如下: 系统如何满足性能、恢复及重新配置方面的需求? 如何平衡资源的使用(例如:负载平衡)? 如何达到必需的并发、复制及分布,而不过度增加控制算法的复杂度? 如何使运行时平台的改变所引起的影响到达最小? 在代码体系结构视图中,架构师决定执行视图中的执行时实体如何映射到部署构件(例如:可执行构件),决定模块视图中的模块如何映射到源构件,以及部署构件如何从源构件生成。代码视图中重要的工程关注点如下: 如何降低产品升级的时间和费用? 如何管理产品版本及发布? 如何降低构造时间? 需要什么工具支持开发环境? 如何支持集成与测试?
三、全局分析 全局分析是在定义概念、模块、执行和代码系统结构视图之前进行的,并贯穿整个系统结构的设计过程。 全局分析从识别影响体系结构设计的因素来分成3类:组织因素、技术因素、产品因素。 组织因素分成5类:管理;员工技能、兴趣、能力、缺点;过程与开发运行环境;开发进度;开发预算。 技术因素包括:通用和专用的硬件;操作系统、用户界面、设计模式等软件技术;模版和框架等体系结构技术;图像、数据库、数据格式、算法和技术之类的标准。 产品因素是描述了产品的功能需求、用户可见的特征和产品的性能等质量方面的需求。比如:功能特征;用户界面;性能;依赖性;错误监测、报告、修复;服务和价格等。 全局分析是在每一种体系结构设计视图中都要进行的一种行为。在全局分析过程中建立的问题卡片要用在每一个视图设计的核心设计任务中。在进行核心设计任务时,做出的决策应当可以返回到全局分析,以增加和修改因素、问题和策略。 总结策略:
四、概念体系结构视图
清楚了概念体系结构的结构视图之后,可以推论或预测重要的系统属性。概念视图可以用于: 实用环境及场景。 性能评估。 安全性及可靠性分析。 独立于监测的目标。 理解静态及动态系统配置。 工作量评估(初步;不包括基础设施)。
五、模块体系结构视图
明确了一个模块视图,就开始了对重要系统属性的关注。对模块视图的描述,有以下用途: 管理模块接口。 变化影响分析。 接口约束的一致性检查。 管理配置。 评估成果。
子系统包含0和多个子系统、0和多个模块;模块之间的关系是通过接口来实现的。模块也存在包含关系、使用关系。
六、执行体系结构视图
多个运行时实体;运行时实体依赖于模块;资源平台依赖于硬件资源。 通信机制包括DCOM(分布式构件对象模型)、IPC(进程通信)、RPC(远程过程调用)等。 资源包括地址空间、内存池、定时器、代理、端口等。 执行视图通常由下面人员使用: 架构师,设计系统运行时间的特性,以使得设计符合需求,并能够适应期望的改变。 开发人员,提供正确的实现。 测试人员,他们需要知道系统的运行时间的特性并计划进行测试。 维护人员,决定运行时间平台的改变如何影响系统,或者需求的改变如何影响系统的运行时间特性。
七、代码体系结构视图
代码体系结构视图的应用: 一旦代码体系结构视图被明确地描述出来,它就可以有许多不同的用途: 对于模块视图和执行视图中的元素的可追踪性。 对于特定开发任务所需要的所有构件的透明访问。 构造部分系统。 管理构件的版本和发布。 保持体系结构的设计决策,及时发现违反决策的情况。 代码体系设计活动: 代码组由源代码构件、二进制构件、库、执行(运行时实体)、配置描述等组成。 源代码构件依赖于模块和接口。 代码组依赖于子系统和分层。
八、软件体系架构模式 软件设计的一个核心问题是能否使用重复的体系架构,即能否达到体系架构级的软件重用。也就是说,能否在不同的软件系统中,使用同一体系架构。基于这个目的,许多学者们开始研究和实践软件体系架构的模式问题。在<Pattern-Oriented Software Architecture (面向模式的软件体系架构) >中首次提出了8种体系结构模式: 层(Layers)、管道和过滤器(Pipes and Filters) 、黑板(Black board )、代理者(Broker)、模型-视图-控制器(Model-View-Controller)、表示-抽象-控制(Presentation-Abstraction-Control)、微核(Microkernel)、映像(Reflection)。
|
|