架构一词是舶来品,是architecture的中文翻译, 其英文的本意是来源于建筑行业的建筑艺术、建筑(风格)和结构,引入到软件领域里面来以后,并没有一个统一的定义。有的人将架构定义为:功能+设计+构造手段,我们可以通俗的理解为:总体设计和总体结构。
买过房子的人都知道5层以下的楼房一般是砖混结构,而高层和小高层的楼房都是框架结构,楼层越高对结构要求越高。软件也是一样,系统越庞大,生命周期越长,结构的重要性就越明显。因此,随着人们对软件工程的深刻理解,将架构进行充分的强调是很自然的,正如人们越来越强调系统的需求分析,从而有了领域工程师和领域专家的概念一样。其实强调软件架构的最主要的目的有3个:
重用:人们希望系统能够重用以前的代码和设计,从而提高开发效率;
扩展:人们希望在系统能够保持结构的稳定的前提下很容易地扩充功能和性能,希望能够"以静制动";
简洁:常言道,简洁就是美,好的架构一定易于理解,易于学习,易于维护,人们希望能够通过一个简洁的架构来把握系统;
正如我们可以很简单地用砖混结构和框架结构来概括一幢大楼的结构,专家们也定义了一些术语来定义软件的架构风格,如层次结构、B/S结构等。软件架构设计是软件设计的一部分,是其中的总体设计。软件的架构设计有一定的创造性,但它毕竟是一个工程活动,架构的设计是有章可循的,有一定的规律性的,是可以重复的,有其稳定的模式。当然,在系统一开始很难可以建立一个完善的稳定的架构。迭代是软件开发过程中必然的一个过程,这是人的思维活动的一个必然阶段。
软件架构师实际上就是软件的总体设计师。首席设计师就是总设计师,打个通俗的比方:邓小平是中国改革开放的总设计师,我们用现在的说法可以讲,邓小平是中国改革开放的首席架构师。架构师的形成一定是在实践中积累起来的,而并非上了几次培训班,读了几本书就可以成功的,架构师是在工程实践中培养出来的!
架构师也并非是万能的。架构师是客户需求和开发者之间的桥梁。在软件行业中,一般提到的架构师是技术架构师,而忽略了领域架构师或者讲是领域工程师的概念。一个好的领域专家一定是业务领域的架构师,他能够给出某一个业务领域的架构,我们可以称为业务架构,只有技术架构和业务架构紧密结合才有可能真正创造出一个好的系统!
[转自:http://www.sawin.cn/doc/SD/Architect/blueski137.htm]
本文链接 https://yanbin.blog/talk-software-architec/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。