Architecture(架构/体系结构)与营造法式:一个简单的理解_模型 architecture 是什么-程序员宅基地

技术标签: reference  components  企业应用  系统架构及原理  企业架构  basic  框架  structure  

作者: 余彤鹰,  来源:  企业工程论坛,  发表时间: 2011-01-18
 

引言营造法式卷三十一插图

在企业应用(信息系统或软件)和企业工程领域,”越来越常见,但这个词的使用也常常显暧昧或矛盾。在多数情况下,我们会尽量使用其它简明而常见的词语,例如:涉及系统本身有“结构、构造、组成”(structure, construct, component)或“结构框架”(structural framework)、“结构类型”(structure type),以及系统的“类型、分类”(type, catagory)等,涉及建构/实现有“方法、过程、程序、方法学”(method/approache, process, procedure, methodology),涉及系统描述或规定有“建模、模型、参考模型、元模型”(modeling, model, reference model, metamodel),还有系统的“规划”(plan),“设计”(design), “工程”(engineering),等等。这些,加上些诸如“结构规范/标准”、“设计规范/标准”、“实施规范/标准”、“参考模型/框架”等等,似乎足以说明关于某种复杂人造系统的各种事情。那么,为什么我们需要“”这个词?它为什么愈发流行?我们是否可以用奥卡姆剃刀[1]将其剔除?

理解要点

Architecture一词本源于建筑领域,它与建造有关,同时又涉及建造的方法,以及建造的设计方法及设计结果——目标系统的结构或风格。虽然在具体的使用中,有时会侧重于其中的某个方面,例如建筑的风格,软件的结构特征,企业的规划与治理等,但显然architecture并不是单纯指风格、结构或规划、建造(实现)的方法学等——当我们需要明确地谈论这些单纯的方面,不必放弃简明的词汇,去使用一个暧昧、多义的词。

理解的要点,正是在于这些要素的关联——而其中的关键,是系统的结构或结构特征、风格与其规划设计、建造、改造或演化方法之间的关系。更明确地说,复杂的系统的设计(指结果)与设计、建造方法与手段之间具有密切的关系。在涉及具体系统建造(实现)的语境中,单纯地讨论复杂系统的结构、结构特征通常是不切实际的,我们必须知道它们能否实现、怎样实现,甚至包括是否能够有效地维持其运作及根据需要作出改变。同时实现(及维护治理与改变)的手段、方法本身也制约着设计者对于结构或风格等的选择。例如,我们似乎可以按照自己的想象,把一栋大楼建设成任何样子,唯一的约束是物理学定理——但实际的情形并不是这样:要想设计一幢能够可靠地建成的建筑,除了物理学定理之外,我们还要受到许多限制,例如来自我们所拥有或可行的方法、手段或工具、材料等的限制,当然也包括某种式样或风格的限制。而且,目标系统越复杂,限制越多,也越有必要性。

另一方面,假如我们每一次都从零开始,仅仅根据力学原理来设计一栋大厦,那么,我们面临的是,一方面我们需要从最基础的要素——每一块砖的结构开始设计,将导致每一次的设计都异常繁琐而且是不可靠的,而另一方面,更重要的是,最终我们也许得到一个非常独特、完全符合物理学定理的设计方案,但没有人能够有效、可靠地实现。在设计和实现复杂系统时,人们必然地要大量地采用已有的、逐步积累的结构或部件。

在稍微成熟的、复杂系统营造的领域,人们会不断地总结、积累各种结构或结构风格,以及关联的设计、建构或实现的准则、方法与手段。对于复杂系统的营造,这些方面必然地关联在一起,构成一些不同的体系。这就是为什么有必要用architecture而不只是用structure或structure style/type和approaches/methods等的理由。

进一步,我们可以归纳出有效地营造复杂系统的两项基本原理(two basic architectural principles for complex systems),它们也是理解architecture概念独特性与重要性的关键:

1)  设计与实现关联原则:复杂系统的设计方案,如结构或结构特征的选择必须受可行的实现方法与手段的约束。

2)  部件或构造通用原则:复杂系统的设计与实现,应尽可能基于具有通用性、适用条件已知、可靠性经过验证的通用部件或构造。

这样,就得到在诸如软件、企业工程等领域使用architecture概念的基本理解:它的基本语境是“复杂人造系统”,涉及一系列相互关联的设计和建造(有时还包括维护/治理和演化/转变)相互关联的(系统性的)方法、手段和准则。

另一方面,我们还可以理解到,在诸如软件等领域,architecture越来越多地使用,正是人们对它的建造与实现规律日益加深,迈向成熟之的一种标志。

在这些理解的基础上,再回头看软件、企业工程等领域五花八门的定义,就比较容易解读了(包括一些较为偏颇的解释)。

例如ISO/IEC 42010:2007与ANSI/IEEE 1471-2000所给的定义:

“指系统的基础性组织,体现于其构件及它们的相互关系、与环境的关系、和它们的设计与演化的治理原则。”

因为它的基本语境是软件,因此使用了“构件”(components),对于一般系统,也可称为构成、构成部分、成分。而之所以强调“构件及其相互关系”而不是简单地用“结构”(structure)这样的表述,也顺应了前述“部件或构造通用原则”。同时,从“设计与实现的关联原则”,我们就可以更好地理解这个定义的后一部分——它与前面部分并不只是简单并举的关系。尤其是,它不应只是包含基本构成要素及其关系、结构或构造,还应当包括这些要素的运用、实现甚至治理的准则。

又如,来自欧洲的企业工程系统研究者简·迪茨这样界定企业工程中的architecture:

“Enterprise Architecture是设计自由度的规范性约束;实际上,它是一个协调一致的准则集合,用以指导企业的设计、工程和实施。只有应用Enterprise Architecture,才能将企业高层次的方针(使命、战略)一贯地实施于该企业的运作。”

在他的讨论中,也曾特别指出这一概念常见的引起混淆的不恰当用法,例如将EA仅仅理解为一种结构框架或蓝图。同样,结合上述理解要点,就能更好地理解他所说的“规范性约束”,以及为什么要在设计、工程和实施上一贯地加以运用。对于企业工程而言,由于它大部分时间是处于演变/改进过程之中,EA的运用基本上是在一个已经存在的企业运作过程中进行的。

汉语中的对应概念

南宋绍定重刊绍兴十五年平江府刊本《营造法式》在前面的文字中,我们有意识地使用了architecture,因为在软件和企业工程这两个基本语境中,architecture这个概念是外来的,而且不幸的是,已经流行的“”、“”等译法[2],恰恰是非常“不靠谱”的译法。它是最不好的那种翻译:没有找到对应词语,选择了一个与原概念既不等而又部分相关的词语来指代,这样最容易造成误导和混淆。理解了上述要点,就容易体会到为什么这样说——它们的字面意思都是错误的。

实际上,我们可以从architecture的本源——建筑领域找到答案。首先,对architecture较广义的用法,可以指学科(领域)或某种营造知识体系,现代汉语中已经形成的对应词汇是“建筑学”。但将“建筑学”直接借用到其它系统领域,似乎不是很理想(或许是因为中文“建筑”这个基本名词的存在),因而,我认为“建构学”或许是一种比较中肯的选择。例如在企业工程领域,我建议可以采用“企业建构学”(或参照后面,用“营造学”)。

事实上,目前在诸如软件、企业工程领域,architecture并不经常使用在类似“建筑学”的层面上(这可能与领域的成熟性有关),而是指向更具体的设计与建造体系。前面已经提到,目前流行的翻译,是“架构”和“体系结构”(及构架等)。事实上,我在《企业工程的内容与企业架构的定位》已初次指出,在建筑领域,古汉语已经有与architecture对应的说法,即“营造法式”(可参见维基百科营造法式条目)。将这四个字的意义展开来看,它的确精准地体现了我们前面讨论的方面。如果需要一个简称的话,我推荐“法式”——“法”提示了方法、准则;“式”提示了风格、样式,包含着构造/结构,它很好地点明了architecture这个概念的关键的方面,甚至有同样的来源(建筑领域)。事实上,不是我们想要将architecture“翻译”成“营造法式”,而是古汉语中本来就已经有了这个概念的词语,它与英文中的architecture具有相似的本意。(插图:宋建筑学著作《营造法式》页面,取自维基共享资源)

小结

对于复杂系统的设计与实现(包括维护/治理及演化/改变),Architecture是一个重要的概念。可以看到,对于复杂系统的营造,它是一个重要的概念,有独特的含义,并不能用其它常见的关联概念简单取代。我们归纳出了这一概念涉及的两个最基本的原理,即设计与实现关联原则、部件或构造通用原则,它们是有效地营造复杂系统的两项基本原理。

可以从以下方面理解architecture存在的重要性:

  • 结合设计与建造方法与手段;
  • 使复杂系统的设计与实现可靠、可控、经济;
  • 为系统的维护——尤其是改造或演化提供基础,保持系统的策略或目标的连续性、一贯性。

在现代汉语中,“架构”或“体系结构”都是字面错误、误导极强的译法,古代汉语中早已有对应的概念,即“营造法式”,如需简称,我们建议采用“法式”,它比流行的翻译要好得多。


[1] 一种表述为“若无必要,勿增实体”,可参考维基百科奥卡姆剃刀条目。
[2] 有人刻意地颠倒使用“构架”,也许是想以此避免“架构”的强烈误导,但我认为这没什么两样。

 

转载自:http://www.ee-forum.org/pub/ty/2011-01-p2398.html(读取于 2011-07-09 11:29)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/flyingrobot/article/details/6594474

智能推荐

Unity关于对象池的使用_unity find prefab名字有个(clone)-程序员宅基地

文章浏览阅读801次。在游戏中大量的出现的,比如敌人,子弹,都可以用到对象池,为什么要用的对象池呢?其实是因为系统在创建,销毁对象是非常消耗内存的,这样对优化内存会有很大的帮助。回头再总结一下优化方面的注意方面。那么,如何使用,或者说如何创建对象池呢?首先我们Assets 下创建一个Resources文件夹。里面放上需要重复创建的预制体。(注意给这个预制体加上刚体),创建脚本using UnityEngin_unity find prefab名字有个(clone)

Linux 指令lsblk 作用,以及查看cpu使用情况和磁盘IO iostat指令详解

(列表块设备)命令是一个非常实用的工具,用于显示所有可用的块设备信息,如硬盘、USB驱动器、SD卡以及它们的分区。这个命令以易于理解的树状结构展示这些信息,清晰地表明了设备间的层次关系和依赖性。是一个用于监控Linux系统中CPU使用情况和磁盘I/O统计信息的命令行工具,它是sysstat包的一部分。行中的数据,你可以大致了解系统的CPU资源是如何被分配和使用的,进而判断是否存在CPU瓶颈或者I/O等待等问题。可以帮助识别系统中的I/O瓶颈,监控磁盘活动,并据此进行性能调优或问题诊断。在Linux系统中,

第六天----数据结构笔记_路径点和边重复-程序员宅基地

文章浏览阅读495次。笔记参考文章1、1.图根据边是否有方向,将图可以划分为:无向图和有向图。2.一条边上的两个顶点叫做邻接点。3.在无向图中,某个顶点的度是邻接到该顶点的边(或弧)的数目。4.在有向图中,顶点的度=入度+出度。–顶点的入边,是指以该顶点为终点的边。而顶点的出边,则是指以该顶点为起点的边。–某个顶点的入度,是指以该顶点为终点的边的数目。而顶点的出度,则是指以该顶点为起点的边的数目。5.路径:如果顶点(Vm)到顶点(Vn)之间存在一个顶点序列。则表示Vm到Vn是一条路径。–路径长度:路径中"_路径点和边重复

[word技巧]把标题、图表题注编号由“一.1”改为"1.1"_word 图一.1-程序员宅基地

文章浏览阅读4.1w次,点赞6次,收藏31次。[word技巧]把标题、图表题注编号由“一.1”改为"1.1"_word 图一.1

python编程语言的缺点-常见的AI编程语言优缺点比较,程序员千万不要入错行!...-程序员宅基地

文章浏览阅读228次。原标题:常见的AI编程语言优缺点比较,程序员千万不要入错行!人工智能编程是一种技术的提升,为不同公司的运营和人们的生活带来了极高的效率和最佳效益。 人工智能为不同的行业带来了另一种智能技术,其潜力的前景仍在增长,期望它能够达到人类的智慧。 这是因为开发人员愿意探索,试验和实施其能力,以满足更多的人力和组织需求。 毕竟,需求是发明之母。 就像在大多数软件应用程序的开发中一样,开发人员可以使用各种语言..._ai python 跟语言无关

产品经理功法修炼(2)之专业技能-程序员宅基地

文章浏览阅读1.2k次,点赞23次,收藏30次。产品经理的能力修炼并非局限于某一技能的速成,而是需要全面参与到产品的整个生命周期中,通过不断的实践来逐步提升自己的各项能力。尽管在企业的日常运作中,我们不可能身兼数职去扮演每一个角色,但作为产品的核心负责人,我们必须进行系统性的学习,以深化对产品管理的理解和认知。作为产品管理的组织者、策划者和实施者,产品经理需紧密围绕目标市场,深入开展市场调研、市场定位和市场细分工作。同时,还需全面考虑产品策略、价格策略、渠道策略、促销策略、公关策略以及服务策略等多个方面,以确保营销工作的全面性和有效性。

随便推点

flutter开发实战-混淆minifyEnabled及shrinkResources

flutter开发实战-混淆minifyEnabled及shrinkResources,这里不需要混淆,暂时关闭。学习记录,每天不停进步。

DSP开发实战教程-国产DSP替代进口TI DSP的使用技巧

复制进芯电子国产DSP官网提供的配置文件。

2024五一数学建模竞赛(五一赛)选题建议+初步分析

提示:DS C君认为的难度:B>A>C,开放度:A=B

AI大模型探索之路-训练篇6:大语言模型预训练数据准备-预处理

随着人工智能技术的不断发展,大语言模型在自然语言处理、机器翻译、文本生成等领域取得了显著的成果。然而,训练一个高性能的大语言模型需要大量的高质量预训练数据。本文将详细介绍大语言模型预训练数据准备的各个环节,包括数据来源、质量过滤、去重过滤、敏感过滤以及数据影响分析等。希望通过本文的介绍,能够帮助读者更好地理解和应用大语言模型预训练数据的准备过程。大语言模型预训练数据准备是实现高性能模型的关键步骤。本文从数据来源、质量过滤、去重过滤、敏感过滤以及数据影响分析等多个方面进行了详细的介绍。

最新版两款不同版SEO超级外链工具PHP源码-程序员宅基地

文章浏览阅读674次。外链工具只是网站推广的辅助工具,一般适用于短时间内无法建设大量外链的新站,新站应坚持每天做一到两次为宜,大约一周左右能看到效果。老站不建议使用此类工具,老站应以优质内容建设为主,辅以交换优质的友情链接和高权重站点发布软文来建立外链方为上策。#已更新增加大量高质量外链(若需要增加修改其他外链请打开txt文件)可根据个人感觉喜好自行任意选择不同版本使用(版V1或版V2)请将zip文件全部解压缩即可访问!源码全部开源,支持上传二级目录访问。源码为自适应端,手机和电脑端都适配。抄笔记 (chaobiji.cn)

2014找工作总结-机会往往留给有准备的人_nginx 机会给有准备的人-程序员宅基地

文章浏览阅读1.8w次。好基友的文章必须转,大神一枚:出处:http://blog.csdn.net/xiajun07061225/article/details/12844801 其实我的求职过程在十一之前就已经结束了,总体讲比较顺利。参加面试的几家公司基本都拿到了offer,分别是阿里巴巴、美团网、创新工场涂鸦移动以及华为。当时也参加了其他公司的面试,比如人人,一面过后收到了二面通知,_nginx 机会给有准备的人

推荐文章

热门文章

相关标签