在20世纪60年代计算机刚刚出现的时候,硬件的成本要远远高于软件上的开销。但在40多年后的今天,这种状况发生了翻天覆地的改变。
业界的不断努力让硬件成本有了大幅的下降,而软件开发上的开销却有了很大程度的增加,其最主要的原因是自定义企业级软件开发复杂度的提升。廉价的硬件成本让公司更加有理由为其信息系统添加新功能。原本只有一些独立、互不干涉的应用程序,并且这些程序很少共享数据,而今却变成了一个复杂的系统,其中包含有很多互相关联而又各司其职的功能和模块。
在这种情况下,我们迫切需要一系列能够指导工程师开发此类系统的原则。当代的软件系统——或者参考国际标准,叫做软件密集型系统可以很自然地与那些要从详细设计图开始的复杂建筑工程相提并论。
“架构”一词起源于建筑工程,现在已被用于描述规划、设计并实现软件密集型系统的艺术。在软件领域中,架构对于艺术性的要求却没有建筑中的那么高。良好设计的建筑物既给人带来强烈的视觉震撼,同时也能满足使用者的功能需要。而软件设计的评价则更加客观一些——要么是满足了需求,要么是没有满足。设计者一般不会考虑艺术性,除非这艺术性体现在某个精心设计的算法或用户界面之上。
本书的一个作者曾经与一个架构工作室有着密切的来往。有一天,在讨论时遇到了这样一个问题:什么是架构?是一种艺术,还是仅仅为了满足客户的需求?
在软件领域中,架构就是指为客户构建系统。
展开