软件架构指南

当软件行业的人谈论“架构”时,他们指的是软件系统内部设计的最重要方面的模糊定义概念。bet188足球一个好的架构是很重要的,否则在将来添加新功能就会变得更慢、更昂贵。

与软件世界的许多人一样,我一直对“架构”一词持谨慎态度,因为它经常意味着与编程的分离和不健康的浮夸。但是我通过强调好的架构是支持其自身发展的,并且与编程紧密相连的,来解决我的担忧。我职业生涯的大部分时间都在思考这样的问题:什么是好的架构,团队如何创建它,以及如何在我们的开发组织中最好地培养架构思维。这个页面概述了我对软件架构的看法,并向您指出了这个站点上关于架构的更多资料。

www.hdxh168.com上关于软件架构的材料指南。

建筑是什么?

软件世界的人们一直在争论架构的定义。对于一些人来说,它就像是系统的基本组织,或者是最高级别的组件连接在一起的方式。我的想法是由与拉尔夫·约翰逊的电子邮件往来他对这种说法提出了质疑,认为没有客观的方法来定义什么是基本的,什么是高层次的,以及更好的建筑视角是什么专家开发人员对系统设计的共同理解。bet188足球

拉尔夫·约翰逊在QCon大会上发言

架构定义的第二种常见风格是it it是“项目早期需要做出的设计决策”,但是Ralph也抱怨过这一点,他说it it更像bet188足球你希望在项目早期就能做出正确的决定

他的结论是“建筑是关于重要的东西。不管那是“。乍一看,这听起来很老套,但我发现它有很多内涵。这意味着从架构上考虑软件的核心是决定什么是重要的(即什么是架构的),然后将精力花费在保持这些架构元素处于良好状态上。对于想要成为架构师的开发人员来说,他们需要能够识别出哪些元素是重要的,识别出哪些元素可能会导致严重的问题(如果它们不受控制的话)。

拉尔夫的邮件构成了我为IEEE软件写的专栏,讨论了软件架构的含义和架构师的角色。

为什么架构很重要?

对于软件产品的客户和用户来说,架构是一个棘手的主题——因为它不是他们立即就能察觉到的东西。但是,糟糕的体系结构是导致cruft增长的主要因素——软件的cruft元素阻碍了开发人员理解软件的能力。软件包含大量的硬块更难修改吗,导致特性到达得更慢,缺陷更多。

这种情况与我们通常的经验相反。我们习惯了“高质量”的东西,因为它更贵。对于软件的某些方面,例如用户体验,这可能是正确的。但是,当涉及到架构和内部质量的其他方面时,这种关系就反过来了。高的内部质量导致更快地交付新特性,因为碍手碍脚的东西少了。

虽然我们可以在短期内牺牲质量以获得更快的交付速度,但是在cruft的构建产生影响之前,人们低估了cruft导致整体交付速度变慢的速度。虽然这不是可以客观衡量的东西,但有经验的开发人员认为关注内部质量在几周而不是几个月内就会有回报。

阅读更多…

2015年在OSCON,我给了a简短的谈话(14分钟)关于什么是架构以及它为什么重要。


应用程序体系结构

软件开发中的重要决策随着我们所考虑的上下文的规模而变化。一种常见的尺度是应用程序的尺度,因此称为“应用程序体系结构”。

定义应用程序体系结构的第一个问题是没有明确定义什么是应用程序。我的观点是应用是一种社会建构:

这样一个松散的定义导致了应用程序的许多潜在大小,从开发团队的几个人到几百人不等。(你会注意到,我将规模视为参与人数,我觉得这是衡量此类事情最有用的方法。)此架构与企业架构的关键区别在于,围绕社会构建有很大程度的统一目标。

应用程序边界

软件开发中尚未确定的问题之一是确定软件的边界。(浏览器是操作系统的一部分吗?)许多面向服务体系结构的支持者认为,应用程序正在消失——因此,未来的企业软件开发将是将服务组装在一起。

我不认为应用程序会因为难以划分应用程序边界的原因而消失。本质上应用是社会建构:

由马丁188bet足球充值

2003年9月11日

阅读更多…

bliki

团队组织118金宝博网 应用程序体系结构

118金宝博玩法

微服务体系结构模式是一种将单个应用程序作为一组小服务进行开发的方法,每个小服务都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务是围绕业务功能构建的,并且可以通过完全自动化的部署机制独立部署。这些服务的集中管理非常少,它们可以用不同的编程语言编写,并使用不同的数据存储技术。虽然它们的优点使它们在过去几年非常流行,但它们也带来了增加分配、削弱一致性和要求经营管理成熟的代价。

Serverless架构

无服务器架构是包含第三方“后端即服务”(BaaS)服务的应用程序设计,和/或包括在bet188足球“功能即服务”(FaaS)平台上托管的临时容器中运行的自定义代码。通过使用这些思想和相关的思想(如单页应用程序),这样的体系结构消除了对传统的始终在线服务器组件的大量需求。无服务器架构可能会受益于操作成本、复杂性和工程准备时间的显著降低,但代价是增加了对供应商依赖性和相对不成熟的支持服务的依赖。

迈克罗伯茨

2018年5月22日

阅读更多…

文章

应用程序体系结构

微前端

好的前端开发是困难的。扩展前端开发,以便许多团队可以同时处理大型且复杂的产品,这甚至更加困难。在本文中,我们将描述将前端代码分割成许多更小、更易于管理的部分的最新趋势,以及这种体系结构如何提高前端代码开发团队的效率和效率。除了讨论各种好处和成本之外,我们还将介绍一些可用的实现选项,并深入介绍一个完整的示例应用程序,该应用程序演示了该技术。

通过凸轮杰克逊

2019年6月19日

阅读更多…

文章

应用程序体系结构前端microservices

GUI架构

在21世纪头十年的中期,我一直在从事一些写作项目,这些项目本可以写成书,但还没有成书。一个是关于用户界面的架构。作为这项工作的一部分,我草拟了GUI架构如何发展的描述,并将表单和控件的默认方法与模型-视图-控制器(MVC)模式进行了比较。MVC是软件世界中最难以理解的模式之一,这是可以理解的,因为它还没有很好的文档。所以我在这里的文章试图更好地描述MVC的真正含义,以及它是如何通过Model-View-Presenter和其他形式发展起来的。

表示域数据分层

将信息丰富的程序模块化的最常见方法之一是将其分为三层:表示层(UI)、域逻辑层(又名业务逻辑层)和数据访问层。因此,您经常看到web应用程序被划分为了解如何处理HTTP请求和呈现HTML的web层、包含验证和计算的业务逻辑层和数据访问层,后者负责对如何管理数据库或远程服务中的持久数据进行分类。

由马丁188bet足球充值

2015年8月26日

阅读更多…

bliki

团队组织数据库封装应用程序体系结构web开发


企业架构

当应用程序体系结构专注于某种形式的概念应用程序边界内的体系结构时,企业体系结构则关注整个大型企业的体系结构。这样的组织通常太大,无法将其所有的软件以任何一种内聚分组的方式进行分组,因此需要具有许多代码库的团队之间的协调,这些代码库是彼此独立开发的,资金和用户是彼此独立操作的。

企业架构的大部分内容都是关于理解什么值得中央协调的成本,以及协调应该采取什么形式。在一种极端情况下,是一个中心架构组,它必须批准企业中每个软件系统的所有架构决策。这样的团队会降低决策速度,并且不能真正理解跨如此广泛的系统组合的问题,从而导致糟糕的决策。但另一个极端是完全没有协调,导致团队重复工作,无法让不同的系统进行互操作,并且缺乏团队之间的技能开发和交叉学习。

就像大多数有敏捷思维的人一样,我宁愿在分权方面犯错误,这样就会更接近混乱的岩石,而不是令人窒息的控制。但是,在英吉利海峡的另一边,我们仍然需要避开礁石,以最大限度地减少实际成本的方式来实现当地决策的最大化。

企业架构师加入团队

企业架构组经常从日常的开发中分离出来。这可能导致他们对开发工作的知识过时,并且开发团队没有从广泛的公司范围的角度出发。看到这种情况频繁发生,我的同事(ThoughtWorks CTO) Rebecca认为,加入开发团队可以大大提高企业架构师的效率。

由丽贝卡·帕森斯

2005年9月

阅读更多…

ieeeSoftware企业架构

企业架构师在精益企业中的角色

当组织采用敏捷思维时,企业架构不会消失,但企业架构师的角色会发生变化。企业架构师不再做选择,而是帮助其他人做出正确的选择,然后传播这些信息。企业架构师仍然需要形成一个远景,但是之后需要在团队之间建立桥梁,以构建学习社区。这将允许团队探索新的方法并相互学习,企业架构师将作为该增长中的合作伙伴。

凯文·希

2015年11月30日

阅读更多…

文章

敏捷企业架构技术领导

产品/项目

软件项目是资助和组织软件开发的一种流行方式。他们将工作组织成临时的、只构建的团队,并在业务案例中以特定的利益进行资助。产品模式使用持久的、构思构建运行的团队来处理持久的业务问题。产品模式允许团队快速重新定位,减少他们的端到端周期时间,并允许通过使用短周期迭代来验证实际利益,同时维护他们软件的架构完整性,以保持他们的长期有效性。

由斯纳

2018年2月20日

阅读更多…

文章

企业架构团队组织

建筑师的电梯——参观上层

许多大型组织的IT引擎与高层行政公寓之间隔着几层楼,这也将业务和数字战略从执行IT的重要工作中分离出来。架构师的主要角色是乘坐阁楼和机房之间的电梯,在需要支持这些数字化工作的任何地方停下来:自动化软件制造、最小化预先决策,以及在技术演进的同时影响组织。

由Gregor Hohpe

2017年5月24日

阅读更多…

文章

企业架构

使用REST的企业集成

大多数内部REST api都是为单个集成点构建的一次性api。在本文中,我将讨论非公共api的约束和灵活性,以及跨多个团队进行大规模RESTful集成的经验教训。

由布兰登拜亚斯

2013年11月18日

阅读更多…

文章

118金宝博网 web服务企业架构