一、软件架构定义
软件架构(SoftWare Architectur)定义较多,简单来说SA可以看作是一系列有关软件整体结构与组成的抽象描述和建模,用于说明软件需求,为软件开发的全过程提供指导,为参与软件开发的各个团队和组织提供一致的沟通语言,贯穿于软件生命周期的全过程。
二、软件架构种类
软件架构按照种类可以分为逻辑架构、物理架构、系统架构。逻辑架构描述软件的功能组成,物理架构描述软件的各个功能组件如何在现实网络中的硬件上进行部署,系统架构描述性能、可靠性、可扩展性等非功能特征。
三、如何描述软件架构
使用图形方式最能直观表达各种思想,软件架构也不例外。用来表达软件架构的图形叫视图,包括业务用例视图、逻辑视图、实施视图、进程视图、配置视图等,使用图形方式对软件架构进行描述的语言中最为常用的是UML。
虽然图形表示简洁、易懂,且广泛使用,但以矩形框与线段等图形为基础的表达方法和方式,在术语和表达语义上存在着不规范和不准确的缺点。
架构描述语言ADL(Architecture Description Language)是一种形式化语言,在底层语义模型支持下,为软件架构提供了语法和语义框架,ADL还在研究和发展过程中。
四、软件架构模式
架构模式也叫架构风格,是描述某一特定领域中软件的结构和特征,提供特定领域内一种高层的软件复用模版,通过软件体系级的复用提高软件开发效率,降低软件开发风险。
MVC(Model View Controler)设计模式就是架构模式中的一种,其它还有面向对象风格、SOA风格等,各种风格之间还会交叉影响。
五、软件框架
软件框架是半成品,是针对特定领域中软件结构,从代码层面提取共性的部分,提供底层代码级的复用。
从软件框架和软件架构模式的定义可以看出,软件具有不同的架构模式,同一架构模式也可以由不同的框架来实现。SSH(Struts+Spring+Hibernate)就是实现MVC模式的一种轻量级软件框架。
六、微服务架构
在微服务概念提出后,SOA出现了新的解决方案,服务的构建也不再完全依靠ESB来完成。特别在Docker技术逐渐普及之后,轻量级微服务架构也在更多被运用在企业系统的构建中。
微服务也是一种软件架构模式,当然也有支持微服务开发的框架,例如SpringBoot就可以作为微服务开发框架。在此框架中可以用SpringBoot开发服务运行在Tomcat上,并用Docker进行封装;使用Jenkins进行服务部署;使用Zookeeper进行服务注册和发现;使用Node.js作为服务网关调用服务。