软件设计的风格

1

风格对于软件系统,犹如文化对于人类社会,对于组成系统的各个要素(无论模块、组件、对象还是函数),都会施加影响,只要是在运用该风格的边界范围之内。

这种风格影响如文化烙印一般,体现出一种强烈的一致性。当然,一旦选错了风格,那就好像17世纪中,五月花的落魄船员们闯入了印第安人的部落,可能会是混乱、风格的格格不入。

2

Roy Fielding对风格的定义为:

风格是一种用来对架构进行分类和定义它们的公共特征的机制。每一种风格都为组件的交互提供了一种抽象,并且通过忽 略架构中其余部分的偶然性细节来捕获一种交互模式(pattern of interation)的本质特征。

这个定义有两个关键词:

  • 分类
  • 共同特征

这两个关键词皆与抽象有关。

同时,这句话还提及了风格与协作之间的关系,即它是对协作的抽象。架构风格应不涉及详细设计细节,需要找出那些稳定不变的本质特征,且这个特征是与系统的目标与需求是相匹配的。

3

Roy Fielding在论文《架构风格与基于网络的软件架构设计》中写道:

网络研究则恰恰相反,集中于系统之间普通的通信行为的细节和提高特殊通信技术的性能,却常常忽略了一个事实,即改变一个应用的交互风格对于性能产生的影响要比改变交互所使用的通信协议更大。

这事实上体现了宏观架构与微观架构之间的关系,二者应该保持一致。当然,宏观架构的影响是战略的影响,微观架构的影响是战术的影响,在分而治之的架构原则下,微观架构产生的影响虽然存在,但影响主要还是发生在局部。

4

画出自己的边界线,在边界之内保证风格的一致性。边界外,看待风格的一致性又有另外的标准。

风格对设计起指导作用,并由此驱动对一系列架构属性的满足。架构属性还包括对架构的约束,这些约束一方面能够对设计与实现进行规范,另一方面也可以减少选择项,让设计变得更为简单。

5

一种架构风格是一组协作的架构约束,以及在任何一个遵循该风格的架构中允许存在的元素之间的关系。

将风格视为约束是合理的,但约束更像是对一个封闭的大的集合中的裁剪,规定你不能做什么。风格不仅要规定你不能做什么,还要告诉你应该做什么,它要处理的是一个开放的大的空间,我们需要找到该空间内和谐的内容,并把不和谐的部分剔除出去。剔除出去的这部分内容其实就是违背了架构约束的内容。

架构风格强调的是软件架构的不同方面,一种特定的架构可能有多种架构风格组成。这就体现了架构风格是有层次的。

为了保证架构的一致性,需要在整体层面体现为统一的架构风格,而在不同边界内,展现另外的架构风格。换言之,这种风格的多样性与隔离性,以及风格的层次其实是与架构的层次相对应的。

6

对于设计风格而言,除了要保证风格的一致性外,关键的是要找到一种与正在解决的问题最为匹配的风格。

要了解自己需要解决的问题,同时还要了解不同的架构风格的特征与优缺点,清楚地知道这些架构风格究竟适合处理哪种场景。

原文发布于微信公众号 - 逸言(YiYan_OneWord)

原文发表时间:2017-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

贾扬清:希望Caffe成为深度学习领域的Hadoop

3804
来自专栏CDA数据分析师

一名合格的机器学习工程师需要具备的5项基本技能,你都get了吗?

你是否对机器学习充满兴趣呢?其实到目前为止,每天有越来越多的工程师开始将好奇的目光转向机器学习领域。实际上,你会发现现在没有哪一个领域比机器学习能引起更多的曝光...

1979
来自专栏CSDN技术头条

携程:机器学习在酒店服务领域的实践

在携程技术中心推出的线上公开课程[携程技术微分享]上,携程酒店研发BI经理潘鹏举介绍了如何借助大数据和算法,通过机器学习去克服酒店服务行业挑战。目前的应用主要包...

3478
来自专栏数据派THU

手把手教你用Kaggle开启机器学习之旅(附资源链接)

本文分析了Kaggle利于数据科学领域新手学习的几点特征,并带你学习ML相关知识。

1792
来自专栏华章科技

干货丨3分钟了解今日头条推荐算法原理

今日头条的内容分发算法一直颇神秘低调。自12年开发运营起进四次改版,从未透露核心内容。

1802
来自专栏机器学习算法与Python学习

今日头条推荐算法详解(PDF下载)

源 | AI研习社 编辑 | 昱良 内容较长 点击阅读原文即可下载 ? 今日头条资深算法架构师曹欢欢: ? 本次分享将主要介绍今日头条推荐系统概览以及内容分析、...

2.7K10
来自专栏PPV课数据科学社区

[译文]机器学习不是数据科学

对于很多人来说,机器学习就是数据科学。在我这道这两个术语的含义之前,我也简单的认为数据科学只不过是机器学习一个流行的叫法而已。过了一段时间,再次考虑这个问题的时...

4094
来自专栏程序员宝库

今日头条算法原理(全)

▲3分钟了解今日头条推荐算法原理 今天,算法分发已经是信息平台、搜索引擎、浏览器、社交软件等几乎所有软件的标配,但同时,算法也开始面临质疑、挑战和误解。今日头条...

4997
来自专栏人工智能快报

IBM正在研制通用型深度学习芯片

深度学习领域仍在不断发展,特别地,专家们认识到如果芯片能够使用低精度的计算方式得出近似答案,神经网络就可以用很少的资源完成大量的计算。这在移动设备和其他功率受限...

1132
来自专栏大数据挖掘DT机器学习

达观数据个性化推荐系统应用场景及架构实现

在当今DT时代,每天都在产生着海量的数据,移动互联网的兴起更是让我们体验到获取信息是如此的简单和方便。 同时,更多的选择也带来更多的困扰,面对层出不穷的信息和...

4934

扫码关注云+社区

领取腾讯云代金券