软件架构原则注记

缘起

对于一个成熟的程序员而言,软件开发中遇到所有问题,最终都是架构问题。

这个月看了两本书《Clean Architecture》和《The Art of Unix Programing》,为了追求速度看的都是中文版,中间为了保证翻译质量还翻了翻英文原版。《Unix编程艺术》翻译的质量很高,这本书特别不好翻译,看原文很吃力。

软件架构

软件架构的整体目标:降低软件的整体复杂度(Overall Complexity)。

在这样的基础前提下我们看看软件架构整体原则和手段。在看架构的时候,有些书阐述的是原则,有些书更加着重于手段。从根本上讲是同一个东西的不同侧面。

模块化

这个在架构上已经是通识了,也是应对复杂的直接和有力的手段。模块化如果上升到原则层面可以描述为:高内聚和松耦合。通过什么样的指导原则或者手段来划分模块呢?

需要注意的就是模块化是有成本的。抽象的成本是会蠕变,其次通信的成本。在应用模块化的时候需要检测这些成本,过犹不及。

抽象是会蠕变的,有可能让系统剩下的部分变的不那么清晰。这个可以称之为蠕变(creep)或者说是背负(carry on)成本。

依赖管理-让不稳定的依赖于稳定的

这里在架构上也是通识,但在实现中花样有点多。也不是很容易理解。常见的依赖管理手段

透明性

这一点在架构上没有得到足够的重视,即使是很小的项目,简单的代码,也要保证其透明性。通常通过下面手段来保证架构的透明性

数据为王

在架构中,数据为王。这个被严重低估和忽视了。

程序性能是个功能选项(Performance is a feature)

@ 2020-09-16 10:07

Comments:

Sharing your thoughts: