什么是软件架构
在如今社会中到处都能够看到计算机的身影,不不过数据中心的桌面上,甚至在汽车、洗衣机和信用卡上。这些计算机不管体积大或小、结构简单或者复杂,全部的计算机都是由三个基本组成部分:硬件、软件和数据。当我们研究计算机系统的时候,首先要了解的就是计算机的组成部分的功能,以及各个部分是怎样在一起工作的,换句话讲就是研究计算机的架构。通常我们认可的对计算机架构的概念是由坐落在匹兹堡的卡耐基-梅隆大学的软件体系结构研究所定义的。
该组织定义:一个软件系统的体系结构。包含软件元素,软件元素之间的关系。以及这些元素的外部可见特性。接下来让我们详细了解一下定义中的两个关键部分,即系统的结构和其外部可见性。
系统结构
对软件架构师来讲。系统结构包含静态(设计时的组织结构)和动态(执行时的组织结构)两个方面。
静态的体系结构,定义了内部元素的设计和元素的排列。
它告诉我们设计时的组织形式和软件元素是怎样组织的。内部元素包含:
内部软件元素能够是模块、类或包、存储过程、服务或者其它独立的代码单元。
内部数据元素能够使类、关系数据库的实体或表、数据文件等。
内部硬件元素包含计算机或其它组成部分(如磁盘或者CPU)。
内部网络元素包含电缆、集线器、路由器等。
以上这些内部元素之间相关关联、相互依靠,共同构成了我们的软件体系结构。
动态的体系结构,定义了系统执行时的元素和他们之间的相互作用。它说明了系统是怎样工作的,系统执行时发生了什么,怎样响应外部请求等。元素之间的相互作用能够是信息在元素之间的流动。能够是并行或顺序执行的任务,也能够是元素对于数据的影响。
外部可见性
外部可见性主要包含两个方面,一个是外部可见的行为(系统做了什么)。还有一个是质量特性(系统怎样做)。外部可见的行为能够告诉我们一个软件系统从外部观察者的角度是什么。即告诉我们系统与环境之间相互作用的功能是什么。
这些相互作用的功能包含系统内外信息的流动。系统对外部请求的响应,对外提供的约定和API等。
外部行为即对待系统的方式,我们能够将系统的看做一个黑盒子。外部行为不须要考虑和知道内容的实现,只须要知道系统内部完毕了哪些功能和处理。
质量属性能够告诉我们一个系统的行为从外部观察者的角度是什么。即告诉我们系统的外部可见的非功能特性,如性能、安全和可伸缩性。
质量属性所关注的范围包含系统怎样在较低的负载下执行。特定硬件的吞吐量在峰值的是什么。怎样防止系统的恶意使用,系统执行多长时间崩溃,系统的执行、维护、管理怎么更easy,更便于残疾人使用等等。这些特性都属于系统质量属性所须要优先考虑的范围。
到此为止,我们对系统架构的概念就介绍完成了。接下来继续解说软件系统架构的其它内容。
……