
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
软件架构是我们在学习软件开发技术的时候需要重点掌握的一个软件开发知识,而今天我们就通过案例分析来了解一下,软件架构的概念与架构元素类型。
1、软件架构
软件架构方面关注的是如何划分一个系统、如何标识组件、组件之间如何通信、信息如何表达、组成系统的元素如何独立的进化,以及如何表达上述的内容。一个优秀的软件架构并非凭空靠想象得来的,每一个架构级的决策,都应该根据被设计的系统功能、行为和社交三方面的需求而作出。这是一个基本的设计原则,即“形式追随功能”,这条原则源自于建筑学领域在数百年中失败的建筑项目中获得的经验,但是却总被软件行业所忽略。“dedign-by-buzzword”的行为随处可见,出现这种行为的原因在于很多设计者在选择某一个优秀的软件架构时,不了解这个架构的适用场景是什么、背后是基于什么考量才得出的这样的架构,以及是否吻合自己的需求。下面先介绍一组自洽的术语来描述解释软件架构。
2、运行时抽象
软件架构是一个软件系统在其运行过程中某个阶段的运行时元素的抽象。一个系统可能会有多层抽象和多个运行阶段组成,每一个抽象和运行阶段都是自己的软件架构。
软件架构的核心是抽象:通过封装来隐藏系统的一些细节,从而更好的识别其架构属性。一个复杂的系统会有着多层抽象,每一层都有自己的架构,架构代表了某个层次上系统行为的抽象。除了层次之外,系统还会有多个运行阶段,比如启动、初始化、正常运行、停止、重新初始化等,每个阶段也都有自己的架构,比如配置文件在启动的时候会作为架构的一个数据元素来处理,到了正常运行的时候,这些数据元素已经分散到了系统的各个方面,在后续的阶段中就不会再把它作为一个数据元素了。
3、架构元素
软件架构是由一些架构元素(组件、连接器和数据)的配置来定义的,这些元素之间的关系受到一组约束,以获得期望的架构属性。具体的元素类型如下:
组件:组件是软件指令和内部状态的抽象单元,通过其接口提供数据的转换能力。比如执行从硬盘加载数据到内存、执行一些计算、转换为另外一种格式等。每个组件的行为是架构的一部分,能够被其他组件观察到或者识别出来(即由某个组件为其他组件提供的接口和服务来定义该组件,而不是由该组件内部的实现来定义)。具体的例子有浏览器,网关,Web服务器(apache,ngnix.,iis)等。
连接器:对于组件之间的通信、配合或者协作进行中间周旋的一种抽象机制。区分连接器和组件的佳方式是看其对数据的处理方式,连接器是把数据从一个接口移交到另外一个接口而不改变数据,以此来支持组件之间的通信。在连接器的内部,可能是由多个组件组成的子系统,为了移交的目的而对数据进行某种转换、执行移交然后做想法的转换并交付与原始数据相同的结果。然而在架构所能捕获的外部行为抽象中,可以忽略这些细节。具体的例子有缓存,SSL/TLS等等这类。
数据:数据是组件通过连接器接收或发送的信息元素。在基于网络应用的结构中,数据元素的特性往往会决定某一种架构风格是否适用,比如是直接的和组件进行交互,还是把组件转换为数据元素,通过网络移交该元素,然后再对该数据元素做相反的转换,得到一个能够在本地与之交互的组件。具体的数据例子有二进制数据,json,HTML文档,图片等。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。