第2章 软件架构是什么?为什么需要做软件架构
除非我信它,否则不可能全身心地投入其中。
如果你已经读到了这里,那么你应该是真心想要成为一名“务实的软件架构师”。我们不能仅仅把这个名号挂在嘴边,而是要在实际的软件与系统开发工作中运用这套理念做出优秀的产品。
软件架构师的做事风格多种多样,而且通常都很有意思。有的架构师喜欢做宏观的思考,喜欢随便拿一张纸画上几笔,或是在白板上画一些方框和线条,而且那些方框看上去好像长得都不太一样。有的架构师不先把宏观的架构情况了解清楚,就急着去研究细节问题。还有一些架构师则在这两种风格之间徘徊不定。因此,我们有必要澄清与软件架构相关的一些问题,以便形成一个大家都容易接受的理解方式,并且使大家对成功的软件架构师所担负的职责,有一个清晰的了解。
本章将会给出软件架构的一些背景知识,以及一些能够促使我们去做好架构工作的成熟价值理念。到本章结束时,我想大家应该能对软件架构中的一些关键元素具有清晰的认识。我们都是务实的软件架构师,我们要把实用的软件架构理念加以阐发,并在实践中将其推广开来。
咱们做一件写着The PSA(发音是“thepsa”)的T恤穿上,怎么样?
2.1 背景知识
软件架构作为一门学科,已经有四十多年历史了,早期的软件架构,可以追溯到20世纪70年代。后来,由于系统开发工作变得更加复杂、更加关键,而且更加强调实时性,因此软件架构也得到了更为广泛的运用,并且成为主流的系统工程和软件开发工作中的基本内容。
与其他那些持续发展的学科一样,软件架构在诞生之初也面临着一些挑战,而且直到今天,也没有能够把所有的疑难全都解决掉。早期的软件架构师会用一些图表和文字来描述系统的结构及行为,但是他们在描述时所采用的这些办法,其清晰程度、一致程度和精确程度都不够高,而且也缺乏条理。软件架构的内容和工件,有各种各样的表示方法和记录方法,当年的架构师,想要寻找一种协调而易懂的伪语言(pseudo-language)或元语言(metalanguage),以便将这些表述方法统合起来。在学术研究的促进下,系统工程和计算机科学界的工作者取得了巨大的进步,他们提出了一些行之有效的做法和指导原则,使得架构师可以对软件架构的内容做出适当的表述,以便与利益相关者就架构的成果进行有效的沟通。