首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏超级架构师

    软件架构软件架构概述

    [2]它作为系统和开发项目的蓝图,布置设计团队需要执行的任务。[3] 软件架构(architecture)是指做出基本的结构选择,一旦实现,改变这些选择的代价是高昂的。 [4]:5–6该抽象提供了许多好处: 它为在系统构建之前对软件系统的行为进行分析提供了基础。[2]验证未来软件系统是否满足其利益相关者的需求而无需实际构建它的能力代表了大量的成本节约和风险缓解。 [2][4]:35一个完整的软件体系结构或其部分,如单个体系结构策略和决策,可以跨多个系统重用,这些系统的涉众需要相似的质量属性或功能,从而节省设计成本并降低设计错误的风险。 [34]” 有许多公认的建筑模式和风格,其中包括: 黑板 客户端服务器(2层、3层、n层,云计算展示了这种风格) 基于组件 以数据为中心 事件驱动(或隐式调用) 分层(或多层体系结构) 微服务架构 整体应用 [38]当实现决策没有完全实现计划架构或违反这种架构。[2]计划架构和实际架构之间的差距有时可以用技术债务的概念来理解。 例如,考虑一个严格分层的系统,其中每个层只能使用它下面的层提供的服务。

    1.9K11发布于 2020-07-20
  • 来自专栏IT大咖说

    软件架构设计-软件架构风格、分层架构

    软件架构设计 软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见属性及它们之间的关系组成。 软件系统架构是关于软件系统的 结构、行为和属性 的高级抽象。 指定了软件系统的组织结构和拓扑结构。 软件架构是可传递可复用的模型,架构就是体系结构。架构设计介于需求分析和软件设计之间。架构设计就是需求分配,即满足,需求的职责分配到组件上。 ◆ 软件架构风格 软件架构风格是描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式;惯用模式则反映众多系统共有的结构和语义特性。强调对软件设计的重用。 (安全) 2. 三层C/S架构 ? 表现层(Web层) 负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求 web,web层需要接收 http请求,完成http响应。 MVVM架构 ? 2. 富互联网应用(RIA) ? 3.

    3.6K41发布于 2021-07-19
  • 来自专栏全栈程序员必看

    软件架构设计—软件架构概述

    定义 2软件架构软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式及这些模式的约束组成。 (2架构由多个结构组成,结构是从功能角度来描述元素之间的关系的,具体的结构传达了架构某方面的信息,但是个别结构一般不能代表大型软件架构。 这种反馈机制构成了架构的商业周期。 2 软件架构的重要性 从技术角度看,软件架构的重要性表现为如下几方面。 (1)项目关系人之间交流的平台。 架构分析既依赖于又促进了这个层次上的交流。 (2)早期设计决策。 (2)开发视图:也称为模块视图,主要侧重于软件模块的组织和管理。软件可通过程序库或子系统进行组织,这样,对于一个软件系统,就可以由不同的人进行开发。

    3.2K40编辑于 2022-08-23
  • 来自专栏超级架构师

    软件架构软件架构样式和模式列表

    架构模式是一种通用的、可重用的解决方案,用于解决给定上下文中软件架构中常见的问题。架构模式通常被记录为软件设计模式。 黑板 基于规则 消息传递 事件驱动 aka隐式调用 发布订阅 异步消息传递 自适应系统 插件 微内核 反射 特定于域的语言 分布式系统 客户机服务器(2层、3层、n层展示了这种风格) 无共享架构 基于空间架构 对象请求代理 点对点 代表性状态转移(REST) 面向服务架构 云计算模式[2] 本文:http://jiagoushi.pro/list-software-architecture-styles-and-patterns 讨论:请加入知识星球或者微信圈子【首席架构师圈】 微信公众号 关注微信公众号【首席架构师智库】 微信小号 希望加入的群:架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps 点击加入知识星球【首席架构师圈】 微信圈子 志趣相投的同好交流。 点击加入微信圈子【首席架构师圈】 喜马拉雅 路上或者车上了解最新黑科技资讯,架构心得。

    1.1K31发布于 2020-07-20
  • 来自专栏程序那些事

    架构之:软件架构漫谈

    简介 每一个程序员心中都有个架构师的梦想,架构是如此的重要,以至于每个程序员都在谈架构,仿佛没有架构软件是没有灵魂的,不想做架构师的程序员不是一个好的码农一样。 那么架构到底是什么呢? 架构是怎么得到的呢?今天本文将会从自身的经验来阐述一下对架构的看法。 什么是架构软件发展的初期是没有架构而言的。 软件越来复杂,要处理的任务越来越多,最终导致了系统架构的产生。 架构是在复杂软件结构中产生的,它的任务就是让这些复杂软件中的任务能够互相协作从而来完成共同的任务。当然这是从软件的目标来说的。 如果再考虑软件的实现和扩展性,那么好的架构需要让系统可读性和可扩展性更强,给未来留出一定的空间。如果从可靠性和可用性来讲,好的架构还需要保证系统高可用和容错性。 2. 流程视图-描述了系统的活动,包括并发和同步。 3. 物理视图-它描述了软件到硬件的映射并反映了其分布式关系。 4.

    80830发布于 2021-06-01
  • 来自专栏程序那些事

    架构之:软件架构漫谈

    简介 每一个程序员心中都有个架构师的梦想,架构是如此的重要,以至于每个程序员都在谈架构,仿佛没有架构软件是没有灵魂的,不想做架构师的程序员不是一个好的码农一样。 那么架构到底是什么呢? 架构是怎么得到的呢?今天本文将会从自身的经验来阐述一下对架构的看法。 什么是架构软件发展的初期是没有架构而言的。 软件越来复杂,要处理的任务越来越多,最终导致了系统架构的产生。 架构是在复杂软件结构中产生的,它的任务就是让这些复杂软件中的任务能够互相协作从而来完成共同的任务。当然这是从软件的目标来说的。 如果再考虑软件的实现和扩展性,那么好的架构需要让系统可读性和可扩展性更强,给未来留出一定的空间。如果从可靠性和可用性来讲,好的架构还需要保证系统高可用和容错性。 2. 流程视图-描述了系统的活动,包括并发和同步。 3. 物理视图-它描述了软件到硬件的映射并反映了其分布式关系。 4. 开发视图-它描述了环境开发中软件的静态组织和结构。

    65120发布于 2021-06-09
  • 来自专栏超级架构师

    软件架构软件架构权衡系列 - 第 1 部分

    我们所说的“软件架构”有很多定义和含义。构成“软件开发”、“软件设计”和“软件架构”的内容之间也存在相当大的重叠,因为这三个概念在许多方面融合在一起。 从本质上讲,它有助于将软件架构的学科视为在我们以这种或那种方式构建应用程序时做出的选择所产生的权衡之间做出有意识选择的学科。 为什么会有权衡,我们为什么关心? 这个“架构权衡”系列的目的是在涉及到软件架构的不同原则之间的权衡以及此类决策的具体技术含义时,阐明决策过程。 我们在权衡什么? 软件架构权衡和一般软件开发的现实要微妙得多,并且确实代表了选项的梯度。例如,您可以在此处选择具有一定程度的可扩展性,同时具有一定程度的简单性和互操作性。 由数字系统驱动的企业必须制定适当的计划和流程来制定软件架构、技术决策和权衡。

    50620编辑于 2022-09-26
  • 来自专栏采云轩

    浅谈软件架构

    软件架构软件系统的顶层设计,它明确软件系统包括哪些个体:子系统、模块和组件等;同时明确了个体运作和个体之间协作的规则。 软件架构便应运而生,但由于软件系统的复杂性和多变性,没有一种架构可以满足所有系统的设计需求。它与面向对象编程、软件工程一样,不是软件设计领域的银弹。 4、架构作用的总结 架构设计可大可小但不是可有可无,架构并不是遥不可及也别嗤之以鼻。 1、架构是为了应对软件系统复杂度而提出的一个解决方案。 2架构即(重要)决策。 3、需求驱动架构,架起分析与设计实现的桥梁。 4、架构与开发成本的关系。 架构设计理论 1、架构设计复杂度来源 软件架构定义中我们总是能看到复杂软件这个词,什么是复杂软件呢? 如果软件系统从一开始没做好软件架构,遇到每次大的改变都需要重构,将是不能接受的。

    74430编辑于 2023-11-16
  • 来自专栏数据人生

    公司软件架构

    本文将介绍公司里面常用的开源软件 架构 版本管理工具Git:https://about.gitlab.com/ codereview工具phabricator ,可以和git集成:http://phabricator.org

    53320编辑于 2022-09-29
  • 来自专栏斑斓

    软件架构预述

    软件架构编年史》 作品连载 《软件架构编年史》是Herberto Graca的系列作品,我在ThoughtWorks的同事覃宇在征得作者同意与授权后,在简书陆续发布了该系列的译文。 该系列回眸了软件架构的发展历程,对主流的架构模式与设计方法进行了系统的梳理和介绍,可以作为架构师的入门读物。 这篇文章是软件架构编年史(译)的一部分,这部编年史由一系列关于软件架构的文章组成。在这一系列文章中,我将写下我对软件架构的学习和思考,以及我是如何运用这些知识的。 软件架构[…]是系统需要考虑的一组结构,它们包括软件元素和它们之间的关系,以及这些元素和关系的属性。 他对其他干系人对架构的贡献既不开放,也不轻易接收,而是阉割了这些贡献。 ◐ 架构的坏味道 [8] 僵化(Rigidity) 如果软件难以修改是因为修改会导致更多关联修改,软件就是僵化的。

    53730编辑于 2023-03-23
  • 来自专栏Linyb极客之路

    软件架构入门

    软件架构(software architecture)就是软件的基本结构。 合适的架构软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。 O'Reilly 出版过一本免费的小册子《Software Architecture Patterns》(PDF), 介绍了五种最常见的软件架构,是非常好的入门读物。 ? 软件架构就是软件的基本结构。 架构的本质是管理复杂性。如果你觉得架构不重要,可能是你做的事情不够复杂,或者是你没有管理好复杂性。架构模式虽多,经过抽象沉淀之后,也就那么几种: 1. 分层架构(比较传统的单体架构2. 事件驱动架构不适于做顶层架构,但适合做局部实现,几乎遍布在通信软件的各个角落。 让开发人员聚焦业务逻辑的实现,其他交给容器云平台来完成; 2. 支持业务系统的快速迭代,支撑业务的快速变化和发展; 3.

    1.2K31发布于 2019-07-22
  • 来自专栏码农沉思录

    软件架构概念

    “你对架构这个词怎么理解?” emm ….. 实际上,软件架构分成 2 派。 1 软件架构的派别 组成派 组成派的定义非常简洁。 定义:软件系统的架构将系统描述为计算组件及组件之间的交互。 该架构关注架构实践中的客体——软件,以软件本身为描述对象。 b. 分析了软件的组成,即软件由承担不同任务的组件组成,这些组件通过相关交互,完成更高层次的计算。 但核心思想非常明确:软件架构是在一些重要方面所做出的决策的集合。 软件架构并不仅仅注重软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解性、经济和技术的限制及权衡,以及美学等。 2 组成派、决策派 概念解析 组成派: 架构设计是分与合的艺术。 架构 = 组件 + 交互。

    1.2K30发布于 2019-05-05
  • 来自专栏阮一峰的网络日志

    软件架构入门

    软件架构(software architecture)就是软件的基本结构。 合适的架构软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。 一、分层架构 分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。 这种架构软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。 虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。 ? 事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构。它分成四个部分。 ? 优点 分布式的异步架构,事件处理器之间高度解耦,软件的扩展性好 适用性广,各种类型的项目都可以用 性能较好,因为事件的异步本质,软件不易产生堵塞 事件处理器可以独立地加载和卸载,容易部署 缺点

    97740发布于 2018-04-13
  • 来自专栏全栈程序员必看

    软件架构介绍

    一、软件架构是个什么概念,架构的定义: 1.软件架构是一个系统的草图。 2.软件架构描述的对象是直接构成系统的抽象组件。 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯。 行业专家、产品咨询师、资深顾问通常我们说的架构师是1和2的结合 三、常见软件架构分类: 1)分层架构 分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。 如果你不知道要用什么架构,那就用它。 这种架构软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。 用户请求大量增加时,必须依次扩展每一层,由于每一层内部是耦合的,扩展会很困难 2)事件驱动架构 事件(event)是状态发生变化时,软件发出的通知。 事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构。它分成四个部分。

    1.2K20编辑于 2022-08-04
  • 来自专栏LINUX阅码场

    Android架构纵横谈之——软件自愈能力 (2

    本系列2012年的时候发表在我的blog上面,现搬到公众号 接上回: Android架构纵横谈之——软件自愈能力 (1) 上回书(Android架构纵横谈之——软件自愈能力 (1))我们说到Android

    98940发布于 2019-10-08
  • 来自专栏Frank909

    汽车软件架构学习笔记(一):九问软件架构

    Q1.什么是软件架构软件架构的定义没有一个统一的标准,各有各的看法。 可以从 2 个维度描述: 静态结构,包括层次、模块划分以及更细节的数据结构体等等,代表一个系统的骨架,就如一幢建筑物的框架; 动态行为,包括模块间的通信、交互机制,代表系统的行为。 Q2.什么属于架构层面的内容? 架构一般指的是软件系统宏观层面的设计部分,前面讲到架构是骨架,关注于整体,一般不会关注于细节。 有下面的作用: 扮演着系统骨架的角色 影响质量属性 与软件功能正交 决定系统能做什么 更加重要的是决定系统不做什么 尤其是最后一点非常重要,比如在汽车自动驾驶当中,自动化程度是分等级的,假如你设计一个L2 当然,正常的开发者都知道很多情况需要架构的,比如: 实现特别难的解决方案 非常容易失败的高度复杂项目 非常难以满足的质量属性的系统 需要统筹的产品线 无非就 2 点: 越难的项目越需要架构设计 产品平台需要架构设计

    1.2K20编辑于 2022-01-11
  • 来自专栏超级架构师

    软件架构」10种常见的软件架构模式

    在主要的软件开发开始之前,我们必须选择一个合适的架构,为我们提供所需的功能和质量属性。因此,在将它们应用于我们的设计之前,我们应该了解不同的体系结构。 ? 什么是架构模式? 根据维基百科, 架构模式是一种通用的、可重用的解决方案,用于解决给定上下文中软件架构中常见的问题。架构模式类似于软件设计模式,但范围更广。 2. 客户机-服务器模式 此模式由两方组成:一个服务器和多个客户端。 服务器组件将为多个客户端组件提供服务。 客户机从服务器请求服务,服务器向这些客户机提供服务。此外,服务器继续侦听客户端请求。 用法 Gnutella和G2等文件共享网络) 多媒体协议,如P2PTV和PDTP。 ? 7. 事件总线模式 此模式主要处理事件,有4个主要组件:事件源、事件侦听器、通道和事件总线。 架构模式比较 下表总结了每种架构模式的优缺点。 ?

    1.7K11发布于 2020-05-14
  • 来自专栏Java技术进阶

    【系统架构】-如何评估软件架构

    概念 敏感点:一个或多个构件(和/或构件之间的关系)的特性 权衡点:影响多个质量属性的特性,是多个质量属性的敏感点 风险点:指架构设计中潜在的、存在问题的架构决策所带来的隐患 非风险点:指不会带来隐患 基于度量 该方式建立在软件架构度量的基础上,首先要建立质量属性和度量之间的映射原则,即确定怎么样从度量结果推出系统具有什么样的质量属性;然后从软件架构文档中获取度量信息;最后根据映射原则分析推到出系统的质量属性 基于场景 该方式由SEI首先提出并应用在架构权衡分析法(ATAM)和软件架构分析法(SAAM)中,它是通过分析软件架构对场景(也就是对系统的使用或修改活动)的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度 架构分析法-SAAM SAAM最初用于分析架构可修改性,后扩展到其他质量属性。 1、整理场景 2、对场景进行求精 3、确定场景的优先级 4、分配效用 5、形成策略-场景-响应级别的对应关系 6、使用“内插法”确定期望的质量属性响应级别的效用 7、计算架构策略的总收益

    1.5K30编辑于 2022-12-02
  • 来自专栏超级架构师

    软件架构】为杠杆(利用率)架构设计软件

    卡瓦尔康蒂:我在这里谈论的是如何利用软件架构。首先,我将在这里定义杠杆的含义。这是谷歌的定义。杠杆率是相对于你所做投资的深度,你可以获得的价值量。我们希望获得比您所做的投资更高的价值。 在软件环境中,是您所做的决定、所做的选择,或者您所获得的与您所能创造的价值量相关的技术债务。 自2013年底以来,我一直是Nubank的首席软件工程师。七年多一点了。我住在巴西圣保罗。 在一个复杂的领域中迅速成长 Nubank是拉丁美洲领先的金融科技公司,是世界上最大的数字银行。 每次部署时,我们都会在EC2上创建一个新实例并销毁旧实例,这样您就不会有处理基础架构更改的复杂性。我们从一开始就选择使用微服务,因为我们知道金融领域非常复杂。 每次部署时,我们都会在EC2上创建一个新实例并销毁旧实例,这样您就不会有处理基础架构更改的复杂性。我们从一开始就选择使用微服务,因为我们知道金融领域非常复杂。

    54720编辑于 2022-03-03
  • 来自专栏IT架构圈

    『互联网架构软件架构-软件系统设计(一)

    软件系统设计 软件系统设计在很多人眼里就是写文档,写文档是一种负担,其实系统设计头脑风暴,是一种非常开心的事情。所以必须掌握什么是系统的设计。它里面有哪些方法论,如何去做一些系统设计。 直到后来跟第三方系统进行交互数据,刚开始草草的设计下,导致之后的2个月都没好过。所以说系统设计是一项非常重要的工作。而不是老铁们经常说的就是写个文档就行了。 拿这键盘直接干。 所以体系结构就需要了解软件设计的本质。也可以说架构2.应当设计的很稳定 盖到一半,要换地基是不是很悲催。开发的设计的时候一定要三思而后行。 而不是开发人员自己歪歪,高水平的设计人员就是设计出来刚刚满足用户需要的软件,而不是不惜一切代码设计出来一个最先进的软件,没有最好,只有最合适。 如果软件经常发生,太悲剧了。体系结构设计的不稳定,范围不清楚,如果一个系统刚开始是B2C,突然要变成B2B,表结构,系统模块,界面,全部都要发生比较大的改变。

    84010发布于 2019-03-04
领券