【愚公系列】软考高级-架构设计师 092-系统架构设计概述

举报
愚公搬代码 发表于 2024/07/31 23:50:51 2024/07/31
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。🏆《博客内容》:.NET、Java、...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

系统架构设计是指在软件工程、信息系统、计算机系统等领域中,定义系统的高层结构和组织方式的过程。系统架构设计的目的是确保系统满足业务需求、性能要求、可维护性和扩展性等方面的需求,同时提供一个清晰的蓝图,指导系统的详细设计和实现。

  1. 定义架构需求

这一阶段包括理解和明确系统需要解决的业务问题、功能需求和非功能需求(如性能、安全性、可用性、可扩展性等)。

  • 业务需求:系统需要实现的具体业务功能。
  • 功能需求:用户与系统交互的具体功能。
  • 非功能需求:系统性能、可扩展性、安全性等方面的要求。
  1. 选择架构风格

系统架构风格是对系统整体结构的一个宏观描述,常见的架构风格包括:

  • 客户端-服务器(Client-Server)
  • 分层架构(Layered Architecture)
  • 微服务架构(Microservices)
  • 事件驱动架构(Event-Driven Architecture)
  • 面向服务架构(Service-Oriented Architecture, SOA)
  1. 划分系统模块

将系统分解成若干个模块或组件,每个模块有明确的职责和边界。这一过程通常包括:

  • 模块定义:确定系统的主要模块及其功能。
  • 模块交互:定义模块之间的接口和交互方式。
  1. 定义系统的高层结构

描述系统的高层结构,包括模块的划分、模块之间的通信方式、数据流、控制流等。常见的结构图包括:

  • 架构图:展示系统主要模块及其相互关系。
  • 组件图:展示系统组件及其接口。
  • 部署图:展示系统在物理或虚拟节点上的部署方式。
  1. 选择技术栈

选择适合系统需求的技术和工具,包括编程语言、数据库、框架、中间件等。

  • 编程语言:Java, Python, JavaScript等。
  • 数据库:关系型数据库(如MySQL, PostgreSQL)和非关系型数据库(如MongoDB, Cassandra)。
  • 框架:Spring(Java),Django(Python),React(JavaScript)等。
  • 中间件:消息队列(如RabbitMQ, Kafka),API网关,负载均衡器等。
  1. 设计关键组件

详细设计系统的关键组件,确保它们能够实现所需功能,并满足性能和安全性等非功能需求。

  • 数据存储和访问:设计数据库模式和数据访问层。
  • 业务逻辑层:设计核心业务逻辑的实现方式。
  • 接口和API:设计系统的外部接口和API。
  1. 考虑非功能需求

确保系统架构设计考虑了所有非功能需求,如性能(响应时间、吞吐量)、可扩展性(水平扩展、垂直扩展)、安全性(认证、授权、数据加密)等。

  1. 验证和评审架构

通过原型、架构评审、仿真和测试等方式验证架构设计,确保其可行性和有效性。

  • 原型:构建系统的原型以验证关键设计决策。
  • 评审:组织架构评审会议,邀请专家和利益相关者评估架构设计。
  1. 文档编制

编写详细的系统架构文档,记录架构设计的所有决策和细节,包括架构图、模块设计、接口说明等。

🚀一、系统架构设计概述

🔎1.概述

🦋1.1 软件架构的定义

软件架构是指系统的一个或多个结构,这些结构包括软件的组件、组件的外部可见属性以及它们之间的相互关系。

🦋1.2 简单理解软件架构

软件架构是从需求分析到软件设计之间的过渡过程。只要软件架构设计合理,整个软件就不会出现坍塌性的错误,即不会崩溃。

🦋1.3 软件体系结构设计

软件体系结构的设计通常考虑设计金字塔中的两个层次:

  1. 数据设计

    • 数据设计为软件体系结构设计提供了数据基础。它涉及数据的存储、组织和管理,确保数据能够高效地被访问和处理。
  2. 体系结构设计

    • 体系结构设计为软件系统的整体结构提供了规划和设计。它涉及确定系统的主要组件及其交互方式,确保系统能够满足功能和非功能需求。

🔎2.详细解释

🦋2.1 软件架构的定义

软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由以下部分组成:

  • 构件的描述
  • 构件的相互作用(连接件)
  • 指导构件集成的模式
  • 这些模式的约束

🦋2.2 软件架构的作用

  1. 整体结构描述

    • 软件架构描述了软件系统的整体结构,包括其组成部分、相互作用以及它们之间的关系。
  2. 行为定义

    • 软件架构定义了软件系统的行为,即系统如何响应用户的请求和事件。
  3. 属性影响

    • 软件架构影响软件系统的属性,例如性能、可靠性和安全性。

🦋2.3 类比解释

想象你正在建造一座大楼。在软件架构中,大楼的总体设计和布局相当于架构。你需要决定:

  • 大楼的总高度
  • 楼层的布局
  • 房间的位置
  • 电力、水源和通风系统的安排

这些决策构成了大楼的架构,影响大楼的功能、性能和可维护性。

🦋2.4 总结

在软件中,架构决策包括:

  • 如何组织代码、模块和组件
  • 如何处理数据流
  • 如何设计用户界面和业务逻辑

好的软件架构能够确保软件具有:

  • 良好的性能
  • 可扩展性
  • 可维护性
  • 安全性

就像一个精心设计的大楼能够提供舒适和便捷的居住环境一样,软件架构就是软件的总体设计方案,决定了软件如何组织和工作,规定了软件系统的整体结构和各个部分之间的关系,以满足用户需求和业务目标。

🦋2.5 关键点

  • 软件架构是软件系统的总体设计方案

    • 确定软件如何组织和工作
    • 规定软件系统的整体结构和各部分之间的关系
  • 影响软件的各个方面

    • 性能
    • 可扩展性
    • 可维护性
    • 安全性

好的架构是构建可靠软件的基础。

🔎3.案例场景

建造一座房子的场景

🦋3.1 需求分析

  1. 获取需求

    • 明确需求:决定建造一座房子,首先需要明确需求,包括房子的用途、大小、房间数量、特殊需求(例如,卧室、浴室数量,是否需要车库等)。
  2. 分析需求

    • 编写用例:例如,客厅用于娱乐,卧室用于休息。
    • 考虑家庭成员需求:例如,儿童需要自己的房间。

🦋3.2 软件架构设计

  1. 系统结构

    • 房屋组织:设计房子的架构时,考虑如何组织不同的房间和功能区,以满足需求。这包括确定房子的总体布局和连接方式。
  2. 性能和可扩展性

    • 性能需求:选择材料以保持温度、隔音等。
    • 扩展性考虑:考虑将来可能的扩建需求。

🦋3.3 系统设计

  1. 详细设计

    • 设计细节:在系统设计阶段,细化每个房间的设计,包括墙壁、窗户、门、地板和天花板的具体设计。
  2. 模块功能

    • 房间功能设计:设计每个房间的功能和布局,确保它们适合房子的整体需求。例如,厨房的功能布局需要考虑食品准备和烹饪的流程。

通过这个示例可以看到:

  • 需求分析:定义房子的基本需求。
  • 软件架构设计:决定房子的整体结构和连接方式。
  • 系统设计:详细设计每个房间的具体细节。

这三个步骤相互连接,确保最终的房子满足需求和期望,具有良好的性能和可维护性。

🔎4.软件架构设计的生命周期

软件架构设计不仅仅在开发初期进行,而是贯穿于软件开发生命周期的各个阶段,包括需求分析、设计、实现、测试、部署和维护等。

🦋4.1 需求分析阶段

  • 对象区别:需求分析面向的是问题空间,而软件架构设计面向的是解空间。
  • 模型转换:从需求模型向软件架构模型的转换主要关注两个问题:
    • 如何根据需求模型构建软件架构模型。
    • 如何保证模型转换的可追踪性。
  • 核心关注:将用户需求转换为软件架构模型,并确保模型的可追踪性。

🦋4.2 设计阶段

  • 研究内容:软件架构研究的早期和主要阶段,涉及以下内容:
    • 软件架构模型的描述。
    • 软件架构模型的设计与分析方法。
    • 软件架构设计经验的总结与复用。
  • 描述层次:研究分为三个层次:
    • 软件架构的基本概念(构件和连接件)。
    • 体系结构描述语言(ADL)。
    • 软件架构模型的多视图表示。
  • 核心关注:软件架构模型的描述、设计与分析方法,以及设计经验的总结与复用。

🦋4.3 实现阶段

  • 初期研究:最初软件架构研究关注的是较高层次的系统设计、描述和验证。
  • 实现转换:为了有效实现从软件架构设计到实现的转换,研究关注以下方面:
    • 对开发过程的支持。
    • 开发语言和构件的选择。
    • 相关测试技术。
  • 核心关注:如何将软件架构设计转换为代码,并进行测试。

🦋4.3 构件组装阶段

  • 指导作用:在软件架构设计模型的指导下,可复用构件的组装可以在较高层次上实现系统,提高系统实现效率。
  • 系统蓝图:在构件组装过程中,软件架构设计模型起到了系统蓝图的作用。
  • 核心关注:如何在架构设计模型的指导下,进行可复用构件的组装,提高系统实现效率,并解决组装过程中的相关问题。

🦋4.5 部署阶段

  • 高层视图:提供高层的体系结构视图来描述部署阶段的软硬件模型。
  • 质量分析:基于软件架构模型分析部署方案的质量属性,从而选择合理的部署方案。
  • 核心关注:如何根据软件架构模型进行部署,并分析部署方案的质量属性。

🦋4.6 后开发阶段

  • 研究方向:围绕维护、演化、复用等方面进行研究,典型的研究方向包括:
    • 动态软件体系结构。
    • 体系结构恢复与重建。
  • 核心关注:如何根据软件架构模型进行维护和演化。

软件架构设计贯穿于软件开发生命周期的各个阶段,每个阶段都有其特定的关注点和研究内容。通过这些阶段的研究和实践,可以确保软件架构设计在开发、实现、部署和维护过程中发挥其应有的作用,从而提高软件系统的质量和可维护性。


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。