点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

定义软件架构的 10 个属性

  • 2015-09-05
  • 本文字数:984 字

    阅读完需:约 3 分钟

软件架构是一套流程;一系列将规格和业务目标映射为架构设计和具体产出的策略性设计决策;一套在区分不同利益相关者的过程中产出的视图, Michael Stal 陈述了怎样定义一个软件架构 .

Stal 是一个软件工程系教授,西门子的首席工程师,对他来说,架构的目标是建立实现的支柱。他相信早期提出的定义常常会与专注于组件协作混淆。他觉得应该思考一下属性,所以他添加了 9 个额外的属性到他的列表中。

任何件密集型系都展出一个系架构。Stal 声称系统必然存在一个架构,即使是那些基于临时决策开发的系统。对他来说需要的是一个由明确定义、已确定优先顺序与相关性的需求及风险所驱动的系统化架构设计。

有两架构 **** 品质。外部品质定义了品质属性所需的可视行为,而内部品质定义了被开发者所采纳的如简化和富表现力的属性。

一套一的指和工具必能指架构 **** 设计。对 Stal 来说这是达成高品质必不可少的条件。指导方针能帮助避免架构在各种设计模式和技术中变得臃肿而减低内部品质。

件架构作为具体产出就是设计决策沟通的结 **** 果。所有架构决策必须是明确的且根据不同的利益相关角色责任而描述出来。架构是初始代码框架设计和定义的基础。

件架构必包含问题 **** 域和解决方案域。Stal 注意到这个属性推理出多层设计不是一个架构。他同时注意到要避免庞大的设计,两个领域都应该构建子领域,且软件架构活动行为的组织由这些子领域所驱动,而不是组织本身去驱动,可以参考 Conway’s law

Stal 的最后 4 个属性主要是针对架构设计在整个系统生命周期中如何跨度,架构设计如何遵循测试驱动方法,为此架构必须与其环境保持分离,它在特定领域内定义了由多个系统所组成的系统。

在与 InfoQ 的一次访谈中, Stefan Tilkov 认为 Stal 的文章写得很好但 Tilkov 注意到他可以不将架构视为一套独立于开发的流程,他将架构看作是项目的一个功能和组织的大小。他也提到与将架构看成“系统的描述或系统想要的形式”不同,他觉得架构是“系统所拥有的某种东西”,无论架构是如何被创建的。

查看英文原文 10 Properties Defining Software Architecture


感谢张龙对本文的审校。

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

2015-09-05 19:003554

评论

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

「颜值即正义」那些管UI小姐姐要来的网站

童欧巴

CSS 效率工具 大前端 UI

Dig101 - Go之聊聊struct的内存对齐

newbmiao

源码分析 struct memory -layout Go 语言

Laravel 7 新特性 - 流畅的字符串操作

Middleware

php laravel string

OKR实践中的痛点(2):对不qi,对不qi

大叔杨

OKR Scrum 敏捷 敏捷开发

高并发下作余额扣减的一些经验

流沙

后端

Dig101-Go之interface调用的一个优化点

newbmiao

源码分析 interface devirtualization Go 语言

一个平凡者的阅读故事

卷尚

Ruoyi Vue前后端分离版本添加UReport设计器

赵欣

Vue Ruoyi uReport

媒体的经营 04 | 难在:有所表达,影响决策

邓瑞恒Ryan

创业 媒体 技术社区

Angular的遍历,默写一遍。

玉龙BB

大前端 angular 前后端分离 集合

回"疫"录(7):关键时刻稳住别浪

小天同学

疫情 回忆录 现实纪录 纪实

翻译: Effective Go (3)

申屠鹏会

翻译 gol

《代码整洁之道》原则整理

insight

编程

ELK环境搭建

for

elasticsearch Logstash Kibana ELK

Dig101 - Go之string那些事

newbmiao

源码分析 string Go 语言

MongoDB入门笔记

编程随想曲

sql mongodb

讲一个程序员如何副业月赚三万的真实故事

非著名程序员

程序员 副业 副业赚钱 提升认知

如何写作一本书(1):写前须知

英子编辑

技术 写作 读书

万物皆逝

冯夷

生活

有问必答(2020-03-28):活着是为了什么?

冯夷

生活

Dig101 - Go之灵活的slice

newbmiao

源码分析 slice Go 语言

Dig101-Go之读懂interface的底层设计

newbmiao

源码分析 interface iface eface Go 语言

使用Vue+Highcharts绘制中国地图

kos

Vue 大前端

一篇文章教你服务器OOM后如何快速定位处理问题

Java OOM 系统故障

做成事情,唯有实干,没有捷径

Yolanda

Spring IOC 和 DI

再见孙悟空

spring

程序猿 Windows 10 日常使用软件推荐

夏天

程序员 日常软件 windows

关于需求评审和讲解的一些思考

Yezhiwei

设计一个地铁路线规划小工具

流沙

开源 后端

一文学会设计模式

泰伦卢

c++ 互联网 极客 设计模式 架构模式

我的第一个 100K app

道哥

ios swift 自由职业 独立开发者 App

定义软件架构的10个属性_架构_Jan Stenberg_InfoQ精选文章