软件架构(Software Architecture)乃是一系列相关抽象模式之集合,专为指导大型软件系统的多方面设计而设。此架构犹如系统之草图,为构建计算机软件实践之基石。亦可简称为设计方案,其将用户之不同需求抽象为组件,并详述组件间的通信与调用关系。
架构之理念可与硬件之中之拓扑图相提并论。而架构又可依其展示内容不同,细分为应用架构、业务架构、技术架构及数据架构。
- 应用架构——关注于软件应用层面的设计与布局。
- 技术架构——专注于技术支持与实现细节。
- 业务架构——着重于业务需求与软件系统的对应关系。
- 数据架构——关乎数据存储、处理与流动之设计。
软件框架(Software Framework)通常指的是为达成特定任务或遵循业界标准之软件组件规范。框架是软件开发过程中提炼出的共性部分所形成的体系结构,它为开发者提供了基础功能与服务,以便进行二次开发,实现具体功能。
框架与架构间关系密切。框架虽较具体、偏重技术,但终究是设计思路之体现;而架构则更偏重于整体设计与规划。一个优秀的架构可借助多种框架来实现。
以Express框架为例:Express基于Node平台,是一个web应用开发框架。它提供了一系大特性,简化了Web应用开发过程。通过npm install express命令即可轻载安装。
Express框架提供了以下便利:
- 便捷的路由定义方式。
- 简化的HTTP请求参数处理。
- 强大的模板引擎支持,便于渲染动态HTML页面。
- 有效的中间件机制,以控制HTTP请求。
- 丰富的第三方中间件资源,便于功能扩展。
设计模式(Design Patterns)是一套被反复使用、广为人知的问题解决方法之集合。它是对代码设计经验的总结,分类编目后供开发者参考与应用。
框架与设计模式的关系错综复杂。设计模式针对单一问题提出设计思路与解决方法,可应用于不同框架并被多种程序语言实现;而框架则是一种或多种设计模式和代码的混。
在软件系统中,模块与组件是关键构成部分。程序模块指能够实现特定目标的代码段,而功能模块则描述了系统为实现某一功能所展现的行为。定义模块之原则在于高内聚与低耦合。
组件是封装了程序模块的实体,强调接互。插件是组件的子类,特指那些具有特定特点的组件。插件需依赖应用程序运行,通过与应用程序的互动为其增添特定功能。
还存在可视化的组件,能够直观展示软件系统的运行状态与结果。中间件则是在网络环境下,连接操作系统、数据库等系统软件与应用软件的分布式软件,它解决了异构网络环境下应用的互连与互操作问题。