软考--软件架构设计

构建与中间件技术

关键字分类法:一种最简单的构件库组织方法,其基本思想是:根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序主次分解为树状或有向无回路图结构。每个概念用一个描述性的关键字表示。不可分解的原子级关键字包含隶属于他的某些构件
刻面分类法:定义若干用于刻画构件特征的”面“(facet),每个面包含若干概念,这些概念表述构件在面上的特征。刻画可以描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。
超文本组织方法:基于全文检索技术。所有构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联系思维方式任意跳转到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文档中的文字进行匹配,实现构件的浏览式检索。

构件与对象特性的对比

一个构建可以包含多个类元素,但是一个类元素只能属于一个构件

构件的特性对象的特性
独立部署单元一个实例单元,具有唯一的标志
作为第三方的组装单元封装了自己的状态和行为
没有可见状态可能具有状态,此状态外部可见

面向构件编程

面向构件编程关注于如何支持建立面向构件的解决方案。面向构件的编程所需要的基本支持是:多态性、模块封装性、后期绑定和装载、安全性

CORBA

POA是对象实现ORB其他组件之间的中介,将客户请求传送到伺服对象,按需创建子POA,提供管理伺服对象的策略。作用是:在底层传输平台与接受调用并返回结果的对象之间进行协调

构件与原子构件

构件是一组需要同时部署的原子构件。构件和原子构件的区别在于:大多数原子构件不会被单独部署;大多数原子构件都属于一个构件家族,一次部署往往涉及整个家族

一个原子构件是一个模块和一组资源。
原子构件是部署、版本控制和替换的基本单位。

ADL(架构描述语言)

ADL的基本构成要素包括:组件、组件接口、连接件、架构配置。

软件组装

构建组装是指将构件库 中的构件经过适当修改后相互连接,或者将它们与当前开发项目中的构件元素相连接,形成新的目标软件。
分为:基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。

特定领域架构

DSSA(特定领域软件体系结构)的基本活动包括:领域分析、领域设计、领域实现

  • 领域分析阶段的主要目标是获得领域模型。领域模型所描述的需求为领域需求。在这个阶段要做一些准备性工作,例如:定义领域边界
  • 领域设计的目标是获得DSSA。DSSA描述在领域模型中表示的需求的解决方案,是能够适应领域中多个系统的需求的一个高层次的设计
  • 领域实现的目标是依据领域模型和DSSA开发和组织可重用信息

参与DSSA的基本人员可划分为4种:领域专家、领域设计人员、领域实现人员、领域分析师

软件质量属性

可修改性包括四个方面:可维护性、可扩展性、结构重组、可移植性
性能代表参数:响应时间、吞吐量。设计策略:优先级队列、资源调度
可用性代表参数:故障间隔时间。设计策略:

软件质量属性代表参数设计策略
性能吞吐量,响应时间优先级队列,资源调度
可用性故障间隔时间冗余,心跳线
安全性追踪审计
可修改性信息隐藏
可靠性MTTF,MTBF冗余,心跳线

架构风格

  • 数据流风格:批处理序列、管道-过滤器{主要关键字:输入某个构建,内部处理,产生数据输出系统}
  • 调用返回风格:主程序/子程序、面向对象、层次结构、C2
  • 独立结构风格:进程通信、事件驱动系统(隐式调用){关键字:不直接调用一个过程,而是触发或广播一个或多个事件中注册}
  • 虚拟机风格:解释器、基于规则的系统{主要关键字:根据不同活动,不定期更新系统,能随时改变,灵活定义}
  • 仓库风格:数据库系统、超文本系统、黑板系统{主要关键字:语音识别、知识推理等复杂问题,解空间大、求解过程不确定}

数据流风格

管道/过滤器风格

每个构件都有一组输入和输出。典型例子是UNIX shell编写的程序

优点:

  • 高内聚低耦合,良好的隐蔽性
  • 将整个I/O行为看成多个过滤器行为的简单合成
  • 支持软件重用
  • 系统维护简单
  • 允许对一些属性,如吞吐量、死锁等进行分析
  • 支持并执行

缺点:

  • 通常导致进程成为批处理的结构
  • 不适合处理交互的作用
  • 在数据传输上没有通用标准,导致了系统性能下降,增加了编写过滤器的复杂性

调用返回风格

有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护–已被证明是成功的设计方法,可以被用于较大程序

  • UDDI:用于web服务注册和服务查找
  • WSDL:用于描述web服务的接口和操作功能
  • SOAP:建立web服务和服务请求之间的通信支持
  • BPEL:将多个web服务组合到一个新的复合服务中

主程序-子程序架构风格

主程序-子程序架构风格中,所有计算构件作为子程序协作工作,并由一个主程序顺序地调用这些子程序,构件通过共享存储区交换数据。

面向对象风格

面向对象的风格建立在数据抽象和面向对象的基础上,数据的表示方法和他们相应的操作封装在一个抽象数据类型或对象中。

优点:

  • 因为对象对其他对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其他的对象
  • 设计者可以将数据存储问题分解为一些交互的代理程序的集合

缺点:

  • 必须修改所有显式调用它的其他对象,并消除由此带来的一些副作用
  • 必须知道对象的标识,只要一个和对象的标识改变了,就必须修改其他所有调用它的对象

层次结构风格

层次结构风格允许将复杂问题分解成一个增量步骤序列的实现。典型例子是分层通信协议

优点

  • 支持基于抽象程序递增的系统设计
  • 支持功能增强
  • 支持重用

缺点

  • 很难找到一个合适的正确的层次抽象方法
  • 并不是每一个系统都可以很容易的进行分层划分

C2风格

通过连接件绑定在一起的按照一组规则运作的并行构建网络。

独立构件风格

基于事件的隐式调用

基于构件的隐式调用不直接调用构件,而是触发或广播一个事件。典型例子是windows系统

优点

  • 为软件重用提供了强大的支持
  • 为改进系统带来了方便

缺点

  • 构建放弃了对系统计算的控制
  • 数据交换问题
  • 过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题

仓库风格

仓库风格有两种构件:

  1. 中央数据结构说明当前状态
  2. 独立构建在中央数据存储上执行

输入流中某类事件触发进程执行的选择,则仓库是一传统型数据库;典型的数据仓库有:编译器。若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。典型的黑板系统包括:问题规划、语音识别、编译器优化
黑板系统由三部分组成:

  1. 知识源
  2. 黑板数据结构
  3. 控制

过程控制风格(闭环风格)

特点:设定参数,并不断测量现有的实际数据,将实际值与设定值进行比较,以确定接下来的操作。(刹车,定速巡航,空调)

基于架构的软件开发方法

视角和视图描述软件架构。
采用用例和质量场景来描述需求。用例描述的是功能需求,质量属性描述的是质量需求。

基于构件的软件开发方法

ABSDM(基于体系结构的软件开发模型):把整个软件过程划分为:体系结构需求、体系结构设计、体系结构文档化、体系结构复审、体系结构实现、体系结构演化。

架构权衡分析方法(ATAM)

ATAM被分为4个主要的活动领域,分别为场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中。体系结构权衡分析方法中(ATAM)是在SAAM的基础上发展起来的,主要针对性能、可用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
(1)特定目标:ATAM的目标是在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件体系结构的能力的方法。对于特定的软件体系结构,在系统开发之前,可以使用ATAM方法确定在多个质量属性之间折中的必要性。
(2)质量属性:ATAM方法分析多个相互竞争的质量属性。开始时考虑的是系统的可修改性、安全性、性能和可用性。
(3)风险承担者:在场景、需求收集有关的活动中,ATAM方法需要所有系统相关人员的参与。
(4)体系结构描述:体系结构空间受到历史遗留系统、互操作性和以前失败的项目约束。在五个基本结构的基础上进行体系结构描述,这五个结构是从Kruchten的4+1视图派生而来的。其中逻辑视图被分为功能结构和代码结构。这些结构加上它们之间适当的映射可以完整地描述一个体系结构。
用一组消息顺序图显示运行时的交互和场景,对体系结构描述加以注解。ATAM方法被用于体系结构设计中,或被另一组分析人员用于检查最终版本的体系结构。
(5)评估技术:可以把ATAM方法视为一个框架,该框架依赖于质量属性,可以使用不同的分析技术。它集成了多个优秀的单一理论模型,其中每一个都能够高效、实用地处理属性。该方法使用了场景技术。从不同的体系结构角度,有三种不同类型的场景,分别是用例(包括对系统典型的使用 还用于引出信息)、增长场景(用于涵盖与它的系统修改)、探测场景(用于涵盖那些可能会对系统造成压迫的极端修改)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值