写点什么

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

  • 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:003300

评论

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

探索压测奥妙

ninetyhe

微服务 分布式系统 压力测试 性能调试

IoT爆发前夕,企业架构要面对哪些变革?

京东科技开发者

物联网

加密数字货币钱包系统软件开发|加密数字货币钱包APP开发

系统开发

Filebeat同步写位点文件引发的磁盘IO问题

秦宝齐

可用性、可维护性、可靠性有什么区别?

禅道项目管理

DevOps 可用性 质量保障 可靠性

如何在 OpenShift 中运行 Collabora Office

东风微鸣

openshift

软件测试---BUG的生命周期

测试人生路

软件测试

腾讯高工亲授“MySQL学习方法”【思维导图+学习笔记+实战文档+面试题库】让你站在数据库领域的顶峰 笑傲江湖!

比伯

Java 编程 架构 面试 计算机

28天写作挑战——坚持28天,每天500字

TGO鲲鹏会

28天写作 热门活动

架构师训练营第十三周

我是谁

架构师训练营第 1 期

架构师训练营-第二周作业

Mark

深入分析单例设计模式

Andy

年底了,你的数据库密码安全吗

Simon

MySQL 数据库

Java多线程并发控制工具信号量Semaphore,实现原理及案例

码农架构

Java Java并发 并发编程 后端

技术干货丨隐私保护下的迁移算法

华为云开发者联盟

迁移

Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(功能拓展)

葡萄城技术团队

算法学习手册

田维常

算法

Java多线程并发控制工具CountDownLatch,实现原理及案例

码农架构

Java 并发编程 后端

AMD台式CPU市场份额距离英特尔还有多远?刚到四分之一

E科讯

uni-app实现实时消息SDK插件

anyRTC开发者

uni-app 音视频 WebRTC 跨平台 sdk

做运维,送你7个常用的服务器资源监控工具

华为云开发者联盟

工具 监控 内存 服务器 系统

HTTP 请求流程

catcoolion

大前端 浏览器 HTTP

换个角度,聊聊全链路压测

老张

性能测试 系统稳定性 全链路压测

比易宝betBEB平台获278万美元约合1807万元融资

DT极客

自学编程的4大误区,你中招了吗?

田维常

程序员

使用PG_SHOW_PLANS监控PostgreSQL执行计划

PostgreSQLChina

数据库 postgresql 开源

VoltDB成功入选CNCF Landscape云原生数据库全景图

VoltDB

云原生 cncf VoltDB 分布式内存数据库

再见 2020!Apache RocketMQ 发布 4.8.0,DLedger 模式全面提升!

阿里巴巴云原生

阿里云 开发者 云原生 存储 消息中间件

ROMA Compose:ROMA的新武器

华为云开发者联盟

数据 API ROMA

一周信创舆情观察(2020.12.28~2021.1.3)

统小信uos

云算力挖矿系统APP开发|云算力挖矿软件开发

系统开发

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