定义软件架构的10个属性
2015-11-07 20:53
471 查看
软件架构是一套流程;一系列将规格和业务目标映射为架构设计和具体产出的策略性设计决策;一套在区分不同利益相关者的过程中产出的视图,Michael Stal陈述了怎样定义一个软件架构.
Stal是一个软件工程系教授,西门子的首席工程师,对他来说,架构的目标是建立实现的支柱。他相信早期提出的定义常常会与专注于组件协作混淆。他觉得应该思考一下属性,所以他添加了9个额外的属性到他的列表中。
任何软件密集型系统都展现出一个系统架构。Stal声称系统必然存在一个架构,即使是那些基于临时决策开发的系统。对他来说需要的是一个由明确定义、已确定优先顺序与相关性的需求及风险所驱动的系统化架构设计。
有两类架构品质。外部品质定义了品质属性所需的可视行为,而内部品质定义了被开发者所采纳的如简化和富表现力的属性。
一套统一的指导方针和工具必须能指导架构设计。对Stal来说这是达成高品质必不可少的条件。指导方针能帮助避免架构在各种设计模式和技术中变得臃肿而减低内部品质。
软件架构作为具体产出就是设计决策沟通的结果。所有架构决策必须是明确的且根据不同的利益相关角色责任而描述出来。架构是初始代码框架设计和定义的基础。
软件架构必须包含问题域和解决方案域。Stal注意到这个属性推理出多层设计不是一个架构。他同时注意到要避免庞大的设计,两个领域都应该构建子领域,且软件架构活动行为的组织由这些子领域所驱动,而不是组织本身去驱动,可以参考<a href="http://www.kuqin.com/shuoit/20150911/348011.html" "="" style="color: rgb(128, 0, 128); text-decoration: none; outline-style:
none;">Conway’s law。
Stal的最后4个属性主要是针对架构设计在整个系统生命周期中如何跨度,架构设计如何遵循测试驱动方法,为此架构必须与其环境保持分离,它在特定领域内定义了由多个系统所组成的系统。
在与InfoQ的一次访谈中,Stefan Tilkov认为Stal的文章写得很好但Tilkov注意到他可以不将架构视为一套独立于开发的流程,他将架构看作是项目的一个功能和组织的大小。他也提到与将架构看成“系统的描述或系统想要的形式”不同,他觉得架构是“系统所拥有的某种东西”,无论架构是如何被创建的。
Stal是一个软件工程系教授,西门子的首席工程师,对他来说,架构的目标是建立实现的支柱。他相信早期提出的定义常常会与专注于组件协作混淆。他觉得应该思考一下属性,所以他添加了9个额外的属性到他的列表中。
任何软件密集型系统都展现出一个系统架构。Stal声称系统必然存在一个架构,即使是那些基于临时决策开发的系统。对他来说需要的是一个由明确定义、已确定优先顺序与相关性的需求及风险所驱动的系统化架构设计。
有两类架构品质。外部品质定义了品质属性所需的可视行为,而内部品质定义了被开发者所采纳的如简化和富表现力的属性。
一套统一的指导方针和工具必须能指导架构设计。对Stal来说这是达成高品质必不可少的条件。指导方针能帮助避免架构在各种设计模式和技术中变得臃肿而减低内部品质。
软件架构作为具体产出就是设计决策沟通的结果。所有架构决策必须是明确的且根据不同的利益相关角色责任而描述出来。架构是初始代码框架设计和定义的基础。
软件架构必须包含问题域和解决方案域。Stal注意到这个属性推理出多层设计不是一个架构。他同时注意到要避免庞大的设计,两个领域都应该构建子领域,且软件架构活动行为的组织由这些子领域所驱动,而不是组织本身去驱动,可以参考<a href="http://www.kuqin.com/shuoit/20150911/348011.html" "="" style="color: rgb(128, 0, 128); text-decoration: none; outline-style:
none;">Conway’s law。
Stal的最后4个属性主要是针对架构设计在整个系统生命周期中如何跨度,架构设计如何遵循测试驱动方法,为此架构必须与其环境保持分离,它在特定领域内定义了由多个系统所组成的系统。
在与InfoQ的一次访谈中,Stefan Tilkov认为Stal的文章写得很好但Tilkov注意到他可以不将架构视为一套独立于开发的流程,他将架构看作是项目的一个功能和组织的大小。他也提到与将架构看成“系统的描述或系统想要的形式”不同,他觉得架构是“系统所拥有的某种东西”,无论架构是如何被创建的。
相关文章推荐
- Spark 入门之四:Spark任务调度架构
- Spark 入门之三:Spark运行框架
- 网站如何记录访客的个人信息?
- 网站架构:页面静态化,图片服务器分离,负载均衡
- Jdbc练习基础小项目--对个人信息的展示以及增删改查--mvc架构
- MySQL高可用方案选型参考
- Spark架构设计和运行机制简述
- 实战解析Android架构设计原则
- GTK+图形化应用程序开发学习笔记(十七)—框架构件、比例框架构件
- 构建动态网站之安装lamp组件(分别安装)
- 基于js与flash实现的网站flv视频播放插件代码
- 构建动态网站之域名解析
- 软件架构师职责
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
- 6.网站显示传感器数据
- net大型分布式电子商务架构
- 编译器架构的王者LLVM——(4)简单的词法和语法分析
- ADT架构设计方法与技术 课程
- 雅虎十四条:网站前端网页优化的14条原则
- 学做网站(1):环境搭建