软件体系结构指南

当软件行业的人谈论“架构”时,他们指的是危险地定义了软件系统内部设计中最重要方面的危险。bet188足球良好的架构很重要,否则将来增加了新功能越来越慢。

Like many in the software world, I’ve long been wary of the term “architecture” as it often suggests a separation from programming and an unhealthy dose of pomposity. But I resolve my concern by emphasizing that good architecture is something that supports its own evolution, and is deeply intertwined with programming. Most of my career has revolved about the questions of what good architecture looks like, how teams can create it, and how best to cultivate architectural thinking in our development organizations. This page outlines my view of software architecture and points you to more material about architecture on this site.

www.hdxh168.com上有关软件架构的资料指南。

What is architecture?

软件世界的人们长期以来争论了建筑的定义。对于一些东西,这是一个系统的基本组织,或者最高级别分量在一起的方式。我对此的思考是塑造的与拉尔夫·约翰逊的电子邮件交流他质疑这种说法,认为没有客观的方法来定义什么是基本的,什么是高层次的,更好的建筑观是必要的专家开发人员对系统设计的共同理解。bet188足球

Ralph Johnson, speaking at QCon

A second common style of definition for architecture is that it's “the design decisions that need to be made early in a project”, but Ralph complained about this too, saying that it was more like你希望你能在项目早期做出正确的决定.

他的结论是“Architecture is about the important stuff. Whatever that is”. 乍一看,这听起来很陈腐,但我发现它蕴含着丰富的内涵。这意味着从体系结构的角度思考软件的核心是决定什么是重要的(即什么是体系结构),然后花费精力保持这些体系结构元素处于良好的状态。开发人员要成为架构师,就必须能够认识到哪些元素是重要的,认识到如果不加以控制,哪些元素可能会导致严重的问题。

拉尔夫的电子邮件构成了我的IEEE软件专栏, which discussed the meaning of software architecture and the role of an architect.

为什么建筑很重要?

对于软件产品的客户和用户来说,体系结构是一个棘手的问题,因为他们并不能立即察觉到。但糟糕的体系结构是导致软件中粗枝大叶的主要因素,这些粗枝大叶的元素阻碍了开发人员理解软件的能力。含有大量杂质的软件很难改变y、 导致功能更慢、缺陷更多。

This situation is counter to our usual experience. We are used to something that is "high quality" as something that costs more. For some aspects of software, such as the user-experience, this can be true. But when it comes to the architecture, and other aspects of internal quality, this relationship is reversed.高内部质量导致新功能的速度更快, because there is less cruft to get in the way.

While it is true that we can sacrifice quality for faster delivery in the short term, before the build up of cruft has an impact, people underestimate how quickly the cruft leads to an overall slower delivery. While this isn't something that can be objectively measured, experienced developers reckon that对内部质量的关注只需几周而不是几个月。

阅读更多…

在2015年在奥斯康,我给了一个简短的谈话(14分钟)关于什么是体系结构及其重要性。


应用程序体系结构

软件开发中的重要决策因我们正在考虑的背景的规模而异。共同规模是应用程序,因此“应用程序架构”。

定义应用程序架构的第一个问题是应用程序的内容没有明确的定义。我的观点是应用程序是一种社会结构:

Such a loose definition leads to many potential sizes of an application, varying from a few to a few hundred people on the development team. (You'll notice I look at size as the amount of people involved, which I feel is the most useful way of measuring such things.) The key difference between this and enterprise architecture is that there is a significant degree of unified purpose around the social construction.

应用程序边界

软件开发的未定问题之一决定了一块软件的界限。(是操作系统的浏览器部分?)许多服务导向架构的支持者认为应用程序正在消失 - 因此未来的企业软件开发将是关于组装服务的组装。

我认为应用程序不会出于相同的原因消失,为什么应用边界很难绘制。本质上应用是社会建构:

由Ma188bet足球充值rtin Fowler.

2003年9月11日

阅读更多…

布利基

team organization应用集成application architecture

微服务指南

微服务架构模式是一种开发单个应用程序作为小型服务套件的方法,每个应用程序都在自己的过程中运行并与轻量级机制进行通信,通常是HTTP资源API。这些服务围绕业务功能构建,并通过全自动部署机械独立部署。这些服务的集中管理最少,可以用不同的编程语言编写并使用不同的数据存储技术。虽然他们的优势在过去几年中使它们变得非常时尚,但它们随着分布而越来越多的成本,削弱了一致性,需要在运营管理中成熟。

由Ma188bet足球充值rtin Fowler.

阅读更多…

指导

application architectureweb服务microservices

无服务器架构

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

作者:迈克·罗伯茨

2018年5月22日

阅读更多…

article

流行的application architecture

微型前端

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

由Cam Jackson.

2019年6月19日

阅读更多…

article

application architecture前端microservices

贵架构

In the mid 2000s I was pursuing a couple writing projects that could have turned into books, but haven't yet made it. One was on the architecture of user interfaces. As part of this work, I drafted a description of how GUI architectures evolved, comparing the default approach of Forms and Controls with the the Model-View-Controller (MVC) pattern. MVC is one of the most ill-understood patterns in the software world, understandably so since it was not well documented. So my writing here tries to give a better picture of what MVC really means and how it evolved through Model-View-Presenter and other forms.

表示域数据分层

将信息丰富的程序模块化的最常见方法之一是将其分为三个大的层:表示(UI)、域逻辑(aka business logic)和数据访问。因此,您经常会看到web应用程序被划分为一个web层,它知道如何处理HTTP请求和呈现HTML,一个业务逻辑层包含验证和计算,以及一个数据访问层,它负责整理如何管理数据库或远程服务中的持久数据。

由Ma188bet足球充值rtin Fowler.

2015年8月26日

阅读更多…

布利基

team organization数据库封装application architectureweb开发


企业架构

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

Much of enterprise architecture is about understanding what is worth the costs of central coordination, and what form that coordination should take. At one extreme is a central architecture group that must approve all architectural decision for every software system in the enterprise. Such groups slow down decision making and cannot truly understand the issues across such a wide portfolio of systems, leading to poor decision-making. But the other extreme is no coordination at all, leading to teams duplicating effort, inability for different system to inter-operate, and a lack of skills development and cross-learning between teams.

像大多数有敏捷心态的人一样,我更喜欢在权力下放一边犯错,所以将靠近混乱的岩石而不是窒息的控制。但是,在渠道的那一边仍然意味着我们必须避免岩石,以及一种最大化局部决策的方法,这使得最小化所涉及的实际成本。

企业架构师加入团队

企业架构群体经常与日常发展分开。这可能导致他们对发展工作的了解,从未采取广泛的公司范围的观点出发。看到这一点经常发生我的同事(思想家CTO)Rebecca认为,通过加入开发团队,企业架构师可以更加有效。

由Rebecca Parsons.

Sep 2005

阅读更多…

IEEE软件企业体系结构

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

当一个组织接受敏捷心态时,企业架构不会消失,但企业架构师的作用也会发生变化。企业架构师不再做出选择,但帮助他人做出正确的选择,然后辐射该信息。企业架构师仍然需要形成愿景,但随后需要在团队之间建立桥梁来建立学习的社区。这些将允许团队探索新方法并互相学习,并在该增长的合作伙伴中与企业架构师一起探索。

作者:Kevin Hickey

2015年11月30日

阅读更多…

article

敏捷的企业体系结构技术领导倾斜

产品胜过项目

Software projects are a popular way of funding and organizing software development. They organize work into temporary, build-only teams and are funded with specific benefits projected in a business case. Product-mode instead uses durable, ideate-build-run teams working on a persistent business issue. Product-mode allows teams to reorient quickly, reduces their end-to-end cycle time, and allows validation of actual benefits by using short-cycle iterations while maintaining the architectural integrity of their software to preserve their long-term effectiveness.

作者:Sriram Narayan

2018年2月20日

阅读更多…

article

企业体系结构team organization

建筑师电梯 - 参观楼层

许多大型组织separ看到他们的引擎ated by many floors from the executive penthouse, which also separates business and digital strategy from the vital work of carrying it out. The primary role of an architect is to ride the elevators between the penthouse and engine room, stopping wherever is needed to support these digital efforts: automating software manufacturing, minimizing up-front decision making, and influencing the organization alongside technology evolution.

by Gregor Hohpe

24 May 2017

阅读更多…

article

企业体系结构

使用REST的企业集成

大多数内部REST API是一个用于单个集成点的一次性API目的。在本文中,我将讨论您对非公共API的限制和灵活性,并从多个团队中完成大规模宁静集成的经验教训。

作者:Brandon Byars

2013年11月18日

阅读更多…

article

应用集成web服务企业体系结构