Handbook of Software Architecture 软件架构手册 [原创翻译]

本文主要是介绍Handbook of Software Architecture 软件架构手册 [原创翻译],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 引言
软件架构是软件工程学中一个正高速发展的子研究和实践领域.
软件架构是程序或计算系统的结构,包括软件组件、那些组件的外部可见的属性,以及那些组件之间的关系.

软件架构对于系统非常重要的原因
A. 起到与涉众交流的作用
B. 是系统初步的设计决定
C. 是系统一个灵活的抽象

软件架构提供了一个通用的语言来表达不同的涉众对系统的担忧,
如果没有这样的一种语言,就会使系统非常难于理解和领会,
以至于不能尽早决定系统的质量和可用性.

软件架构是软件系统构建,修改和分析的技术蓝图.

 

 

2. 架构是涉众交流的工具


2.1 架构结构
架构结构是一种描述和规约.这些描述和规约被多个涉众使用和遵守.
架构师设计完成系统的整体架构结构,而专业专家则精炼和实现各自负责的视图.

架构结构通常包括视图:
 功能视图(logical view)
 代码视图(code view)
 开发视图(structural view)
 并发视图(process/thread view)
 物理视图(deployment view)

2.1.1 功能视图
功能视图是系统功能和功能间关系的抽象.
功能视图的组件包括:功能,系统的关键抽象,领域元素.
功能视图组件的关系是依赖和数据流.
功能视图的用户是领域工程师,项目流程设计者和最终的用户.

2.1.2 代码视图
代码视图是程序员看得到的东西.
代码视图的组件是一些类,对象,过程,函数,以及由这些元素抽象/组合而成的子系统,层和模块.
代码视图组件的关系是方法调用以及诸如is-a-module-of 的包含关系.
代码视图的用户是程序员,设计者,当然也有可能或者某人既是程序员又是设计者.

2.1.3 开发视图
开发视图是程序开发者可见的另一个视图,但该视图与代码视图完全不同.
开发视图是不同程序员和程序维护人员生成,修改,管理的原代码打包结构化的视图.
开发视图的组件是文件,目录,其他形式的组件也是可能的,比如将原代码存储在数据库中.
开发视图文件和目录之间的关系是包含关系.
开发视图的用户除了是程序员和程序维护人员外还有项目经理和配置管理员.

2.1.4 并发视图
并发视图考虑哪些进程和线程需要创建,以及它们之间如何进行交互和共享资源.
并发视图的组件是进程和线程.
并发视图组件的关系是数据流,事件和同步机制.
并发视图的用户是那些需要考虑系统如何部署,担心系统性能和可行性,以及系统集成和系统测试的人员.

2.1.5 物理视图
物理视图描述了系统如何部署硬件资源.
物理视图的组件是计算机,传感器,触发器,存储器等等.
物理视图组件的关系典型的情况是网络或者其他通信设备(如卫星或总线).
物理视图的用户是硬件和系统工程师,他们负责系统的发布,安装和更新(甚至实时更新).

 

2.2 场景
场景是用户如何使用系统和修改系统的简单描述.
场景往往分为两类:
* 用例:系统每个功能面的流程描述.
* 变例:系统修改方案的描述

场景被用于:
* 理解和验证一个架构: 通常情况是架构师,设计师,程序员通过一起运行某个场景来完成架构的理解和验证
* 架构交流: 特别是对于在项目中还没有主要职责的人员
* 结合视图: 视图很少孤立存在,视图通常相互映射.场景有助于视图映射过程的实现.
* 理解架构的局限性: 当一个架构很难满足和适应某个场景时,我们可以更好的理解架构的局限性.

这篇关于Handbook of Software Architecture 软件架构手册 [原创翻译]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677343

相关文章

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

从计组中从重温C中浮点数表示及C程序翻译过程

目录 移码​编辑  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 例子:   ​编辑 浮点数取的过程   C程序翻译过程 移码  传统浮点表示格式 浮点数的存储(ieee 754)->修炼内功 根据国际标准IEEE(电⽓和电⼦⼯程协会)  32位 例子:    64位    IEEE754对有效数字M和

HumanNeRF:Free-viewpoint Rendering of Moving People from Monocular Video 翻译

HumanNeRF:单目视频中运动人物的自由视点绘制 引言。我们介绍了一种自由视点渲染方法- HumanNeRF -它适用于一个给定的单眼视频ofa人类执行复杂的身体运动,例如,从YouTube的视频。我们的方法可以在任何帧暂停视频,并从任意新的摄像机视点或甚至针对该特定帧和身体姿势的完整360度摄像机路径渲染主体。这项任务特别具有挑战性,因为它需要合成身体的照片级真实感细节,如从输入视频中可能