写点什么

《软件系统架构:使用视点和视角与利益相关者协作》访谈

  • 2012-08-16
  • 本文字数:2837 字

    阅读完需:约 9 分钟

《软件系统架构》的第二版出版于2011 年11 月,其中做了一些重要更新,包括对敏捷项目的架构、一种新的系统环境视点模型和一种新的轻量级验证方法(TARA——小型架构评审方法)的论述以及对UML2 建模方法的更新。这本书的核心焦点是架构文档,特别是第一版引入的关于视点模型和视角模型的目录。

《软件系统架构》对软件架构领域进行了广泛的论述,它是软件架构师在架构的整个生命周期中需要理解并实施的一本手册,架构的生命周期开始于为了实现需求管理而与利益相关者进行交流,并经过持续的改进。这本书的重点之一是,根据项目的规模、风险以及开发方法对这样的架构过程进行裁剪,并给出了一组建议。这本书包罗万象,但是本次访谈主要探讨最新版本所论述的一些新主题。 InfoQ:为什么在已经有了如“4+1”和RM-ODP 等框架的情况下,还需要一个关于视点(Vierpoint)模型和视角(Perspective)模型的新目录?

最初我们没有打算创建一套视点模型,甚至写一本书。这本书的产生是因为在2000 年我们开始研究的时候,并没有多少针对从业者的软件架构书,所以我们就写了一本。我们研究了IEEE 1471 标准(它对视图和视点的概念进行了标准化),并且我们认为这个标准提供了一个很好的框架,可以用来组织我们的想法。因此,我们产生了创建一套视点模型的主意。我们有成功地使用“4+1”模型的实践经验,但是我们发现在某些我们参与的项目(企业信息系统)中这种模型不是非常适合。所以,我们针对那些构建企业信息系统的需求,根据我们在这方面的经验,创建了一套自己的视点模型,把它作为已经很成功的“4+1”模型的直接扩展和修改。

在2005 年的第一版之前还没有视角的概念,因此这算是我们对这个领域的贡献。我们发现这种模型是有用,我们也希望其他人能够发现这种模型会有所帮助。我们之所以创建视角模型,是因为我们需要一种框架,它能够让我们得到如何实现如可扩展性、安全性等质量属性的建议,而这些质量属性会涉及多个架构视图。这是我们和许多其他架构师无意中做过的一些事情,但是从前没有真正地思考过它们。视角模型只是将这个方法正式化,这样我们可以定义了一个应用该方法的简单框架,再加上针对不同质量类型的指导书和检查单。

InfoQ:为什么将环境视点模型加入目录?

在我们写这本书的第一版时,我们一直认为系统环境图和外部接口定义是系统需求的一部分。因此在开始架构工作之前这些材料应该已经在我们手中了。当然,世界通常不是这样运行的:最重要的架构工作在项目生命周期的早期就已经完成了,但在这个时候不确定性却是最高的,而且项目范围和需求常常没有讨论完或达成一致。我们发现在几乎每一个我们参与的项目中,我们都会创建一个环境图作为架构说明的一部分。因此,通过定义环境视点模型,我们只不过是面对了现实!

InfoQ:借助于移动和云计算技术以及不断增长的对用户体验的关注,IT 消费化的浪潮怎样影响架构的角色?

与企业用户相比,消费者更加不能容忍缓慢、不可用、不稳定、不安全或者易用性差的系统,而企业用户通常没有什么选择,不得不使用提供给他们的系统。实现这样的质量属性是软件架构的首要目标,所以随着 IT 变得更加消费化,软件架构的重要性也许会增强。虽然在某种意义上我们仍然有着同样的问题和陷阱,但是转向以 Internet 为中心的部署以及使用基于云的服务器和移动设备则引入了很多新的有趣的架构选择和相关的折衷方案。例如,我们发现自己更多地考虑最终一致性(如 BASE 架构类型)而不是通常使用的“ACIDic”事务,以及在部署到云环境时新的可用的部署选项而不是传统的数据中心。我们认为,作为一个产业,我们现在刚刚开始了解它的影响和前景,未来到处可以看到令人兴奋的产品,正是这些新的架构选择激发了它们。如此颠覆性的新选择和相关的折衷方案对我们的系统架构有着深远的影响,所以当向云计算技术迁移时,每个人都需要更多地从架构上进行考虑。

InfoQ:对于敏捷团队,您建议架构师应该将其工作与 Sprint 相结合,并且通过创建可执行的模型,以集中精力来简化有效的架构工作?

我们没有建议一定要创建可执行的模型。对一些架构师来说,这些模型非常有用,也很有效果,但是在主流的企业系统开发领域,我们还没有看到它在实践中的应用。我们的意思是,架构师应该创建能够运行或者人们能够使用的有用的东西。它可以是一个 Spike 原型、一个核心领域模型的实现、一个极其简单的原始系统实现、一个概念运用的证明、一些你想关注的可执行的失败测试集或者用一个 Excel 实现的性能模型。关键的一点是,它必须有用且可执行,这样人们能够在实践中立即使用它。

InfoQ:软件项目的问题之一是在进行产品开发的同时保持对预先定义的架构的遵从。是否有一套推荐的工具和过程来确保正在进行的开发工作和各种视图之间的符合性和一致性?

老实说关于这方面我们无法推荐,没有这样一套已被证实的强大的工具和实践。这里有两个问题。首先,你如何检查视图之间是一致的?其次,你如何检查实现是否符合系统所需要的架构?除非你的视图是全部可以机读的,并且绝大多数的视图不会同时使用比较正式的类似于 UML 的标记法、非正式的标记法和自然语言,否则即使通过使用机器,第一个问题也是无法解决的。因此对于使用我们的视点模型所构造的视图,我们定义了一套检查视图之间一致性的规则,它们很有用,但检查工作还是不得不手工去做。就检查实现是否符合系统所需要的架构而言,有许多方法能够起到帮助作用,这包括架构评估法、静态分析(如 Structure 101、 Lattix、 SonarJ、 Axivion Bauhaus)和组件系统(如 OSGi 或者用于 Java 的 Impala)。在现实中,除了架构中最简单的部分之外,检查架构中任何方面的符合性都是一个非常困难的问题,现在的工具和技术无法真正地对付它。当前,专家评审和评判大概仍然是我们所拥有的最好的工具。

关于作者

Nick Rozanski 从 1980 年开始在 IT 业为几个大型和小型的系统集成商以及终端用户组织工作,前者包括 Logica、Capgemini 和 Sybase,后者包括 Marks & Spencer 和 Barclays Global Investors。他在金融业、零售业、制造业和政府的诸多大型项目中担任资深角色。他的技术背景包括企业应用系统集成、软件包实施、关系数据库、数据 复制以及面向对象的软件开发。他还是一名经验丰富的技术讲师和注册的内部项目审计师。

Eoin(读作“Owen”)Woods是一家大型欧洲投资银行股票交易技术组的首席系统架构师,负责该机构许多关键系统的架构和设计工作。在此之前,他 在 Barclays Global Investors 领导了应用架构组的工作,在 Group Bull、Sybase、InterTrust 和 Zuhlke 担任软件工程师,他还创办了自己的咨询公司 Artechra。

查看英文原文: Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives


感谢侯伯薇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-08-16 00:003770

评论

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

尤雨溪几年前开发的“玩具 vite”,才100多行代码,却十分有助于理解 vite 原理

若川

JavaScript vue.js 前端 签约计划第二季

面试官:useLayoutEffect和useEffect的区别

全栈潇晨

React

让容器跑得更快:CPU Burst 技术实践

阿里巴巴云原生

阿里云 容器 云原生 cpu CPU调度

javascript中获取 DOM 元素的几种方式

你好bk

JavaScript 前端 大前端 DOM BOM

日常的情绪控制

搬砖的周狮傅

情绪控制

信息

Nydia

效能研发:做一款GraphQL代码生成器

梁龙先森

签约计划第二季

Game On Serverless:SAE 助力广州小迈提升微服务研发效能

阿里巴巴云原生

阿里云 Serverless 云原生 SAE 合作

浅谈数据资产

圣迪

数据 数据资产

go语言技术探究--合集

en

内容合集 签约计划第二季

Prometheus Exporter (二十六)Statsd Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 StatsD

语音识别之降噪技术

攻城先森

音视频 语音识别 智能降噪 签约计划第二季

Vue 团队公开快如闪电的全新脚手架工具 create-vue,未来将替代 Vue-CLI,才300余行代码,学它!

若川

JavaScript vue.js 前端 签约计划第二季

面试官:react中的setState是同步的还是异步的

全栈潇晨

React

分布式系统的架构演进过程(二)

卢卡多多

28天写作 12月日更

Vue 3.2 发布了,那尤雨溪是怎么发布 Vue.js 的?

若川

JavaScript vue.js 前端 签约计划第二季

【docker 总结】第二篇 - Image 镜像

Brave

Docker 12月日更

初学者也能看懂的 Vue3 源码中那些实用的基础工具函数

若川

JavaScript vue.js 签约计划第二季

尤雨溪推荐神器 ni ,能替代 npm/yarn/pnpm ?简单好用!源码揭秘!

若川

JavaScript vue.js 前端 签约计划第二季

Kafka 在消息队列领域为何如此流行?

老周聊架构

kafka 内容合集 签约计划第二季

何为异步流

喵叔

28天写作 12月日更

Structuring: 魔法诞生之法

mtfelix

28天写作

阿里Java编码手册实战详解-命名规范篇

JavaEdge

12月日更

前端开发:正确安装nvm的方法(非常详细)

三掌柜

28天写作 28 12月日更 12月

Apache APISIX 助力便利充电创领者小电,实现云原生方案

API7.ai 技术团队

运维 云原生 物联网 网关 Apache APISIX

简历应该这样写

xcbeyond

面试技巧 28天写作 12月日更

[Pulsar] DLQ原理

Zike Yang

Apache Pulsar 12月日更

手把手带你漫游语音识别世界|入门到实战

攻城先森

音视频 语音识别 内容合集 签约计划第二季

前端工程建设那些事

梁龙先森

内容合集 签约计划第二季

大学生要远离宿舍

Tiger

28天写作

手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02

Zhendong

Java maven

《软件系统架构:使用视点和视角与利益相关者协作》访谈_架构_Jeevak Kasarkod_InfoQ精选文章