标签:朴素 自身 交互 不同类 情况 精通 区别 简单 完成
设计(design)、架构(architechure)、框架 (framework)之间是个什么关系?请描述一下?
在探讨题目问题之前,我们从设计开始聊聊。
其实我们每个人都在做设计,无论我们是在哪个行业,哪个层次,哪个职位。
对于软件系统领域来说:
这里各个层次的设计都有一个朴素的设计理念,那就是 提供抽象接口以此与外围交互、封装具体变化以此在内部独立演进。这个是我们完成某项复杂任务而组织的大型工程里的一个基础理念。
刚刚讲的是软件系统领域的设计,但其可扩展到各个领域,如人的系统、建筑的系统、小说的系统等等。
当然,进行高层设计的人能融汇贯通其相关底层子系统的知识当然最好,但是大多数情况下,我们做不到,因为我们现在组织的系统的层级太多太深了。
举个例子,我们设计的业务代码在编译后能借助操作系统的能力协调CPU、内存及IO一起完成业务代码的执行,但是设计业务代码的人,不一定能知道CPU的流水线是怎么运作的、内存屏障是如何协调多个核心与内存的、数据具体是怎么传输到其他机器的。
再举个例子,某个大型公司CEO可能不懂编码,但其手下有不同类型的大将,包括懂技术的人才,因此CEO只要组织设计一个团体能覆盖其知识盲点,就能管理好整个公司,包括整个公司的各类软件系统。
从上面我们可以看到在做高层设计与做底层设计的人的能力是无法直接比较的,因为他们的能力栈可能完全不一样,无法简单地进行比较。
但通常的套路下,做高层设计的都是从底层设计的人才中转岗(叫提拔、晋升不一定合适,有时候底层设计的人才更为稀缺)而来的,因为只有你的设计能力在影响不那么大的层次经过验证后,才放心让你到更高层次进行设计。
实际上架构是一种设计。
架构设计规定了主要组件间一些较大层次的约束与规范,一些较小层次的设计在这些约束与规范下进行的话,能最大限度地满足某些方面的特性,如可阅读性、可靠性、可扩展性、安全性等等。
举个例子,我们在设计一个屋子的时候,房间、厅、厨房等可以想象为架构,我们在进行软装的时候,是不能改变原有的设计的,不然随便敲墙容易造成安全隐患。但我们能控制软装的,形成风格各异的房间。
当然,设计层次的大小是相对的。在刚刚例子里一个屋子里的房间布局是架构。但往上看,在一个街区的架构设计里,一个屋子的内部房间布局仅仅只是一个较小层次的设计,其不会影响整个街区的规划。
因此,架构这一个词,应该存在于各个层次。就像我们在写代码时,运用各种设计模式,如责任链等,规定编写代码所使用的方式,以开闭原则保证代码稳定性及可阅读性时,我们就已经是这段可扩展的代码的架构师了。
框架是架构的一种实现。
例如MVC这种架构设计(架构是每个层次都存在的),分离了不同类型代码的关注点,使得代码更为清晰及更易维护。
而各类MVC框架则实现了这种架构,只要我们基于这个框架扩展实现我们的代码,那么我们就能写出符合MVC架构规范的代码。
同时,在这里我们需要额外理清楚的一件事情是框架(framework)与库(library)的区别。我觉得以下这幅图很好地说明了这个区别。
本文是基于目前个人理解而成,若文章有谬误,望不吝批评斧正;若本文对大家有所帮助,望不吝点赞。
多年金融码农,现为某信用卡中心架构师,EasyTransaction作者,欢迎关注
ref:
标签:朴素 自身 交互 不同类 情况 精通 区别 简单 完成
原文地址:https://www.cnblogs.com/skyesx/p/10206455.html