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