软件架构必备!一文解析5种超实用度量方法

IT阅读排行榜 2024-11-04 15:45

关于软件架构有许多定义,但在实践中,大多数在架构上具有重要意义的决策都与满足利益相关者对系统质量的需求有关,包括性能、韧性和安全性。架构师以前解决这些复杂问题的方式是进行大量的“前期”设计和思考,但如今架构师们需要更快地行动,更有效地适应变化。


许多方法,如持续交付、RCDA和持续架构等,都试图减少前期的架构活动,更多地将架构活动贯穿在交付生命周期中。这样,团队就可以在获得更多信息后再做出重要决策,并支持系统创建过程中出现的变更;但难点在于如何确定自己是否已经完成了足够的架构工作以及是否把时间花在了最重要的事情上,以最大化工作收益。


要做的事情太多,时间总是不够用,因此你需要明智地选择任务,并知道何时停止去解决下一个问题。度量就是解决方案。通过在特定时间点对系统的质量进行度量,而不是凭直觉或遵循僵化的架构方法,你就能了解自己所处的位置。随着时间的推移进行度量,你就能看到趋势,并根据这些质量属性的演变来确定你的方向。以这种方式使用度量,可以指导你的架构活动,并最大限度地发挥其价值。


拥有可靠且经济高效的度量方法非常重要。在本文接下来的部分,我们将介绍软件架构中,度量的五种方法。


01 应用和基础设施的运行时度量

正如Cindy Sridharan在Distributed Systems Observability(O'Reilly,2018)一书中所指出的,目前可用的度量机制一般有三种:日志、跟踪和指标。


  • 日志为我们提供了一系列带有时间发的事件记录,以显示某个技术组件在一段时间内发生了什么。

  • 跟踪则是对这一理念的延伸,它是直接相关事件的集合,记录了软件内端到端跨组件场景,如请求处理。

  • 指标是对一段时间内系统特性的直接数字度量,例如虚拟机的CPU使用率或图像存储器的存储大小。


我们可以从系统基础架构和应用程序本身收集日志、跟踪和指标。


通常情况下,从基础架构设施访问日志、跟踪和指标更简单,因为大多数基础架构设施环境(如公共云平台)都有复杂且功能齐全的信息收集系统,无须进行太多工作即可提供这三种信息。应用程序日志、跟踪和指标通常需要更多的工作,因为你必须自己直接或通过重用度量机制(如应用程序性能管理(APM)工具)来实现它们。不过,应用程序度量是针对具体情况的,这可以为利益相关者真正关心的特性(如产生的收入等业务指标,而不仅仅是纯粹的技术指标)提供更多见解。

02 软件分析

俗话说:“代码不会说谎。”代码一经编写,就可以成为丰富的度量来源。


静态代码分析是一个高度发展的领域,有各种功能强大的工具,然而,它仅限于度量常见的编程错误和代码结构特征(如复杂性或耦合性)。这对于评估维护性和可扩展性以外的许多架构质量特性没有帮助。


不过,对于评估质量(例如安全性),代码分析度量(如发现的奖符漏洞数量)可以作为一种有用的替代度量方法。

03 设计分析

代码分析的明显问题是,在代码编写完成之前,你无法使用它,因此它只能提供回顾性而非预测性的度量结果。而在实现之前捕捉设计的某些方面,就可以使用设计分析来创建预测性度量,如是否符合标准,或可能的架构质量,如可伸缩性。


我不建议制作老式的详细设计文档,因为这些文档一完成就会过时,但在实施前捕捉一些最基本但准确的设计表述,可以对可能的系统特性提供有洞察力的估算,从而指导你的工作。

04 估算和模型

使用模型和估算来创建预测性度量,可以在交付周期的早期,编写大量代码之前指导架构工作。


你可以利用自己以前的经验、对其他类似系统的度量结果以及已公布的基准或测试结果来创建数学模型,通常是在电子表格中创建。这些模型试图捕捉运行参数(如数据库大小、请求量、请求类型、服务器数量和内存大小)与由这些参数产生的质量属性值之间的基本关系。


这种预测性度量存在一些问题。首先,它最适用于易于用数字表示的架构特性,如可扩展性和性能。而对于安全性这样的特性,则比较难以使用这种方法。其次,除了最简单的系统外,要创建一个简单易懂、结果可靠的模型也非常困难(而且昂贵)。最后,在系统建成之前,也很难验证此类模型的预测能力,此时你只需对其进行度量即可。确保你创建的是真正有用的东西。

05 适应度函数

Neil Ford、Rebecca Parsons和Patrick Kua在Building Evolutionary Architectures(O"Reilly,2017)一书中提出了用于质量属性度量的“适应度函数”。与其说适应度函数是一种新的度量机制,不如说它是一种利用度量来监控系统质量属性并确保其保持在可接受范围内的机制。

适应度函数为一个或多个质量属性定义了一个或一组可接受的值,以及如何检查系统是否至少达到了这些质量属性数值的方法。理想情况下,适应度函数应作为自动化流程来实施,但许多有用的适应度函数无法自动化,因此手动的适应度函数(如电子表格计算)仍然很有价值。举个简单的例子,如果你知道某一特定类型的所有请求都应在100毫秒内处理完毕,那么你就可以在运行环境中创建一个自动化的适应度函数,用于监控请求处理时间,并在请求处理时间超长时发出警报。


适应度函数并不能使质量属性度量变得更容易。你仍然需要使用本节中概述的技术。但它们可以帮助你使用度量数据来引导和聚焦你的架构工作。


总结


本文从常用度量方法的角度介绍了如何在软件架构中使用度量。每种重要质量(如性能、可扩展性、可用性和安全性等)在度量时都有自己的特点,需要结合这些特点使用不同的度量方法。


如果您对软件的度量指标感兴趣,想要进一步了解其在软件架构中的具体应用,推荐您阅读《软件架构指标:度量软件系统的性能和架构质量》一书。


- END -

作者简介:
  • Christian Ciceri,一名软件架构师,也是Apiumhub的联合创始人。
  • Dave Farley,持续交付、DevOps和软件开发领域的思想领袖。

  • Neal Ford,Thoughtworks的总监、软件架构师和文化塑造师。

  • Andrew Harmel-Law,Thoughtworks的技术主管。

  • Carola Lilienthal,博士,Workplace Solutions GmbH的总经理。

  • Michael Keeling,一位经验丰富的软件架构师、敏捷实践者和程序员。

  • João Rosa,Xebia的首席顾问。

  • Alexander von Zitzewitz,hello2morrow的创始人之一。

  • Rene Weiss,Finabro的首席技术官。

  • Eoin Woods,Endava的首席技术官。


本文摘编自《软件架构指标:度量软件系统的性能和架构质量》,经出版方授权发布,转载请保留文章来源。


延伸阅读软件架构指标

推荐理由:本书通过10位杰出实践者的贡献,分享了关键的软件架构指标,帮助你设定正确的关键绩效指标并衡量结果。软件架构指标是软件项目的可维护性和架构质量的关键,它们可以在项目早期向你发出警告,提醒你注意架构和技术债务的积累。本书不是一本关于理论的书。它更多的是关于实践,关于已经尝试过并行之有效的方法。本书面向渴望探索成功案例的软件架构师和软件开发人员,旨在帮助读者进一步了解决策和测量的有效性。



  • 本文来源:原创,图片来源:原创、pexels

  • 责任编辑:王莹,部门领导:宁姗

  • 发布人:白钰

IT阅读排行榜 技术圈的风向标,有趣,有料,有货,有品又有用
评论
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 51浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 102浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 83浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 66浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 65浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 86浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 98浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 70浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 41浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 37浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦