写点什么

Felix Bachmann 谈软件架构评估

  • 2009-05-30
  • 本文字数:937 字

    阅读完需:约 3 分钟

软件架构评估是企业架构(EA)中重要的一部分。软件工程研究所( SEI )的 Felix Bachmann 译者注:Felix 是 Jolt 大奖图书《软件架构编档》的作者)最近谈到了如何有效地评估软件架构、识别企业应用中的风险。在 SEI 架构(SATURN)会议上,Felix 主持了一个有关架构评估原则的讨论会。他还论述了SEI 的架构权衡分析法( ATAM )框架是如何利用这些原则来助力架构评估工作的。

Felix 提到,架构评估原则可分为三组:“度量”、“架构理解”和“窍门”。软件架构评估中的度量部分包括从利益相关方那里提取组织需求,并用精确和可度量的方式将其转化为质量属性。他谈论了该类别中的四条原则:

  • 质量属性决定架构。
  • 业务目标决定质量属性需求。
  • 业务目标意味着对利益相关方社区来说,什么是重要的。
  • 质量属性需求需要用好的度量方法指定。

了解架构师使用的方法、功能分布及薄弱环节也很重要。架构理解中有三个原则:

  • 要想理解架构,你必须要了解其质量属性。
  • 最重要的质量属性需求决定了系统中需要重点分析的部分。
  • 架构中的功能分布造就了质量属性。

软件架构评估的“窍门”部分包括:

  • “有罪推定”,也就是指,不要盲目相信提供过来的任何东西,要寻找令人信服的证据。提供不出证据会导致风险。
  • 正确的分析不允许假设。只有事实才是有价值的。
  • 被评估的组织必须承认评估结果。

使用坚持所有原则的架构评估方法基本上可以保证成功。Felix 表示,不利用任何原则的架构评估方法极有可能会导致一场灾难。他认为应该根据上下文应用这些原则,因为遵守某些原则要比遵守其它的更为重要。方法越能很好地利用原则,成功的几率就越大。

ATAM 架构利用了架构评估里的这些原则。ATAM 的主要部分包括分为四组的九个步骤,这四组是:

  • 描述,其中包括通过描述交流信息。
  • 调查和分析,涉及评估相对于架构方法的关键质量属性需求。
  • 测试,包括检查迄今为止相对于所有利益相关方需求的结果。
  • 报告,包括表述 ATAM 的结果。

下面是 ATAM 评估过程的步骤

  • 描述 ATAM。
  • 描述业务驱动者。
  • 描述架构。
  • 识别架构方法。
  • 生成质量属性效用树。
  • 分析架构方法。
  • 头脑风暴、给场景划分优先级。
  • 分析架构方法。
  • 描述结果。

Felix 在讨论的最后总结道,软件架构师应该仔细查看架构评估的结果,以不断提高评估过程。

查看英文原文: Felix Bachmann on Evaluating Software Architecture

2009-05-30 19:122059
用户头像

发布了 151 篇内容, 共 64.7 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

CSS高级技巧

默默的成长

CSS 前端 11月月更

Java注解与原理分析

Java 架构

自制操作系统日记(5):跳转到C语言执行

操作系统

开发和学习时需要造一些kafka消息,于是写了段脚本实现,在这里记录备忘,后面会常用到

程序员欣宸

kafka 11月日更

我的react面试题笔记整理(附答案)

beifeng1996

React

我的react面试题整理2(附答案)

beifeng1996

React

React源码分析(二)渲染机制

goClient1992

React

面试官:vue2和vue3的区别有哪些?

bb_xiaxia1998

Vue

前端vue面试题

bb_xiaxia1998

Vue

湖仓一体电商项目(九):业务实现之编写写入DIM层业务代码

Lansonli

湖仓一体电商项目 11月月更

React源码分析1-jsx转换及React.createElement

goClient1992

React

React源码分析(三):useState,useReducer

goClient1992

React

一份vue面试知识点梳理清单

bb_xiaxia1998

Vue

ReactDOM.render在react源码中执行之后发生了什么?

flyzz177

React

细说react源码中的合成事件

flyzz177

React

ISO 8601持续时间格式

HoneyMoose

前端面试如何回答,这些题目或许可以给你一些提示

loveX001

JavaScript

这些js原型及原型链面试题你能做对几道

loveX001

JavaScript

数据预处理和特征工程-特征选择-Wrapper包装法

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

Vue.$nextTick的原理是什么-vue面试进阶

bb_xiaxia1998

Vue

腾讯前端高频手写面试题

helloworld1024fd

JavaScript

面试官:说说Event Loop事件循环、微任务、宏任务

loveX001

JavaScript

CSS 定位

默默的成长

CSS 前端 11月月更

面试官让你说说react状态管理?

beifeng1996

React

湖仓一体电商项目(十):业务实现之编写写入DWD层业务代码

Lansonli

湖仓一体 11月月更

能否手写vue3响应式原理-面试进阶

helloworld1024fd

JavaScript

IO原理(一):从BIO到NIO

苏格拉格拉

Linux io nio 多路复用

一年前端面试打怪升级之路

loveX001

JavaScript

面试官:React怎么做性能优化

beifeng1996

React

React Context源码是怎么实现的呢

flyzz177

React

湖仓一体电商项目(十一):编写写入DWS层业务代码

Lansonli

湖仓一体电商项目 11月月更

Felix Bachmann谈软件架构评估_架构_Srini Penchikala_InfoQ精选文章