[CTO札记]杂论架构

一、架构的含义

许多人对什么是架构或者架构设计包含什么内容比较模糊。我就来说上几句。

‘什么是架构’涉及定义,需要精确性,难免会有争论。不过,以下几个理解估计共鸣者不少。

1、架构是一种设计

我们平时说‘张三,你做一下架构设计;李四,请将架构(设计)图给我看一下’,总是将架构与设计关联使用。事实上,英文表述是‘Architecture Design’,也是这个意思。

那么,已经有了‘设计’,为何还要‘架构’这个新名词呢?之所以将‘架构’单列出来,其实是跟软件的规模越来越大有关。

盖一个民房不大需要设计,那些5个人的小施工队就可以搞定;或者盖个6层楼的小高层,简单的设计完全足够了;但是,建个金茂大厦、东方明珠什么的,恐怕没有精心的设计是不行的。

类似地,软件设计领域也早已经从单机应用,走向C/S应用,互联网应用,海量系统。随着复杂性的增强,通常意义上的设计已经不能应付了,需要总体设计、系统设计,所以专业化地提出了‘架构设计’这个词。

 

2、架构是高层设计

软件工程中有个基本方法叫‘自顶向下、分而治之’。架构设计就是高层设计,与以前的名词‘系统设计’是一致的。而我们平时说的设计(非架构),可以理解为‘详细设计(Detail Design)’。

所以,千万别把某个类的设计、某个API的设计叫作‘架构’。

 

二、架构的内容或分类

不少人以为架构就是指软件逻辑设计,事实上就象盖高楼一样,除了主体建筑设计,还有强电、弱电、供水、通风、装修设计。

软件架构通常包含以下内容(也可称为分类):

通常意义上的架构,较多是指某一应用的(软件)架构,但又绝非简单的数据架构或者逻辑架构。

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)架构师是全才

贝聿铭最善长的是主体建筑设计,但不见得精通强电、弱电、供水、通风的设计;即使某些方面也懂,但没有人会认为他是那方面的大师。

 

这2条意见,可以让你的招聘更有效。

 

===== by 鬼谷子@魔教,更多内容在 http://DavyYew.BlogBus.com ======

http://Yewsoft.BlogBus.com

你可能感兴趣的:([CTO札记]杂论架构)