图案语言

图案语言(Pattern language)是一种描述良好设计实践或专业领域内有用组织图案的方法。 这个词是由建筑师克里斯托弗亚历山大创造的,并在1977年出版的“图案语言”一书中得到了推广。

图案语言也可以试图通过一系列相互联系的图案来表达在人类努力的特定领域内带来活力的更深层次的智慧。 对于“没有名字的品质”而言,活着是一个占位词:一种完整感,精神感或优雅感,虽然形式各异,但却是精确且经验可验证的。 这种设计方法的一些倡导者声称,普通人可以使用它来成功解决非常大的复杂设计问题。

什么是图案?
当设计师设计一些东西时 – 无论是房屋,计算机程序还是灯具 – 他们必须就如何解决问题做出许多决定。 一个单一的问题通过其典型的地方(语法)进行记录,并且使用(语法)以及在野外看到的最常见和公认的良好解决方案,就像词典中看到的例子。 每个这样的条目都是单一的设计图案。 每个图案都有一个名称,一个描述性条目和一些交叉引用,就像字典条目一样。 有文件记录的图案应该解释为什么该解决方案在图案的背景下很好。

诸如“门”或“伙伴关系”之类的元素或通用图案是设计的多样化理想,无论是经验中发现的还是作为实践中的组成部分,都明确描述为力量在复杂环境和情况下的整体解决方案,无论是在建筑,医学,软件开发或治理等。可能发明或发现和研究图案,例如表征人类环境的自然发生的设计图案。

像所有语言一样,图案语言有词汇,语法和语法 – 但图案语言适用于除通信之外的一些复杂活动。 在用于设计的图案语言中,部件以这种方式分解:

语言描述 – 词汇表 – 是一组指定的,描述的感兴趣领域问题解决方案。 这些被称为设计图案。 因此,例如,建筑语言描述的项目如:定居点,建筑物,房间,窗户,闩锁等等。
每种解决方案都包含语法,该说明显示解决方案适用于更大,更全面或更抽象的设计。 这将自动将解决方案链接到其他所需解决方案的网络中。 例如,房间有办法获得光照,并有办法让人进出。
该解决方案包括描述解决方案如何解决问题或产生益处的语法。 因此,如果不需要这种好处,则不会使用该解决方案。 也许这部分设计可以留空以节省资金或其他资源; 如果人们不需要等待进入一个房间,一个简单的门道可以替代一个候车室。
在语言描述中,语法和语法与其他命名解决方案交叉索引(通常带有图案名称的文字字母索引),因此设计人员可以从一种解决方案快速思考相关的所需解决方案,并以逻辑方式记录它们。 在克里斯托弗亚历山大的着作“图案语言”中,图案按大小递减,并带有单独的字母索引。
语言索引中的关系网络在设计过程中提供了许多途径。
这简化了设计工作,因为设计人员可以从他们理解的问题的任何部分开始处理流程,并向未知部分工作。 同时,如果图案语言在许多项目中运行良好,那么有理由相信,即使是最初不完全了解设计问题的设计人员也会完成设计过程,并且结果将可用。 例如,进来的滑雪者必须卸下积雪和储存设备。 乱七八糟的雪和靴子清洁工应该留在外面。 设备需要保养,所以机架应该放在里面。

许多图案构成一种语言
正如语言必须具有语法和语义关系才能使口语有用一样,设计图案必须在位置和效用顺序上彼此相关以形成图案语言。 克里斯托弗亚历山大的工作描述了一个分解过程,其中设计师有一个问题(可能是一个商业任务),选择一个解决方案,然后发现更大的解决方案导致的新的,更小的问题。 偶尔,较小的问题没有解决方案,必须选择不同的更大解决方案。 最终所有其余的设计问题都足够小或足够常规,以便建造者即兴解决,并完成“设计”。

取决于问题,实际的组织结构(分层,迭代等)由设计者决定。 这明确让设计师从一小部分开始探索设计。 发生这种情况时,设计师通常会意识到问题实际上是更大解决方案的一部分。 在这一点上,设计几乎总是成为一个更好的设计。

因此,在语言中,每种图案都必须表明它与其他图案以及整个语言的关系。 这给了设计师使用该语言很多关于必须解决的相关问题的指导。

外部专家应用图案语言中最困难的部分实际上是要获得可靠,完整的待解决问题清单。 当然,最熟悉问题的人是需要设计的人。 因此,亚历山大着名地倡导现场即兴通过有关,授权用户,作为一种强大的方式来形成非常可行的大型初始解决方案,最大限度地发挥设计的实用性,并最大限度地减少设计返工。 实际上,赋予建筑用户权力的愿望实际上是导致亚历山大首先进行建筑图案语言项目的原因。

在上下文中设计问题
设计图案的一个重要方面是识别和记录使不同系统(可能是房屋,计算机程序或日常使用的对象)不同系统的关键思想,并协助设计未来系统。 以一种图案表达的想法应该足够普遍,以便在其背景下的不同系统中应用,但仍具有足够的具体指导性。

在一个图案中解决的问题和解决方案适用的情况的范围称为其上下文。 每种图案中的一个重要部分是描述这种情况。 例子可以进一步说明这种图案如何适用于非常不同的情况。

例如,亚历山大的图案“A PLACE TO WAIT”以类似于手术中的候诊室的方式处理公共汽车站,同时仍提出有益的和建设性的解决方案。 Gamma等人的“四人帮”设计图案。 提出独立于编程语言和程序的应用领域的解决方案。

尽管如此,一种图案中描述的问题和解决方案在一方面的抽象和一般性以及另一方面的特异性方面可能会有所不同。 最终这取决于作者的偏好。 然而,即使是非常抽象的图案通常也会包含本质上绝对具体和具体的例子。

在现实世界中,图案在多大程度上得到证实也会有所不同。 亚历山大给出了每种图案的评分为零星,一颗或两颗星,表明它们在现实世界中的实例证明得如何。 一般认为,所有的图案至少需要一些现实世界的例子。 然而,可以设想以类似图案的格式记录尚未实现的想法。

亚历山大书中的图案在规模上也有所不同 – 一些描述如何建立一个小镇或社区,另一些则处理个别建筑和房间内部。 亚历山大把小规模的文物看作是大规模世界的建设性元素,因此他们可以连接到一个等级网络。

力量平衡
一个图案必须表征其意图解决的问题,出现这些问题的环境或情况以及建议的解决方案的条件。

这些问题常常是由不同利益或“力量”的冲突产生的。 一种图案就是一种对话,然后将有助于平衡力量并最终做出决定。

例如,可能存在一种建议使用无线电话的图案。 这些力量将是沟通的需要,并需要同时完成其他事情(烹饪,检查书架)。 一个非常具体的图案将只是“无线电话”。 更一般的图案是“无线设备”或“次要活动”,这表明次要活动(例如通过电话交谈或检查牛仔裤的口袋)不应干扰其他活动。

虽然在上下文中没有特别说明,但“二次活动”图案中的力量与“无线电话”中的力量非常相似。 因此,竞争力量可以被看作是以一种图案表达的设计概念的本质的一部分。

图案包含他们自己的基本原理
通常情况下,一个图案包含一个提到某些给定值的基本原理 对于克里斯托弗·亚历山大来说,考虑那些会接触到建筑的人是最重要的。 他的主要价值之一是让这些人感觉更加活跃。 他谈到“无名品质”(QWAN)。

更一般地说,我们可以说,一个好的系统应该被接受,欢迎和欢乐地接受为那些意图使用它的人的日常生活的丰富,或者 – 更好 – 它受到所有人的影响。 例如,亚历山大在讨论街头咖啡馆时,讨论了客人可能的愿望,但也提到了只是走过的人。

同样的想法可以应用于诸如电话和汽车之类的技术设备,像项目团队之类的社交结构,或计算机程序的用户界面。 例如,软件系统的质量可以通过观察用户是否花时间享受或与系统挣扎来评价。

通过关注对人类生活的影响,我们可以识别独立于技术变化的图案,从而找到“永恒的品质”(亚历山大)。

通用结构和布局
通常,图案语言或集合的作者为其包含的所有图案选择一个通用结构,将每个图案分解为通用部分,如上下文,问题陈述,解决方案等。

例如,克里斯托弗亚历山大的图案包括短名称,评级(最多两个’*’符号),敏感图片,上下文描述,问题陈述,带有示例和解释的较长文本部分,解决方案声明,草图和其他参考资料。 这种结构和布局有时被称为“亚历山大形式”。

亚历山大使用特殊的文字布局来标记他的图案的不同部分。 例如,问题陈述和解决方案陈述以粗体显示,而后者始终以“因此:”关键字开头。 一些作者使用显式标签,这会产生一定程度的冗余。

有意义的名字
当一个团队完成设计时,图案名称将形成他们可以分享的词汇。 这使得图案名称必须易于记忆和高度描述。 Alexander的作品中有一些例子是WINDOW PLACE(帮助定义窗户在房间中的位置)和A PLACE TO WAIT(帮助定义公交车站和医院候诊室的特征)。

关联网络中的聚合(图案语言)
亚历山大构想的图案语言包含了从一种图案到另一种图案的链接,因此当试图在项目中应用一种图案时,设计师会被推到其他图案中,这些图案在其上下文中被认为是有用的。

在亚历山大的书中,这样的链接被收集在“参考”部分中,并且在链接图案的“上下文”部分中回应 – 因此整体结构是有向图。 在“参考”中链接的图案通常会解决较低比例的问题,这被认为是高比例问题的一部分。 例如,“公共户外房间”图案提及“阶梯座位”。

即使没有图案描述,这些链接以及有意义的名字也会带来一个信息:当在人们可以花时间的地方建造一个地方(“公共户外房间”)时,考虑用人们可以坐的楼梯环绕它(“STAIR SEATS “)。 如果您正在计划办公室(“工作场所和办公室”),请考虑安排小组(“小型工作组”)的工作空间。 亚历山大认为,网络中的连接可以被认为比图案本身的文本更有意义。

亚历山大的书中的链接清楚地形成了一个等级网络。 亚历山大画出了语法层次的平行线 – 这是他谈论图案语言的一个论据。

尽管链接背后的语义原理可能会有所不同,但链接的概念在图案作者中已被普遍接受。 然而,有些作者,像Gamma et al。 在设计图案中,只对图案链接进行少量使用 – 可能是因为它们对于图案集合没有多大意义。 在这种情况下,我们会说图案目录而不是图案语言。

用法
亚历山大鼓励使用他的系统的人用他们自己的图案来扩展自己的语言。 为了实现这一点,他的书不会严格关注建筑或土木工程; 他还解释了图案语言的一般方法。 书A图案语言的原始概念是它将以三环活页夹的形式发布,以便稍后可以轻松地添加页面; 这在发布中证明是不切实际的。 图案语言方法已被用于记录不同领域的专业知识。 一些示例是架构图案,计算机科学图案,交互设计图案,教学图案,社交行为图案和组简化图案。 图案语言方法也被推荐为促进公民智能的一种方式,帮助协调针对重大共享问题共同工作的不同人员和社区的行动。 亚历山大关于使用图案语言以及创建新图案的规范仍然具有影响力,他的书籍被不相关领域的专家引用。

重要的是要注意诸如UML或流程图符号集合之类的符号不是图案语言。 他们可以更密切地与字母表进行比较:他们的符号可以用来记录一种图案语言,但它们本身不是一种语言。 配方或其他连续的步骤集合,从开始到结束只有一条正确的路径,也不是图案语言。 但是,设计新配方的过程可能会受益于使用图案语言。

一个图案的简单例子
名称:ChocolateChipRatio
背景:您正在小批量地为家人和朋友烘焙巧克力饼干
首先考虑这些图案:SugarRatio,FlourRatio,EggRatio
问题:确定巧克力片与饼干面团的最佳比例
解决方案:观察到大多数人认为巧克力是巧克力曲奇的最佳部分。 同样要注意的是,太多的巧克力可能会阻止饼干粘在一起,从而降低其吸引力。 由于您正在小批量烹饪,因此不需要考虑成本。 因此,请使用最大量的巧克力片,以获得非常坚固的饼干。
考虑下一个:NutRatio或CookingTime或FreezingMethod

起源
建筑师和作家克里斯托弗亚历山大创造了术语图案语言。 他用它来指建筑和城镇的设计和建造的常见问题,以及如何解决这些问题。 书中提出的解决方案包括建议,包括城镇应该如何组织,以及窗户应放置在一个房间里。

“图案语言”方法的框架和理念最初在1970年代后期由加利福尼亚州伯克利市环境结构中心的克里斯托弗亚历山大和五位同事撰写的“图案语言”一书中得到普及。 虽然图案语言包含253种“图案”,从第一种图案,“独立区域”(最一般)到最后一种“生活中的事物”,亚历山大的着作“建筑的永恒之路”更深入地探讨了动机和目的的工作。 “图案”和“图案语言”的以下定义从A图案语言中解释:

“一种图案是对建筑环境中一个反复出现的问题的长期解决方案的细致描述,描述了为建筑物带来生命的配置之一,每种图案描述了一个在我们的环境中反复出现的问题,然后描述解决这个问题的核心解决方案,以便您可以使用超过一百万次的解决方案,而不需要两次完成相同的操作。“

图案语言是互相呼叫的图案网络。 图案帮助我们记住有关设计的见解和知识,并可以结合使用来创建解决方案。

应用程序域
克里斯托弗亚历山大的想法已被其他学科所采用,通常比图案语言在书中描述的最初的图案应用更为重要。 最近的例子包括软件工程中的软件设计图案,更普遍的是计算机科学中的架构图案,以及交互设计图案。 教学图案被用来记录教学中的良好实践。 “释放声音:传播革命的图案语言”一书包含了使用信息和通信促进可持续性,民主和积极的社会变革的136种图案,并于2008年出版了一个包含更多图案的网站。 2011年发布了“集体作品:为会议和其他聚会带来生活的图案语言”。最近,图案也引入到系统架构设计中。 国际象棋的策略和策略涉及从开放到囚犯的多种图案。

维基的发明者Ward Cunningham与Michael Mehaffy合着了一篇论文,认为维基与图案语言之间存在着深厚的关系,维基“实际上是作为工具开发的,以促进图案的有效共享和修改”。