一、架构的含义 许多人对什么是架构或者架构设计包含什么内容比较模糊。我就来说上几句。 ‘什么是架构’涉及定义,需要精确性,难免会有争论。不过,以下几个理解估计共鸣者不少。
1、架构是一种设计 我们平时说‘张三,你做一下架构设计;李四,请将架构(设计)图给我看一下’,总是将架构与设计关联使用。事实上,英文表述是‘Architecture-Design’,也是这个意思。
那么,已经有了‘设计’ ,为何还要‘架构’这个新名词呢?
之所以将‘架构’单列出来,其实是跟软件的规模越来越大有关。盖一个民房不大需要设计,那些5个人的小施工队就可以搞定;或者盖个6层楼的小高层,简单的设计完全足够了。
2、架构是高层设计 软件工程中有个基本方法叫‘自顶向下、分而治之’。架构设计就是高层设计,与以前的名词‘系统设计’是一致的。而我们平时说的设计(非架构),可以理解为‘详细设计(Detail Design)’。
二、架构的内容或分类 不少人以为架构就是指软件逻辑设计,事实上就象盖高楼一样,除了主体建筑设计,还有强电、弱电、供水、通风、装修设计。 软件架构通常包含以下内容(也可称为分类):
通常意义上的架构,较多是指某一应用的(软件)架构,但又绝非简单的数据架构或者逻辑架构。
1)业务架构(BA,Business Architectue) 最容易被大家忽略(甚至于许多技术人员不认可)的是‘业务架构’。–周爱民同学去支付宝,角色就是‘业务架构’。 但是千万别忽略的这个‘业务架构’,因为它是其它3个架构的引导。业务架构的核心是整理业务需求,列出功能,描述出业务蓝图。 为了实现这个业务蓝图,就需要转换成应用的软件架构,通常由二部分表述:逻辑架构、数据架构。
2)逻辑架构(LA,Logical Architectue) 通常用领域模型来表述。
3)数据架构(DA,Data Architectue) 数据架构设计就是决定数据的内存与存储形式,主要是指后者。以前我们称为数据存贮设计。 单机软件时,只需要设计数据结构;随着C/S系统的出现,主要是DBSchema设计;随着大型互联网的出现,数据变成海量,让系统更具备scalability就显得异常重要–这就是数据架构(DA)。–大辉同学之前就是支付宝的DA。
4)物理(总署)架构(PA,Physical Deployment Architectue)
三、一些误解 1)架构师是编程高手。 所有人都承认贝聿铭是伟大的建筑设计师,但没有人认为他是个
2)架构师是全才 贝聿铭最善长的是主体建筑设计,但不见得精通强电、弱电、供水、通风的设计;即使某些方面也懂,但没有人会认为他是那方面的大师。
这二条意见,对招聘有用。 |