软件架构设计入门学习

什么是软件架构

定义

  软件架构(Software Architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。---百度百科
  软件架构指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。---维基百科
  从上面两个对软件架构的定义和软件架构发展史中,我们可以总结得出软件架构是以结构化、模块化和组件化的设计形态进行指导软件程序研发,从而降低软件程序的复杂性。
  注意事项:框架和架构是比较相似的概念,且两者有较强的关联关系,我们需要将框架和架构进行概念区分,根据框架定义(软件框架(Software Framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品),我们可以发现:框架关注的是“规范”(开发规范),架构关注的是“结构”,框架能够提供基础功能,而架构提供的则是设计指导。

作用

  软件架构的核心价值,即是控制系统的复杂性,将核心业务逻辑和技术细节的分离与解耦。软件架构是系统的草图,它描述的对象是直接构成系统的抽象组件,各个组件之间的连接则明确和相对细致地描述组件之间的通信。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。架构师的职责是努力训练自己的思维,用它去理解复杂的系统,通过合理的分解和抽象,理解并解析需求,创建有用的模型,确认、细化并扩展模型,管理架构;能够进行系统分解形成整体架构,能够正确的技术选型,能够制定技术规格说明并有效推动实施落地。

架构类别

  按照架构面向对象的维度,可以将架构分为业务架构、应用架构、数据架构、功能架构、物理架构(基础架构)这几大类。
  业务架构:面向业务需求价值链的维度进行编制,着眼于跨部门、跨机构提升业务效率,解决业务带来的系统复杂性、重复建设、信息孤岛等问题。在构图时,一般通过分解细化组织/公司的价值链信息,进行模块化、组件化的分类与串联。示例图如下:

                      生鲜行业业务架构
软件架构设计入门学习_第1张图片

                       供应链业务架构

软件架构设计入门学习_第2张图片

  应用架构:面向IT系统应用(应用就是处理器)设计和技术实现内容的维度进行编制,提供构建应用时应遵循的路线图和最佳实践,它包含了包含系统的边界和定义、前后端服务、系统间的关联关系等方面的内容,一般分为多个系统的应用架构(企业级应用架构)和单个系统的应架构。示例图如下:

            企业级应用架构(多系统应用架构)
软件架构设计入门学习_第3张图片

                电商系统应用架构(单个系统)

软件架构设计入门学习_第4张图片

  数据架构:面向数据信息产生、交互以及存储的维度进行编制,一般包括:数据源、数据采集、数据存储、数据处理、数据加工、数据分析、数据应用,常见的分为基于业务流程与运营的概念级数据架构和基于数据库技术与数据处理技术的逻辑级数据架构设计。示例图如下:

           MES系统数据架构(基于业务流程与运营概念)
软件架构设计入门学习_第5张图片

     数据中心(或大数据平台)的数据架构(基于数据库技术与数据处理技术)

软件架构设计入门学习_第6张图片

  功能架构:面向软件系统功能模块的维度进行编制,主要是介绍模块下其各功能组成的图表,体现了产品功能的同时,也展示了功能的从属关系。示例图如下:

                供应链系统功能架构图

软件架构设计入门学习_第7张图片

  物理架构:又称基础架构,面向系统、网络、服务器的维度进行编制,专注于通过服务器部署和配置网络环境,来实现应用程序的“可伸缩性、高可用性”,包括机房搭建、网络拓扑结构,网络分流器、代理服务器、Web 服务器、应用服务器、报表服务器、整合服务器、存储服务器和主机等。示例图如下:

                物理架构图
软件架构设计入门学习_第8张图片

如何绘制架构图

(1)明确架构的使用对象
  通过明确使用对象,确认需要画出那种架构图。
(2)明确架构范围
  通过需求信息明确软件系统的覆盖范围,确认出架构范围边界。
(3)结构要素梳理
  对事物进行抽象建模,梳理出对应的信息结构,建立关键信息要素之间的关联关系:包含、支撑、同级并列等。
(4)输出关联关系清晰的架构图
  使用对应工具,进行架构图绘制。

常用制图工具

  PPT、Visio、draw.io、亿图...

你可能感兴趣的:(产品,系统架构,产品设计)