面试官:你知道软件架构存在的意义是什么吗?

1,335 阅读2分钟

软件架构设计的关注点在于“变化”两个字。软件架构无时无刻都存在被各种外界的“变化”侵蚀的可能性。无论设计多么清晰,明了的架构也有可能在外界的狂风暴雨后,变成一团解不开的缠绕的线。

image.png

著名计算机科学家,统一建模语言(UML)的开发者Grady Booch于2006在IBM社区"On design"曾提及“软件架构”:

Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.

架构代表形成系统的重要设计决策,其中重要的设计决策由变更成本来衡量。架构的定义,如图所示。

image.png

做出决策

“决策”包括确定问题、设计方案、选择方案和达成目标等多个步骤。

Grady Booch描述架构中的“决策”指代的就是系统的组织决策,系统中元素的协作决策,系统的行为决策等。

微软公司创始人比尔·盖茨先生曾在访谈时表示,他在编写代码之前,会先系统设计方案整体考虑清楚,对于程序设计而言,数据结构是最重要的一部分,其次是各种代码块的设计。这一切都依赖于在编程前的系统设计,系统设计将帮助你决策问题,使你能时刻保持警觉,减少代码被不良因素干扰的可能。

image.png

“变更成本”代表的就是在软件系统在应对业务等外界条件带来的变化所付出的成本。变更成本通过“软件熵(Software entropy)”来体现。

降低软件熵

软件熵,即代表在软件不断修改以后,软件系统的混乱无序程度。

瑞典计算机科学家Ivar Hjalmar Jacobson对“软件熵”的定义为:

热力学第二定律说明在一个封闭系统内的无序程度不会下降,只会上升或维持定值,其无序程度可以用熵来表示。此定律似乎也可适用在软件系统内,在系统经过修改后,其无序程度(或称为熵)会上升,这可称为“软件熵”。

所以,在敏捷开发如此流行的今天,软件架构的本质即在于设计系统的结构,为系统的形成提供决策,以达到提升系统质量,使得系统更加有序,减少“软件熵”的目的。

image.png

想全面系统地了解计算机软件架构的知识,还可以参考《移动开发架构设计实战》,掌握架构体系知识。

image