首页 > 其他分享 >软件架构实践 V2:第二章

软件架构实践 V2:第二章

时间:2024-01-12 22:23:07浏览次数:41  
标签:架构 定义 元素 系统 V2 软件架构 构架 第二章

第二章 什么是软件架构

如果一个项目的系统构架 (包括理论基础) 尚未确定,就不应该进行此系统的全面开发。只有对构架做出明确清楚的表述,才能使之在整个开发和维护过程中加以充分利用。

——Barry Boehm

本章我们将严格地从软件工程的角度对构架进行讨论,即除了第1章中所讲到的企业所获得的价值外,我们还将研究软件构架对项目开发的重要意义。

2.1 软件架构概念的澄清

:某个软件或计算机系统的软件架构是该系统的一个或多个结构,它们由软件元素、这些元素的外部可见属性以及这些元素之间的关系组成。

这里所说的某个元素的 "外部可见属性" 是指其他元素对该元素所做的假设,如它所提供的服务、性能特征、错误处理、共享资源的使用,等等。下面我们深入阐述一下该构架的含义。

  • 首先,构架定义了软件元素。构架中包含了关于各元素应如何彼此相关的信息。也就是说,构架必须省略各元素中与其交互无关的某些信息。因此,构架首先是对系统的抽象,该抽象去除了不影响它们如何使用、其他元素如何使用以及如何与其他元素关联或交互的细节。在几乎所有的现代系统中,各元素是通过接口实现交互的,而这些接口又将各元素的细节划分为公有和私有两大类。根据这种划分,构架属于公有部分,而私有部分一一即仅与内部具实现有关的细节一是不属于构架的。

  • 第二,该定义明确指出系统可能而且确实由多个结构组成,而且,其中任何一个结构并不能与构架等同。

  • 第三,该定义意味着具有软件的每个计算系统都有一个软件架构

  • 第四,只要某个元素的行为可以从其他元素的角度观察到或区别开,这个元素的行为就是构架的内容。正是这种行为的存在,才使各元素的交互成为可能,而这种交互显然是构架的一部分。这是被当做构架的框线图其实根本就不是构架的另一个原因。它们只是框线图,提供了所展示的元素做什么的更多信息。当看到这些框线图中某个框(数据库、图形用户接口、可执行代码等)的名字时,读者很可能会设想相应元素的功能和行为。与框线图相比,这种想象更接近于构架,但这种想象来自于读者的思维,依赖于某些在框线图中并未表示出来的信息。这并不是说在各种情况下都要对各元素的行为和性能给出精确的描述,但如果某个元素的行为对与之交互的另一个元素的代码编写有特定的要求,或者影响到整个系统的可接受性,则该行为就是软件构架的一部分

  • 最后,我们所给的这个定义并不涉及对架构优劣的评价,这意味着架构将支持或组织系统满足其行为、性能和生命期需求

2.2 其他观点

软件构架在不断发展,但它仍然是一个尚不成熟的学科;因此,它没有一个统一的、公认的定义。另一方面,目前有很多关于软件构架的定义。大多数常见的定义的要点都是一致的一一结构、元素以及元素之间的关系一一但它们在细节上有很大不同,不能互换。

通过研究设计人员所遵循的设计规范以及他们在开发实际系统时所采取的行动,对软件构架的研究得以不断发展。对系统设计中内在的共性进行抽象是一种尝试,由此它必须说明各种活动、概念、方法、途径和结果。鉴于此,软件工程团体中存在其他构架定义;因为您很可能会遇到其中的一些定义,因此应该理解这些定义的含义并能够对其进行讨论。下面是几个最常见的定义:

  • 架构是一种高层设计
  • 架构是系统的总体结构。这个常见说法(不正确地)暗含的意思是系统只有一个结构。我们知道这种说法是错误的,如果有人持这种观点,不妨问问他所说的结构到底指什么。
  • 架构是一个软件或系统的组件、组件之间的相互关系以及管理其设计和演变的原理和方针的结构
  • 架构是组件和连接器。连接器是指系统运行时为传送控制和数据信息而采用的机制。因此,该定义主要强调了系统运行时的架构。

2.3 架构模式、参考模型和参考架构

  1. 架构模式是对元素和关系类型以及一组对其使用方式的限制的描述。可以把架构模式看作是对架构的一组制约条件——即对各元素类型及其交互模式的限制条件,而这些制约条件就确定了一组或一系列能满足它们的架构。(B/S C/S)
  2. 参考模型是一种考虑数据流的功能划分。参考模型是对已知问题的标准分解,分解所得的各个部分相互协作,构成问题的解决方案
  3. 参考架构是映射到软件元素(它们相互协作,共同实现在参考模型中定义的功能)及元素之间数据流上的参考模型。参考模型实现了功能划分(参考结构则将这种功能划分与系统分解对应起来)。这种对应可能(但不一定必须)是一一映射。

参考模型、架构模式和参考架构都不是架构,但他们都是捕获架构元素的有用的概念。

2.4 为什么说软件架构非常重要

  1. 构架是涉众之间的交流
    1. 构架提供了一种共同语言,有关各方可借助它表达和协商各自的需求,并理性地找到解决方案,即使对大型、复杂系统的开发也是如此(参见下面的引文“按下这个按钮将会怎样”)。如果没有这样一种语言,要想充分理解大型系统并理智地做出对系统质量和易用性都具有重要影响的早期决策将十分困难。构架分析不仅依赖于而且促进了这个层次上的交流,第II部分将对此进行讨论
  2. 构架是早期设计决策
    1. 架构明确了对系统实现的约束条件
    2. 架构决定了开发组织的组织结构
    3. 架构阻止或支持系统的质量属性的实现
    4. 通过研究架构来预测系统质量
    5. 架构使推理判断和控制更改更简单
    6. 架构有助于循序渐进的原型设计
    7. 可以通过架构进行更准确的成本和进度估计
  3. 构架是可传递的、可重用的模型
    1. 产品线共享一个公共的架构
    2. 系统开发可以使用大型的、由其他组织开发的元素
    3. 少就是多:限制选择范围是值得的
    4. 架构使基于模板的开发成为可能
    5. 架构可以作为培训的基础

系统架构与软件架构:几乎没有差别

2.5 软件架构和视图

为了有意义地传达架构的信息,必须说明此刻正在讨论哪个或哪些结构——即采用的是架构的哪个视图

大体上将架构结构分为3组:

  • 模块结构
    • 分解
    • 使用
    • 分层
    • 类或泛化
  • 组件-连接器结构
    • 进程或通信进程
    • 并发
    • 共享数据或存储库
    • 客户机/服务器
  • 分配结构
    • 部署
    • 实现
    • 工作分配
      image

标签:架构,定义,元素,系统,V2,软件架构,构架,第二章
From: https://www.cnblogs.com/lhxBlogs/p/17961707

相关文章

  • 聊聊ChatGLM中P-tuning v2的应用
    论文PDF地址:https://arxiv.org/pdf/2110.07602.pdf转载请备注出处:https://www.cnblogs.com/zhiyong-ITNote/P-Tuningv2摘录自第三部分桔色块指代可训练的promptembedding;蓝色块是由固定(冻结)的预训练语言模型存储或计算的embedding。DeepPromptTuningcontinuou......
  • PowerDotNet平台化软件架构设计与实现系列(17):PCRM个人用户管理平台
    个人用户管理是业务系统中非常基础且重要的一个公共服务系统,我们写的绝大多数应用都和个人用户或会员有关,用户(会员)数据安全无小事,必须有一个完备的用户管理平台系统。因为不同公司的主业务不同,个人用户管理的侧重点也会有不同,PowerDotNet这里介绍的个人用户管理平台,只是个人用......
  • AP8854 宽压降压电源管理芯片12-80V 7v2.5A 应用于电动车手暖套的PBC线路
    AP8854一款宽电压范围降压型DC-D电源管理芯片,内部集成使能开关控制、基准电源、误差放大器、过热保护、限流保护、短路保护等功能,非常适合宽电压输入降压使用。AP8854带使能控制,可以大大节省外围器件,更加适合电池场合使用,具有很高的方案性价比。产品特点:电压输入范围10V至120......
  • 使用cv2.getOptimalNewCameraMatrix函数,变为圆形是出现什么错误
    cv2.getOptimalNewCameraMatrix函数用于计算一个新的相机矩阵,以进行图像畸变校正。这个函数的目标是通过考虑畸变的影响,生成一个新的相机矩阵,使得校正后的图像更接近理想的情况。cv2.getOptimalNewCameraMatrix(cameraMatrix,distCoeffs,imageSize,alpha,newImgSize)其中......
  • AP8854 宽压降压电源管理芯片12-80V 7v2.5A 应用于电动车手暖套的PBC线路
    AP8854一款宽电压范围降压型DC-D电源管理芯片,内部集成使能开关控制、基准电源、误差放大器、过热保护、限流保护、短路保护等功能,非常适合宽电压输入降压使用。AP8854带使能控制,可以大大节省外围器件,更加适合电池场合使用,具有很高的方案性价比。产品特点:电压输入范围10V至......
  • opensuse修改cgroup到v2
    识别Linux节点上的cgroup版本cgroup版本取决于正在使用的Linux发行版和操作系统上配置的默认cgroup版本。要检查你的发行版使用的是哪个cgroup版本,请在该节点上运行stat-fc%T/sys/fs/cgroup/命令:对于cgroupv2,输出为cgroup2fs。对于cgroupv1,输出为tmpfs......
  • 界面组件DevExpress WPF v23.2 - 更轻量级的主题支持
    DevExpressWPFSubscription拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。DevExpressWPF控件日前正式发布了......
  • 世微AP3464同步降压恒压IC 4-30V2.4A输出车充专用驱动芯片
    AP3464是一款支持宽电压输入的同步降压电源管理芯片,输入电压4-30V范围内可实现2.4A的连续电流输出。通过调节FB端口的分压电阻,设定输出1.8V到28V的稳定电压。AP3464具有的恒压/恒流(CC/CV)特性。AP3464采用电流模式的环路控制原理,实现了快速的动态响应。A......
  • 百度地图JavaScript API v2.0创建地图
    接口文档:https://lbsyun.baidu.com/index.php?title=jspopular3.0https://lbs.baidu.com/faq/api?title=webapi地图创建代码:<!DOCTYPEhtml><html><head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> &......
  • LLM增强LLM;通过预测上下文来提高文生图质量;Spikformer V2;同时执行刚性和非刚性编辑的
    文章首发于公众号:机器感知LLM增强LLM;通过预测上下文来提高文生图质量;SpikformerV2;同时执行刚性和非刚性编辑的通用图像编辑框架LLMAugmentedLLMs:ExpandingCapabilitiesthroughComposition本文研究了如何高效地组合现有的基础模型以实现新功能的问题,文章提出了CALM(Comp......