期间:2013

Datensparsamkeit

Datensparsamkeit 是一个德语词,很难准确地翻译成英语。它是一种关于我们如何捕获和存储数据的态度,表明我们应该只处理真正需要的数据。

作者:Martin Fowler

2013 年 12 月 12 日

阅读更多…

bliki

数据库 网页开发 互联网文化 法律 数据分析 隐私

使用 REST 进行企业集成

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

作者:Brandon Byars

2013 年 11 月 18 日

阅读更多…

文章

应用程序集成 网络服务 企业架构

历史上受到歧视

我曾在本网站上写过关于软件开发行业中存在问题的 多样性失衡,以及我们如何需要采取有意识的行动来增加代表性不足群体的比例。这很好,但自然会引出我们应该关注哪些代表性不足群体的问题。在 Thoughtworks,我们一直在使用“历史上受到歧视”一词来帮助我们专注于拥抱多样性的主要驱动力之一。

作者:Martin Fowler

2013 年 10 月 10 日

阅读更多…

bliki

多样性

Nexus7

几个月前,我买了一台 谷歌 Nexus 7 平板电脑。我喜欢在使用设备一段时间后才发布我的使用体验,但这种做法的缺点是,我现在谈论的平板电脑已经被取代了。也就是说,我仍然会分享我的评论,因为它们可能仍然对正在考虑未来平板电脑选择的人有所帮助。

作者:Martin Fowler

2013 年 10 月 8 日

阅读更多…

bliki

小工具

欧洲游戏

我是欧洲游戏的粉丝——一种易于上手但又充满思考的棋盘游戏风格。我喜欢它们,因为你通常可以在一个晚上学会并玩一局,但它们提供了足够的战略兴趣,让你可以玩很多次。有时我会被问到更多关于它们的问题,以及我的最爱是什么。所以这里有一篇简短的文章来解释它们,以及一个关于我架子上游戏的交互式列表。

作者:Martin Fowler

2013 年 10 月 2 日

阅读更多…

棋盘游戏 消遣

Huffpost 直播小组讨论“程序员效应”

我参加了一个 20 分钟的小组讨论,主题是女性在科技领域参与度下降以及我们应该如何应对这一问题。

作者:Martin Fowler

2013 年 9 月 18 日

更多…

视频

会议小组 多样性

测试异步 JavaScript

在 JavaScript 社区中,似乎存在一种普遍的误解,认为测试异步代码需要与测试“常规”同步代码不同的方法。在这篇文章中,我将解释为什么通常情况并非如此。我将重点介绍测试支持异步行为的代码单元与本质上是异步的代码之间的区别。我还将展示基于 promise 的异步代码如何适合于简洁明了的单元测试,这些测试可以以清晰易读的方式进行测试,同时仍然验证异步行为。

作者:Pete Hodgson

2013 年 9 月 18 日

阅读更多…

文章

测试

阈值测试

阈值测试是插入到 部署管道 中的测试,通过将当前构建中的值与阈值进行比较来监控某些可衡量的现象。如果当前构建的值超过阈值,则测试失败,导致构建失败。

作者:Martin Fowler

2013 年 9 月 12 日

阅读更多…

bliki

测试类别

页面对象

当你针对网页编写测试时,你需要引用网页中的元素,以便点击链接并确定显示的内容。但是,如果你编写直接操作 HTML 元素的测试,那么你的测试将对 UI 的更改很脆弱。页面对象将 HTML 页面或片段包装在一个特定于应用程序的 API 中,允许你操作页面元素,而无需深入研究 HTML。

作者:Martin Fowler

2013 年 9 月 10 日

阅读更多…

bliki

测试 封装 网页开发

告诉,不要问

告诉,不要问是一项原则,它帮助人们记住面向对象是关于将数据与操作该数据的函数捆绑在一起的。它提醒我们,与其询问对象数据并对该数据进行操作,不如告诉对象该做什么。这鼓励将行为移入对象,与数据一起使用。

作者:Martin Fowler

2013 年 9 月 5 日

阅读更多…

bliki

封装 API 设计 对象协作设计

前往阿姆斯特丹主题演讲

我在 2013 年前往阿姆斯特丹的主题演讲。和往常一样,它遵循我的“21 世纪软件设计”模板,包含两个简短的演讲。我首先谈论 无模式数据结构,解释为什么总是存在隐式模式以及这种模式的后果。第二个(在 25m24s)我谈论 敏捷软件开发的本质 以及 敏捷熟练度模型

作者:Martin Fowler

2013 年 9 月 4 日

更多…

视频

演讲视频

给定、当、然后

给定、当、然后是一种表示测试的风格——或者正如其倡导者所说——使用 示例规范 来指定系统的行为。这是由 Daniel Terhorst-North 和 Chris Matts 在 行为驱动开发 (BDD) 中开发的一种方法。它作为许多测试框架(如 Cucumber)的结构化方法出现。你也可以将其视为对 四阶段测试 模式的重新表述。

作者:Martin Fowler

2013 年 8 月 21 日

阅读更多…

bliki

测试 领域特定语言

在 Thoughtworks 工作是什么感觉

在接受 InformIT 采访时,我谈到了我对在 Thoughtworks 工作的(相当偏颇的)看法。我们谈论了我是如何来到这里的,为什么我留在这里,以及人们可以做些什么来加入我们这家有趣的公司并取得成功。

作者:Martin Fowler

2013 年 8 月 20 日

阅读更多…

thoughtworks

表达式生成器

使用 流畅接口 的问题之一是它会导致一些奇怪的方法。考虑以下示例

作者:Martin Fowler

2013 年 8 月 8 日

阅读更多…

bliki

领域特定语言

隐私保护令人讨厌的人

我们需要支持隐私,不是为了我们这些“无事可隐”的人,而是为了像调查记者和活动家这样令人讨厌的人,没有他们,我们的民主就会崩溃。

作者:Martin Fowler

2013 年 7 月 25 日

阅读更多…

文章

互联网文化 隐私

用户定义字段

软件系统中的一项常见功能是允许用户在数据结构中定义自己的字段。考虑一个地址簿——有很多东西你可能想添加。随着每天都有新的社交网络出现,用户可能希望为他们的联系人添加一个新的 Bunglr ID 字段。

作者:Martin Fowler

2013 年 7 月 23 日

阅读更多…

bliki

数据库 应用程序架构 API 设计

故事点

故事点是敏捷项目中对故事进行估算的常用名称。结合 XpVelocity,它们提供了一种技术,通过提供故事完成时间的预测来帮助规划。

作者:Martin Fowler

2013 年 7 月 16 日

阅读更多…

bliki

估算

故事计数

故事计数是一种规划和估算技术。与 故事点 类似,它与 XpVelocity 协同工作,帮助你确定在固定时间内可以交付多少个故事。但是,它的不同之处在于,你只考虑每个时间单位的故事数量,并且(主要)忽略它们的相对大小。

作者:Martin Fowler

2013 年 7 月 16 日

阅读更多…

bliki

估算

理想时间

理想时间是早期 极限编程 中使用的一个术语,用于帮助估算工作量。现在它已经被 故事点故事计数 大致取代了。

作者:Martin Fowler

2013 年 7 月 16 日

阅读更多…

bliki

估算

极限编程

极限编程 (XP) 是一种软件开发方法,主要由 Kent Beck 开发。XP 是最早的 敏捷方法 之一,事实上,XP 是 90 年代末和 00 年代初的主流敏捷方法,直到 00 年代中期 Scrum 成为主流。许多人(包括我自己)认为 XP 是引起人们对敏捷方法关注的主要催化剂,并且优于 Scrum 作为开始敏捷开发的基础。

作者:Martin Fowler

2013 年 7 月 11 日

阅读更多…

bliki

敏捷 敏捷采用 极限编程

云计算

在过去几年中,“云”一词已经被过度炒作。过度炒作的词语的一个特点是它们几乎没有定义(是的,NosqlDefinition,我是在看着你)。

事实证明,来自 NIST 的云计算有一个非常好的定义。它可以通过一份非常简短且易于理解的 标准文档 获得(不,我没有开玩笑)。

作者:Martin Fowler

2013 年 7 月 11 日

阅读更多…

bliki

应用程序架构

不可变服务器

自动化配置工具(如 CFEnginePuppetChef)允许你指定服务器的配置方式,并将新旧机器纳入合规性。这有助于避免脆弱的 雪花服务器 问题。此类工具可以创建 凤凰服务器,这些服务器可以随时拆卸和重建。不可变服务器是这种方法的逻辑结论,即部署后不再修改的服务器,只是用新的更新实例替换。

作者:Kief Morris

2013 年 6 月 13 日

阅读更多…

bliki

持续交付 构建脚本

配置同步

自动化配置工具(如 CFEnginePuppetChef)允许你通过提供描述服务器元素配置的配方来避免 雪花服务器。配置同步会持续应用这些规范,无论是在定期时间表上还是在发生更改时,都会应用于服务器实例的整个生命周期。如果有人在工具之外对服务器进行了更改,则下次服务器同步时,它将恢复到中央指定的配置。如果需要进行一些配置更改,则在配置规范(配方、清单或特定配置工具的任何名称)中进行,然后将其应用于整个基础设施中的所有相关服务器。

作者:Kief Morris

2013 年 6 月 13 日

阅读更多…

bliki

持续交付

演进移动实施策略

移动设备的流量仍然比传统网络少,但其份额正在增长,因此我们需要考虑开发有效移动应用程序的策略。我们讨论了如何思考产品愿景,将用户参与的风格分为“向前倾斜”、“向后倾斜”和“向下看”三种风格;同时将它们整合到一个跨媒体应用程序中。我们讨论了为什么关注价值比关注流量更重要,激光和覆盖所有平台的策略,并认为Android、iOS和Web是三种可行的平台选择。Giles以我们与一家大型航空公司的合作案例作为结束。

Giles Alexander 和 Martin Fowler

2013年6月6日

更多…

视频

演讲视频 移动

嵌入式文档

如今,我越来越常看到通过服务器流式传输 JSON 数据结构。JSON 文档可以直接持久化,方法是使用聚合导向数据库或关系数据库中的序列化 LOB。JSON 文档也可以直接提供给 Web 浏览器,或用于将数据传输到服务器端页面渲染器。当以这种方式使用 JSON 时,我听到人们说使用面向对象的语言会妨碍工作,因为 JSON 需要先转换为对象,然后再渲染出来,这是一种编程上的浪费。我同意关于浪费的观点,但我认为这不是对象的问题,而是对封装的理解不足。

作者:Martin Fowler

2013年6月4日

阅读更多…

bliki

NoSQL 封装 对象协作设计

持续交付

持续交付是一种软件开发方法,它以一种可以随时发布到生产环境的方式构建软件。

当您做到以下几点时,您就在进行持续交付

  • 您的软件在其整个生命周期中都是可部署的
  • 您的团队优先考虑保持软件的可部署性,而不是开发新功能
  • 任何人都可以在有人对系统进行更改时,随时获得关于其系统生产就绪性的快速、自动化的反馈
  • 您可以按需对软件的任何版本执行一键式部署到任何环境

作者:Martin Fowler

2013年5月30日

阅读更多…

bliki

持续交付 版本控制

部署管道

自动化构建和测试环境面临的挑战之一是,您希望构建速度快,以便能够快速获得反馈,但全面测试需要很长时间才能运行。部署管道是一种通过将构建分解为多个阶段来解决此问题的方法。每个阶段都提供越来越高的信心,通常以额外的时间为代价。早期阶段可以发现大多数问题,从而提供更快的反馈,而后期阶段则提供更慢、更深入的探测。部署管道是持续交付的核心部分。

作者:Martin Fowler

2013年5月30日

阅读更多…

bliki

持续交付 构建脚本

DIP 在实践中

依赖倒置原则 (DIP) 自 20 世纪 90 年代初就已存在,尽管如此,在解决问题时,人们似乎很容易忘记它。在给出一些定义之后,我将介绍一些我在实际项目中使用过的 DIP 的应用,以便您能从这些例子中得出自己的结论。

Brett L. Schuchert

2013年5月21日

阅读更多…

文章

对象协作设计 应用程序架构

XP 速度

速度是一个概念,它通过将广泛的努力陈述与经过的时间联系起来,帮助校准计划。速度是对团队(或个人速度,如果是个人的话)在一段时间内完成多少工作量的陈述。您通常应该通过衡量过去一段时间内完成了多少工作量来确定速度,遵循昨天天气的原则。一种典型的方法是平均过去三个时间段的速度,以确定未来时间段的速度。速度最初是作为极限编程的一部分形成的,但此后已传播开来,现在广泛应用于各种形式的敏捷软件开发中。

作者:Martin Fowler

2013年5月17日

阅读更多…

bliki

极限编程 项目规划 估算

用户旅程测试

用户旅程测试是一种面向业务的测试,旨在模拟典型用户在系统中的“旅程”。此类测试通常会涵盖用户与系统交互的整个过程,以实现某个目标。它们充当用例中的一个路径。

作者:Martin Fowler

2013年4月24日

阅读更多…

bliki

测试类别

故事测试

故事测试是面向业务的测试,用于描述和验证作为用户故事一部分交付的软件。当故事被详细阐述时,团队会创建几个故事测试,这些测试充当故事的验收标准。故事测试可以组合成软件的回归套件,并提供从需求(用户故事)到测试(通过执行)到系统行为的可追溯性。故事测试通常是广域堆栈测试

作者:Martin Fowler

2013年4月24日

阅读更多…

bliki

测试类别 坏事

面向业务的测试

面向业务的测试是一种旨在用作帮助与开发团队的非编程成员(如客户、用户、业务分析师等)进行沟通的测试。当自动化时,它们会用面向领域的术语描述系统,忽略系统本身的组件架构。面向业务的测试通常用作验收标准,这些测试通过表明系统提供了客户期望的功能。

作者:Martin Fowler

2013年4月24日

阅读更多…

bliki

测试类别

Gap Inc. 的 SCMS 架构

SCMS PO 是一款帮助 Gap Inc. 管理采购订单的应用程序。该应用程序的架构深受其开发团队的喜爱,因此对于具有丰富的 JavaScript 前端与服务 JSON 的后端交互的系统来说,它是一个很好的示例架构。有趣的设计特性包括使用 Knockout.js 的 Presentation Model 模式,在客户端和服务器上运行的 JavaScript 验证器,使用存储库封装数据访问,使用 MongoDB 作为应用程序数据库以及测试组合。

作者:Martin Fowler

2013年4月23日

阅读更多…

infodeck

信息库 示例架构

D D D_ 聚合

聚合是领域驱动设计中的一个模式。DDD 聚合是域对象的集群,可以将其视为一个单元。例如,订单及其行项目,它们将是单独的对象,但将订单(及其行项目)视为一个聚合很有用。

作者:Martin Fowler

2013年4月23日

阅读更多…

bliki

领域驱动设计 对象协作设计

用户故事

用户故事是软件系统所需行为的片段。它们广泛应用于敏捷软件方法中,将大量功能划分为较小的部分,以便于规划。您也会听到相同的概念被称为功能,但“故事”或“用户故事”一词近年来在敏捷圈中变得流行起来。

作者:Martin Fowler

2013年4月22日

阅读更多…

bliki

敏捷 需求分析

组件测试

组件测试是一种将所测试软件的范围限制在被测系统一部分的测试。它与广域堆栈测试形成对比,后者旨在尽可能多地测试系统。

作者:Martin Fowler

2013年4月22日

阅读更多…

bliki

测试类别

广域堆栈测试

广域堆栈测试是一种测试,它测试大型应用程序的大部分组件。它通常被称为端到端测试全栈测试。它与组件测试形成对比,后者只测试系统的特定部分。

作者:Martin Fowler

2013年4月22日

阅读更多…

bliki

测试类别

Javascript Promise

在 Javascript 中,Promise 是表示异步操作的待处理结果的对象。您可以使用它们来安排异步操作完成后进一步的活动,方法是提供回调函数。

作者:Martin Fowler

2013年4月22日

阅读更多…

bliki

语言特性

示例架构

我们对软件系统理解不断增长的一个问题是,我们没有看到足够的例子。在许多专业领域,人们通过观察已经完成的工作来学习。示例可以作为灵感来源、良好想法的来源以及对困难的警示。长期以来,以这种方式学习软件要困难得多。

作者:Martin Fowler

2013年4月6日

阅读更多…

bliki

应用程序架构 写作 示例架构

讨论 P of EAA 的 Ruby Rogues 播客

Ruby Rogues 是一个受欢迎的播客,定期小组讨论 Ruby 编程社区中的主题。他们有一个定期举办的读书会,最近选择P of EAA作为他们的特色书籍。因此,他们邀请我作为嘉宾参加他们的节目,讨论这本书以及它描述的模式,特别是这些模式与 Rails 框架之间有趣的关系。

作者:Martin Fowler

2013年3月20日

阅读更多…

音频

设计 应用程序架构 ruby 播客

估算的目的

我第一次接触敏捷软件开发是在极限编程的黎明时期与 Kent Beck 合作。让我印象深刻的事情之一是我们进行规划的方式。这包括一种估算方法,这种方法既轻量级,又比我以前见过的更有效。现在已经过去了十多年,经验丰富的敏捷开发人员之间出现了一种争论,即估算是否值得做,或者实际上是有害的。我认为,要回答这个问题,我们必须看看估算将用于什么目的。

作者:Martin Fowler

2013年2月27日

阅读更多…

bliki

指标 项目规划 估算

没有 DBA

在许多组织中,人们期望任何持久数据都将存储在由中央数据库管理组管理的关系数据库中。中央控制有各种原因,通常集中在使用集成数据库上。中央数据组担心如何防止出现格式错误的数据、会减慢重要共享资源速度的查询以及企业范围内的统一数据模型。

这些目标可能值得追求,但它们的一个后果是,关于存储数据的仪式繁多。我经常听到关于更改订单的抱怨,这些订单需要数周时间才能在数据库中添加一列。对于习惯于短周期演化设计的现代应用程序开发人员来说,这种仪式太慢了,更不用说太烦人了。

因此,应用程序开发组告诉我他们使用NoSQL 数据库来绕过 DBA。他们在这里使用的是“简单的数据存储”,而不是“真正的数据库”,这很有帮助。这样,DBA 就可以被排除在循环之外,他们通常不会被告知,或者乐于不关心。

作者:Martin Fowler

2013年2月25日

阅读更多…

bliki

数据库 NoSQL 演化设计

指标的适当使用

管理人员喜欢他们的指标。他们的想法是这样的:“我们需要一个数字来衡量我们的工作情况。数字可以集中人们的注意力,帮助我们衡量成功。”虽然出发点是好的,但以数字为导向的管理却出乎意料地会导致问题行为,最终会损害更广泛的项目和组织目标。指标本身并不是坏事;只是经常被不恰当地使用。这篇文章阐述了管理人员传统使用指标造成的许多问题,并提供了一种替代方法来解决这些问题。

Patrick Kua

2013年2月19日

阅读更多…

文章

指标 生产力 项目规划 技术领导力

关于无模式化、NoSQL 中的一致性和软件设计经济学的演讲

我在旧金山的一次 Thoughtworks 活动上发表了演讲,采用了我的惯用 演讲套件 风格。这次演讲的主题包括如何以及何时使用无模式数据结构、为什么 NoSQL 数据库中的数据一致性不仅仅是 ACID 与 BASE 的区别,以及设计良好的软件的经济学理由。

作者:Martin Fowler

2013年2月19日

更多…

视频

演讲视频

取消销售佣金

销售佣金在软件行业几乎普遍存在,就像所有商业领域一样。人们喜欢它,因为它使销售人员与雇用他们的公司之间的利益一致。然而,销售佣金模式存在严重问题,这些问题导致 Thoughtworks 在 2013 年取消了所有销售佣金。

作者:Martin Fowler

2013 年 2 月 18 日

阅读更多…

infodeck

Thoughtworks 信息库

透明编译

越来越多的 Web 开发人员使用像 CoffeeScriptSCSS 这样的语言,这些语言编译成其他文本源语言,并在浏览器中执行。这种源到源编译器(也称为转译器)并不新鲜,Cfront 在 C++ 的早期被广泛用于生成目标 C 代码。但对我来说,CoffeeScript 和 SCSS 作为透明编译器存在着区别。

作者:Martin Fowler

2013 年 2 月 12 日

阅读更多…

bliki

语言特性 Web 开发

萨巴岛

最近我们回到了我们最喜欢的地方之一,萨巴岛——加勒比海的一个非常小的岛屿,靠近圣马丁。在许多方面,萨巴岛最棒的地方在于它没有的东西。那里没有海滩、高尔夫球场或赌场。加勒比海地区遍布的大量旅游和度假村群落,由于萨巴岛太小、山势太高,因此一直忽略了它。因此,这个岛屿非常安静祥和。

作者:Martin Fowler

2013 年 2 月 1 日

阅读更多…

bliki

旅行

思考大数据

"大数据"迅速成为我们行业中最热门的词汇之一,但炒作不应该让人们忽视这样一个事实,即这是一个关于数据在世界中作用的真正重要转变。数据源的数量、速度和价值正在迅速增长。数据管理必须在五个主要领域发生变化:从更广泛的数据源中提取数据,使用新的数据库和集成方法改变数据管理的物流,在运行分析项目中使用敏捷原则,强调数据解释技术以区分信号和噪声,以及设计良好的可视化的重要性,以使信号更易于理解。总而言之,这意味着我们不需要大型分析项目,而是希望新的数据思维渗透到我们的日常工作中。

作者:Martin Fowler

2013 年 1 月 29 日

阅读更多…

infodeck

数据分析 信息库

内部可重编程性

我正在编程,想在我的当前输入位置上方添加一个空行。我使用的编辑器没有内置此功能,而且我最终非常想要这个功能。我快速搜索了一下 Google,找到了一些代码,将它们粘贴到我的启动文件中,执行它们,然后我就可以用一个按键在上面创建空行了。只花了不到两分钟,我无需安装任何插件或重新启动编辑器——对于 Emacs 用户来说,这是日常工作。

作者:Martin Fowler

2013 年 1 月 10 日

阅读更多…

bliki

应用程序架构 工具

无模式数据结构

近年来,人们越来越多地谈论无模式数据的优势。无模式化是人们对 NoSQL 数据库 感兴趣的主要原因之一。但无模式化涉及许多微妙之处,无论是数据库还是内存数据结构。这些微妙之处既存在于无模式化的含义中,也存在于使用无模式方法的优缺点中。

作者:Martin Fowler

2013 年 1 月 7 日

阅读更多…

infodeck

应用程序集成 数据库 NoSQL 演化式设计 信息库


所有标签

API 设计 · 敏捷 · 敏捷采用 · 分析模式 · 应用程序架构 · 应用程序集成 · 不好的事情 · 棋盘游戏 · 构建脚本 · 认证 · 协作 · 计算机历史 · 会议小组 · 会议 · 持续交付 · 新冠肺炎 · 数据分析 · 数据库 · 设计 · 字典 · 分布式计算杂志 · 消遣 · 多样性 · 文档 · 领域驱动设计 · 领域特定语言 · 家庭 · 封装 · 企业架构 · 估算 · 事件架构 · 演化式设计 · 经验报告 · 说明性架构 · 极限编程 · 前端 · 小工具 · 生成式 AI · IEEE 软件 · 信息库 · 互联网文化 · 访谈 · 语言特性 · 语言工作台 · 精益 · 遗留系统改造 · 法律 · 指标 · 微服务 · 移动 · NoSQL · 对象协作设计 · 解析器生成器 · 摄影 · 平台 · 播客 · 流行 · 演示技巧 · 隐私 · 过程理论 · 生产力 · 编程环境 · 编程风格 · 项目规划 · 招聘 · 重构 · 重构边界 · 需求分析 · Ruby · 安全 · 演讲视频 · 团队环境 · 团队组织 · 技术债务 · 技术领导力 · 测试类别 · 测试 · Thoughtworks · 工具 · 旅行 · UML · 版本控制 · Web 开发 · Web 服务 · 网站 · 写作

2024 · 2023 · 2022 · 2021 · 2020 · 2019 · 2018 · 2017 · 2016 · 2015 · 2014 · 2013 · 2012 · 2011 · 2010 · 2009 · 2008 · 2007 · 2006 · 2005 · 2004 · 2003 · 2002 · 2001 · 2000 · 1999 · 1998 · 1997 · 1996

所有内容