共计 849 个字符,预计需要花费 3 分钟才能阅读完成。
在过去几年里,关于设计和架构存在很多疑问。什么是设计,什么是架构,两者有什么不同?本书的其中一个目的就是消除所有的困惑,并且彻底地给一个确切的定义,设计和架构是什么. 对于初学者来说这两者没有区别,一点也没有
架构这个词经常被用在一些高级别的,与低级别的细节分离的上下文当中. 而”设计“经常看起来暗示在低级别的决议和结构。但是当你看到架构师做的架构,这种说法又是荒谬的。
思考一下,假如架构师设计你的房子,这个房子有架构吗?当然有。那它的架构又是什么呢。是它的形状,外貌,立体面图,空间和房间的布局。但是当我浏览架构师画出的图。我看到了大量的低级别的细节实现,我看见每一个插座,电灯开关,电灯被标注出来。我看见哪些开关控制哪些电灯。我看到了放置火炉的位置,热水器和抽水泵的大小和位置都被标注了出来,我看见了墙,屋顶,地基将如何被搭建
简而言之,我看见全部的支持顶层决策的底层细节,也看见了底层细节和顶层决策是整个房屋设计的一部分.
所以这就是软件设计,底层细节和顶层结构是相同物体的一部分. 它们组成了一个连续的,能定义系统形状的构造物。两者缺一不可。两者没有明确的分割线,
软件设计的目标
好的软件设计的目标和我乌托邦式的描述一模一样。软件架构的目标是用最少的人力资源搭建和维护要求的系统。设计质量的权衡也就是满足用户需求所付出的成本的权衡. 如果成本很低,并且至始至终都很低。这就是一个优秀的设计。如果成本很高,而且每次发布新版本,成本逐渐上升。这种设计就比较差。很简单。
实例学习
举个例子,思考下接下来的实例学习。它包含了来自匿名公司的真实数据,首先,让我们看看工程师的增长,我敢肯定你你会觉得这个倾向很振奋人心。
让我们看看该公司同时期的产出,靠代码条形图来衡量
很明显有些东西正在变糟,即使每个版本都有在逐渐增加的工程师支持,但代码的增长接近不对称. 现在来看一张图,这张图展示了每行代码的维护成本
这种倾向不是可持续发展的,不管此刻公司是多么盈利。是什么造成了这种明显的变化,为什么代码从第 8 版到第 1 版贵了 40 多倍