《实用软件架构:从系统环境到软件部署 》——第2章 软件架构是什么?为什么需要做软件架构2.1 背景知识


第2章 软件架构是什么?为什么需要做软件架构

除非我信它,否则不可能全身心地投入其中。

如果你已经读到了这里,那么你应该是真心想要成为一名“务实的软件架构师”。我们不能仅仅把这个名号挂在嘴边,而是要在实际的软件与系统开发工作中运用这套理念做出优秀的产品。

软件架构师的做事风格多种多样,而且通常都很有意思。有的架构师喜欢做宏观的思考,喜欢随便拿一张纸画上几笔,或是在白板上画一些方框和线条,而且那些方框看上去好像长得都不太一样。有的架构师不先把宏观的架构情况了解清楚,就急着去研究细节问题。还有一些架构师则在这两种风格之间徘徊不定。因此,我们有必要澄清与软件架构相关的一些问题,以便形成一个大家都容易接受的理解方式,并且使大家对成功的软件架构师所担负的职责,有一个清晰的了解。

本章将会给出软件架构的一些背景知识,以及一些能够促使我们去做好架构工作的成熟价值理念。到本章结束时,我想大家应该能对软件架构中的一些关键元素具有清晰的认识。我们都是务实的软件架构师,我们要把实用的软件架构理念加以阐发,并在实践中将其推广开来。

咱们做一件写着The PSA(发音是“thepsa”)的T恤穿上,怎么样?

2.1 背景知识

软件架构作为一门学科,已经有四十多年历史了,早期的软件架构,可以追溯到20世纪70年代。后来,由于系统开发工作变得更加复杂、更加关键,而且更加强调实时性,因此软件架构也得到了更为广泛的运用,并且成为主流的系统工程和软件开发工作中的基本内容。

与其他那些持续发展的学科一样,软件架构在诞生之初也面临着一些挑战,而且直到今天,也没有能够把所有的疑难全都解决掉。早期的软件架构师会用一些图表和文字来描述系统的结构及行为,但是他们在描述时所采用的这些办法,其清晰程度、一致程度和精确程度都不够高,而且也缺乏条理。软件架构的内容和工件,有各种各样的表示方法和记录方法,当年的架构师,想要寻找一种协调而易懂的伪语言(pseudo-language)或元语言(metalanguage),以便将这些表述方法统合起来。在学术研究的促进下,系统工程和计算机科学界的工作者取得了巨大的进步,他们提出了一些行之有效的做法和指导原则,使得架构师可以对软件架构的内容做出适当的表述,以便与利益相关者就架构的成果进行有效的沟通。

时间: 2024-10-26 00:56:06

《实用软件架构:从系统环境到软件部署 》——第2章 软件架构是什么?为什么需要做软件架构2.1 背景知识的相关文章

《实用软件架构:从系统环境到软件部署 》——导读

        前言  软件架构这个学科已经有半个世纪的历史了.此概念于20世纪60年代引入,它的灵感来源于建筑物的架构,其中涉及在开始盖楼之前拟定的一些蓝图,这些蓝图描述了建筑师对建筑物的结构所制定的设计方案与规格说明.建筑物的蓝图给出了建筑物在功能方面的设计方案,也就是楼层的空间布局示意图,以及每个建筑工件(例如门.窗.房间.浴室.楼梯等)的尺寸.在使建筑物得以运作的那些方面,蓝图也提供了详细的设计方案,例如承载建筑结构的地基.电线.水管和输气管道的设计,以及下水道系统等,要想使建筑物的功能

《实用软件架构:从系统环境到软件部署 》——2.3 为什么需要做软件架构

2.3 为什么需要做软件架构 笔者是这样一种人:除非我能确信自己真的需要去做某件事,并且了解它的重要性和价值,否则,我就很难全身心地投入其中.如果读者也是这样的人,而且你也想了解软件架构的价值到底体现在哪里,那么就请继续往下看吧. 本节将会给出一些理据,来说明软件架构的重要意义.笔者之所以会极其热衷地从事架构工作,正是由于这些理据能够使我感到信服. 2.3.1 把架构视为交流工具 软件架构是一张蓝图,IT系统的设计.构建.部署.维护及管理,都要依照这张蓝图来进行.很多利益相关者都想对系统架构有一

《实用软件架构:从系统环境到软件部署 》——2.2 软件架构是什么

2.2 软件架构是什么 系统工程领域中的很多研究团体和个人,都对软件架构给出了自己的解读,他们从不同的视角阐述了怎样才能把软件系统的架构较好地表示出来.这些解读方式或视角,都有其合理的地方,它们本身并没有问题.笔者认为,Bass.Clements和Kazman (2012)给出的解释抓住了软件架构的本质: 程序或计算机系统的软件架构,指的就是系统的结构,该结构由软件组件.外部可见的组件属性,以及它们之间的关系而构成. 那么,这个定义意味着什么呢? 这个定义想要强调的意思,是说软件架构由粗粒度的构

《实用软件架构:从系统环境到软件部署 》——2.5 小结

2.5 小结 人类必须首先确信自己所从事的工作是有价值的,然后才能全身心地投入其中,我们必须首先确信自己所做的工作会有成效,然后才有热情去做好这份工作. 笔者在本章中向大家阐述了自己的想法与信念,笔者认为软件架构是有价值的.因为软件架构是否明确,与软件系统能否成功之间是有着一定关系的.于是,笔者就给出了软件架构的定义(软件架构是什么?),并且强调了它的价值(为什么需要做软件架构?) 本章还介绍了架构视图与架构视点这两个概念,并且简要地描述了一套笔者经常会参考的视点库. 第3章将要强调软件架构中的

《实用软件架构:从系统环境到软件部署 》——第3章 恰到好处地把握架构中的重要方面3.1 软件架构中需要关注的一些方面

第3章 恰到好处地把握架构中的重要方面 你把边界定好,看我怎么在里面大显身手. 第2章强调了一些理由,那些使我们确信:凡是要开发具有一定规模的系统,就必须要重视该系统的软件架构工作.看完该章之后,读者可能会去详细地了解各种架构视图和架构视点,或是去阅读不同的软件架构学派就软件架构中的其他一些方面所写的文章.现在,你可能会想:"架构中最需要关注的是哪些方面呢?我应该从哪里入手呢?面对下一次架构工作,我是否能有充足的准备呢?"能够想到这些问题,那是相当自然的事情. 这是一本注重实效的书,笔

《实用软件架构:从系统环境到软件部署 》——2.4 架构视图与架构视点

2.4 架构视图与架构视点 以软件架构为论题的书籍.文章.研究项目及相关刊物,都会带有各自的观点.不同的流派对架构有不同的看法,他们会按照各自的看法来做架构,并会将各自的做法加以推广.就本书的主题来说,笔者并不打算专门用一个章节把与软件架构有关的各种观点全都讲解一遍,而是只想展示下面的这种观点,因为笔者觉得它比较务实,而且运用起来较为流畅. 视图和视点 Philippe Kruchten (1995.11)率先开始使用视图(view)与视点(viewpoint)这两个概念,来表达业界对软件架构的

《实用软件架构:从系统环境到软件部署 》—— 3.2 小结

3.2 小结 做事恰到好处,是一种极其难得的境界,很多行业的工作者都缺乏这种智慧. 笔者在本章只是确定并(非常简短地)描述了架构中的某些方面,它们是软件架构开发工作得以成功的必要和充分条件. 首先我们要从系统环境方面来考虑,把IT系统当成一个黑盒,并且只描绘出这个黑盒与外部的其他应用程序及系统之间的连接和信息交换情况.架构概述可以展示出系统架构中的构建块(ABB),并使架构师可以由此对系统的内部情况有一个初步的了解.功能模型使得架构师可以看到架构的子系统视图,该视图不仅能够对各项功能进行系统化的

《实用软件架构:从系统环境到软件部署 》——第1章 案例研究1.1 业务问题

第1章 案 例 研 究 我这个人专门解决难题,有什么事尽管拿来问! 生活脱离了环境,就如同船没有了帆.环境使得我们可以专注于手头的工作,它能给人一种方向感,也能给人提供一个理由,使我们觉得完成某件事情是值得的.信息技术(IT)和计算机工程等领域中的架构也是如此,它同样需要有一个存在的理由.我们必须对架构进行实例化,必须按照需要将其实现出来,以解决实际的问题. 笔者将在本章中描述一个虚构的案例,以演示问题的陈述.尽管笔者不会明确宣称它与某个真实案例有所对应,但读者在工作中或许真的就会遇到这么一个类

《实用软件架构:从系统环境到软件部署 》——1.2 小结

1.2 小结 要想把软件开发的各个部分全都维系起来,IT系统的架构可以说是至关重要的一个元素. 在解决当前的问题时,我们经常容易采用过于庞大.过于宽泛的理论来描述它,即便是专业的软件架构师和系统开发者,也有可能会陷入这种状况中.因此,软件架构师在解决问题时,通常应该先缓一步,仔细想一想:我是不是把这个问题解释得太复杂了?我是不是把这个问题推广得过于宽泛了?我是不是对IT系统的架构做了过多的处理? 通过进行案例研究,我们可以为待解决的问题创造一种环境,并为其划定边界,这样做使得我们能够专注于目前所