本质层
GL-ESSENCE
层组基础进阶高级51 节点
§1组简介
组目录:本质层方法论层技术实践层域·概念与需求域·架构设计域·实现与构造域·测试域·部署域·运维域·演化与弃用域·质量属性域·团队与康威域·方法论主干域·跨域横切·质量属性横切·技术债横切·团队与康威案例层
本组 51 个节点,类型为 层组,域 O,覆盖阶段 基础 / 进阶 / 高级。
§2成员节点目录
| 节点 ID | 名称 | 层/来源 | 阶段 | 简介 |
|---|---|---|---|---|
| ESS-H-01 | 信息隐藏 | 本质 essence | 进阶 | 以「隐藏困难或可能变化的设计决策」作为模块分解判据:每个模块把一类易变决策封装为自己的秘密,接口只揭示尽量少的内部工作,使变更局部化。它规定的是划分依据与边界,而非模块的物理形态或大小。它是模块化有效性的根本来源之一。 |
| ESS-H-02 | 内聚与耦合 | 本质 essence | 基础 | 衡量模块划分质量的两个互补维度:内聚是模块内部元素隶属同一目标的程度,耦合是模块之间相互依赖的程度。目标是高内聚、低耦合,但二者只是启发式方向,并非有普适阈值的绝对指标。它衡量的是结构对变更的承载能力。 |
| ESS-H-03 | DRY 单一知识来源 | 本质 essence | 基础 | 系统内每个知识点应有单一、无歧义、权威的表示,避免同一知识的多份副本各自漂移。它针对的是「知识重复」而非机械的代码重复,核心判据是:一处规则改变时,是否需要在多个位置同步修改。它衡量的是知识的归属是否清晰。 |
| ESS-H-04 | 抽象泄漏 | 本质 essence | 高级 | 所有非平凡抽象都会在不同程度上泄漏其底层实现:性能、故障与边界行为会穿透抽象边界,使用者被迫了解本应被隐藏的细节。这是抽象与封装固有的边界,而非实现缺陷。它要求设计者主动管理而非幻想消除这种穿透。 |
| ESS-G-01 | 关注点分离 | 本质 essence | 基础 | 按不同关注点维度把系统分解为可独立处理的部分,使每部分只承担一组相关职责。它是分解问题的元原则,为模块化与分层提供依据,成败取决于维度是否真正正交。若干流派在细节上各异,却共享同一目标:把软件切成层,且至少一层承载业务规则、另一层承载用户与系统接口。分离到位后应表现出五项可观察性质:不依赖某个功能齐备的库;业务规则脱离界面与库即可测试;界面可整体替换而其余部分不动;持久化产品可更换而规则不被绑定;业务规则对外部世界的接口一无所知。因此验收标准不是画了几条线,而是替换任意一个外部元素时改动是否被限制在边界外侧。 |
| ESS-G-02 | 依赖倒置与依赖规则 | 本质 essence | 进阶 | 稳定策略不应依赖易变细节:通过抽象使高层策略与低层实现都依赖抽象,让源码依赖方向指向更稳定、更抽象的一端。其含义不是高层依赖低层再调用回来,而是双方都依赖一个由稳定侧拥有的抽象——高层定义它需要的能力,低层去实现它。配套的依赖规则要求源码依赖只能由外层指向内层,禁止反向,由此形成单向依赖图,稳定且抽象的核心不被细节牵引,边界可替换,实现细节可独立演化。但把它当铁律并不现实:系统必须依赖大量具体设施,有些具体类型改动极罕见且受严格控制,对它们的依赖不该也无法回避。可容忍的是一层稳定背景,例如操作系统与平台设施;要避开的是团队正在活跃开发、频繁变动的模块。 |
| ESS-G-03 | 边界与接口隔离 | 本质 essence | 进阶 | 在模块、服务与层之间显式划定边界,并让跨边界交互仅通过窄而稳定的接口进行,把内部实现与外部契约隔离开。边界决定变更传播范围与理解成本。它要求把跨边界交互收敛为显式承诺。 |
| ESS-O-01 | 本质复杂度与偶然复杂度 | 本质 essence | 高级 | 这组区分由两个不对称的部分构成。本质复杂度是问题领域自身固有的概念结构,它来自所服务现实的概念关系本身,任何单一技术或管理手段都无法把它消除;偶然复杂度则是实现方式、工具局限与表示选择带来的负担,可以被工程手段持续削减。定义的关键在于归属判据而不是字面分类:某一部分难度究竟算哪一类,要看它是否随表示方式的改变而消失。这也解释了为什么这条区分是决策工具而非学术标签——它把该投问题理解还是该投工具改进变成一个可以追问的问题,使投入方向有据可依。判据可以写成一次替换实验:追问若换掉这项技术、改用另一种表示,问题的核心概念结构是否依然存在。仍然存在,说明这部分难度属于本质; |
| ESS-O-02 | 架构即权衡 | 本质 essence | 进阶 | 把架构决策定义为取舍,依据是一个结构性事实:质量属性无法被孤立地达成,改善其中一项必然对其他项产生或正或负的影响。敏捷性与稳定性、安全性与性能、性能与可修改性、可靠性与成本,很难同时达到最优;再叠加预算、工期、遗留系统与团队能力等约束,架构本质上是在有限资源下的一组选择。由此推出的直接后果是最优架构这一提法失去意义——同一份设计在不同语境下会被判为恰当或失当,取决于该语境看重哪些属性、受哪些成本与合规约束。可操作的形态是把决策写成有向的代价与收益对照:选定某方案意味着接受某一组具体代价,并因此保住某一组具体收益。 |
| ESS-L-01 | 软件演化定律 | 本质 essence | 高级 | 描述 E 型软件在持续演化中反复出现的规律:系统必须持续变更否则逐渐失效,而持续变更又使复杂度递增、质量下降,需要以自我调节与反馈治理。它把演化视为常态而非异常。它把演化确立为需要持续投入的常态过程。 |
| ESS-N-01 | 康威定律 | 本质 essence | 进阶 | 设计系统的组织受沟通结构约束,其产出会复制该组织的沟通结构;系统架构与组织结构之间存在保结构的对应关系。它提示架构设计与组织设计必须协同。它把组织设计纳入架构决策的范畴。 |
| ESS-F-01 | 软件需求 | 本质 essence | 基础 | 软件需求是「须被某物展现、以解决现实世界问题的属性」;它描述系统应满足的「什么(what)」而非「如何做(how)」,属于对解决方案的约束与对问题空间的陈述,而非设计决定。 |
| ESS-F-02 | 干系人与需要 | 本质 essence | 基础 | 干系人是对系统或其具备满足其需要与期望的特性拥有权利、份额、主张或利益的个人或组织;需要是对其 needs、wants、desires、expectations 与感知约束的引出,需求则由需要转化而来。 |
| ESS-F-03 | 需求可追溯性与可验证性 | 本质 essence | 进阶 | 可追溯性要求每条需求都能双向链接到其来源与后续制品,可验证性要求能用客观方法判定需求是否被满足;两者共同使需求可被确认、变更影响可被分析。 |
| ESS-F-04 | 需求的不确定性与变更 | 本质 essence | 进阶 | 需求在初始阶段总是不完整、模糊,并会随环境与认知变化而被修订;成功的软件必然被改变,因此需求管理必须把变更视为常态,而非应被消除的异常。 |
| ESS-F-05 | 业务与任务价值 | 本质 essence | 进阶 | 需求源于业务或任务的价值目标:先定义问题或机会空间、评估备选方案,再由此导出干系人需要与系统需求,使每条需求都能回答它在为谁创造何种价值。 |
| ESS-I-01 | 测试作为验证与反馈机制本质 | 本质 essence | 基础 | 软件测试是以发现缺陷、评估质量为目的的活动集合;其本质不止于事后验证——它同时为开发提供持续反馈,使团队能在变更中保持正确性,因此测试是质量保障与支持演进的双重机制。 |
| ESS-I-02 | 可测试性本质 | 本质 essence | 基础 | 可测试性说的是软件在多大程度上容易被证明有缺陷,而不是它究竟有没有缺陷。这一定位把它从测试活动的属性挪到了被测制品的属性上:同一支测试团队、同一套方法与工具,面对可测试性不同的两份系统,建立受控情境、读取内部状态、取得稳定反馈的代价会相差数量级。它由结构赋予,属于设计期就应当确定的性质,事后很难补齐;模块边界与依赖方向一旦改变,同一份功能代码所需的测试投入就会显著变化。由此可以推出它的两个容易混淆之处。其一,它衡量的是验证成本而非正确性本身,一个可测试性极差的系统也可能几乎没有缺陷,反过来测试写得很顺手也并不等于测试已经做够。 |
| ESS-I-03 | 错误、缺陷与失效 | 本质 essence | 进阶 | 错误是人的行为产生的不正确结果,缺陷是制品中导致其偏离预期行为的瑕疵,失效是系统运行时表现出的与规定行为不一致;三者构成「错误→缺陷→失效」的因果链,是测试活动的认知对象。 |
| ESS-I-04 | 测试的不可穷尽性 | 本质 essence | 进阶 | 测试只能证明缺陷的存在、无法证明其不存在;由于输入、状态与执行路径的组合空间在现实中不可穷尽,测试永远是抽样活动,因此测试策略的核心不是穷尽验证,而是基于风险选择最有价值的样本。 |
| ESS-J-01 | 构建发布运行分离 | 本质 essence | 基础 | 软件交付须严格分离构建、发布、运行三阶段:构建把代码转换为可执行制品,发布把制品与当次配置合并为带唯一标识的不可变版本,运行只启动选定版本,且运行阶段不存在把改动写回构建的通道。 |
| ESS-J-02 | 开发生产一致性 | 本质 essence | 基础 | 开发、预发与生产环境应尽可能相似,把时间差、人员差与工具差压到最小,并使用同类型同版本的支撑服务,使在早期环境中验证过的行为在生产中依然成立。 |
| ESS-J-03 | 不可变基础设施 | 本质 essence | 进阶 | 部署完成后的基础设施(服务器、网络设备、运行实例)不再被就地修改,任何变更都通过创建新版本并替换实例实现,从而把运行环境的实际状态锚定在经测试的制品上。 |
| ESS-J-04 | 部署即变更管理 | 本质 essence | 进阶 | 部署不是一次性的文件拷贝,而是一次受控、可审计、可回滚的变更:应明确谁在何时以何制品更改了哪个环境的什么状态,并为失败预留恢复路径。 |
| ESS-K-01 | 可靠性即风险管理 | 本质 essence | 基础 | 服务可靠性不是追求零故障,而是在创新速度与稳定之间对可接受风险做显式管理:把不可靠度视为有限、可预算的资源,据此决定何时发布、何时加固。 |
| ESS-K-02 | 故障不可避免性与容错 | 本质 essence | 基础 | 可靠性与容错这组概念要先分清两个词。局部停止正常工作叫故障,例如一块盘坏掉、一台机器宕机,或所依赖的外部服务中断;整个系统不再满足对用户承诺的服务级别目标叫失效。两者其实是同一件事在不同观察层次上的称呼:只有一块盘的系统里,盘坏就是系统失效;而在多盘系统里,单盘坏掉只是整体视角下的一项故障,只要数据在别处还有副本,服务就能继续。由此得到容错的定义,即出现某些故障时仍能照常提供服务;反过来,某部分一旦出问题就必然升级为整体失效,这个部分就是单点故障。 定义里还隐含一层要求:容错总是相对于某个服务级别承诺而言的,离开承诺就无所谓失效。 |
| ESS-K-03 | 可观测性本质 | 本质 essence | 进阶 | 可观测性是仅凭系统对外产生的输出,推断其内部状态、回答未预先设问之问题(未知未知)与「为什么」的能力;它要求系统先具备充分的自我表达,而非事后拼凑。 |
| ESS-K-04 | 度量驱动的反馈闭环 | 本质 essence | 进阶 | 运维与可靠性改进必须以可观测的度量形成闭环:用度量暴露现状、驱动决策、验证效果,再据结果校准下一轮行动,使改进成为持续的反馈过程而非一次性工程。 |
| ESS-L-02 | 技术债本质 | 本质 essence | 进阶 | 技术债是用短期便利换取长期变更成本的设计权衡,其本质是经济取舍而非道德评判:审慎而有意的债务可加速交付,判断标准是债是否审慎、是否被及时偿还,而非是否存在。 |
| ESS-L-03 | 架构侵蚀与漂移 | 本质 essence | 高级 | 架构侵蚀是违反既定架构约束的改动导致的系统脆化,架构漂移是对架构不敏感的改动导致的逐渐失一致;两者共同使系统越来越抗拒变更,是架构层腐化的两种机制。 |
| ESS-L-04 | 演化的不可逆性 | 本质 essence | 进阶 | 成功投入使用的软件必然持续被修改,且演化在方向上是不可逆的:需求、环境与依赖的变化使系统无法回到先前状态,冻结系统只会加速其价值衰减。 |
| ESS-L-05 | 变更成本随复杂度增长 | 本质 essence | 进阶 | 这条原则描述的是一种随规模累积的效应:项目小时代码可以短小漂亮,一旦持续扩张,结构就越来越难把握,每一次改动都要付出更多的理解与验证成本。这种状态被形象地称为复杂泥潭。它的定义要点是成本的位置发生了转移,复杂度并不直接表现为功能缺失或性能下降,而是表现为动手变慢、出错变多、预算与排期双双失守。因为结构越难让人推理,改动者就越容易漏看隐含前提、副作用与意料之外的相互干扰。所以简单性被提升为构建系统时的关键目标之一,它与可运维性、可演化性并列,共同构成可维护性的三个面向。 把这层定义再推进一步,可以看出复杂度并非某种可以一次性清除的杂质,而是一种随功能与规模必然增长的存量。 |
| ESS-M-01 | 可维护性本质 | 本质 essence | 基础 | 可维护性不是单一属性,而是被拆成三根支柱,各有明确所指。可运维性让组织能省力地把系统稳定跑下去:开放关键指标供监控采集、不让任何一台机器成为必需、给出清晰文档与可预期的操作模型、提供合理默认值同时允许覆盖、在恰当处自动修复也保留人工接管。简单性要求采用为人熟知且前后一致的模式与结构,把不必要复杂度挡在外面,使新加入的人也能读懂系统。可演化性要求系统在需求变动时便于调整与扩展,包括事先未预料到的使用场景。三者共同的动机是成本结构:软件的主要开销落在持续维护而非初次开发,涵盖修缺陷、保持运行、调查失效、适配新平台、支持新场景、偿还技术债与添加功能; |
| ESS-M-02 | 可演化性与可扩展性 | 本质 essence | 进阶 | 可伸缩性之所以不能简化为一个标签,是因为它由两步组成:先刻画负载,再评估资源与性能的关系。刻画负载通常取某项吞吐量指标,比如每秒请求数、每天新增数据量或每小时结账次数,有时取峰值如同时在线人数;读写比例、缓存命中率、单用户数据项数等统计特征同样会改变访问模式与伸缩要求。第二步从两个角度提问:资源不变时加大负载,性能如何变化;希望性能不变时,要增加多少资源。常见的经验是资源翻倍换两倍负载,即线性伸缩,偶尔因规模经济或峰值更均匀而优于线性,但更常见的是成本增长快于线性——数据量大时,同样大小的写入也要做更多工作。 |
| ESS-M-03 | 性能效率本质 | 本质 essence | 基础 | 性能效率的可操作含义是:起点为某个具体事件抵达系统,终点为系统在给定的时间或资源预算内交出响应。因此一条可用的性能陈述至少要同时说清三件事——负载以什么形态、以多快的节奏到来;允许多长的等待或多大的资源开销;以及用什么量去判定是否达标。反例是把性能写成「系统应当很快」,它既没指明哪类事件,也没指明并发规模与度量口径,因而无法验证也无法验收。另一处容易被忽略的边界是:性能要求即便从未被明文写出,也客观存在并被使用者感知,例如按键后整整一秒才显示字符的编辑器会被直接判定为不可用;所以缺省的性能期望应被主动补写成场景。 |
| ESS-M-04 | 可靠性与可用性 | 本质 essence | 进阶 | 可靠性用一句话概括就是即使出了问题也能继续正确工作,其外延由用户期望给出:功能符合预期、允许用户犯错或以非预期方式使用、在预期负载与数据量下性能足够、能挡住未授权访问与滥用。定义的关键动作是把故障与失效分开:故障指系统的某个部分停止正常工作,失效指整个系统不再提供所需服务、即未达到服务级别目标。二者常被混为一谈,其实只是观察层次不同——单块硬盘停转对只有一块盘的机器就是失效,对多盘系统只是一项故障,只要别处还有副本,系统就可能容忍它。可靠性因此以服务级别目标来衡量。容错总是针对特定类型与数量的故障而言,无法容忍某部分故障的部分称为单点故障; |
| ESS-M-05 | 质量属性不可直接测量 | 本质 essence | 基础 | 质量属性的界定要点有三:其一,它描述的不是系统做什么,而是干系人对系统效用的满意程度;其二,它必须能被量化观察或验证,否则无法进入验收;其三,它总是附着在功能之上——同一段功能可以配不同的响应快慢、允许出错频次与上手难度等标注。因此质量属性不是功能的替代品,而是对功能的约束与修饰:脱离功能谈质量属性会失去落点,只谈功能不谈质量属性则无法判断系统是否真的好用。可量化这一条是硬约束,不可量化的质量诉求既无法判定也无法验收,只能停留在主观评价层面。 |
| ESS-N-02 | 组织-架构同态 | 本质 essence | 进阶 | 组织沟通结构与其所设计系统的架构之间存在保结构的同态关系:沟通密集处趋于高内聚,沟通稀疏处趋于系统边界;若每个子系统各有独立设计组,两种结构几乎完全一致。 |
| ESS-N-03 | 团队边界与架构边界耦合 | 本质 essence | 进阶 | 团队边界与系统架构边界相互耦合:团队负责范围若与模块边界错位,跨边界协调成本会以接口复杂度、交接与返工的形式转嫁到系统上,二者需同步演化。 |
| ESS-N-04 | 认知负荷约束 | 本质 essence | 基础 | 团队能承载的复杂度有限,每一个新增的工具、职责或领域都消耗其心智带宽;认知负荷因此是划分团队与架构时必须显式考虑的约束,而非可忽略的软因素。 |
| ESS-N-05 | 组织即设计系统 | 本质 essence | 高级 | 承担系统设计的组织本身也是一个需要被设计的系统:其结构、边界、沟通与激励机制共同决定它能产出什么样的架构,因此组织设计应被视为技术设计的组成部分。 |
| ESS-O-03 | 权衡的不可消除性 | 本质 essence | 进阶 | 任何设计都在有限资源与相互牵制的目标之间做选择,优化一个维度通常以牺牲另一个为代价;权衡不能被消除,只能被显式化、迁移,或在具体语境下选出更合适的落点。这一定义有三层含义需要分开。第一层是它的形式:取舍不是方案的缺陷,而是方案的定义本身,选定某条路径就等于同时接受了一组代价并保住了一组收益,因此描述一个架构决策的完整方式是成对陈述而不是单向宣称。第二层是它的来源:权衡之所以不可消除,一是资源有限,时间、算力、人力与注意力无法同时无上限地投向每个方向;二是目标之间存在结构性冲突,一方改善会直接牵制另一方,这层冲突不会因为预算变多而消失。 |
| ESS-G-07 | 架构描述与对应关系 | 本质 essence | 进阶 | 架构本身是不可见的抽象,表达架构的工件称为架构描述(AD)。AD 由描述元素、模型种类与对应关系构成,并以对应的强制规则约束视图内部及视图之间的一致性、可追溯与组合,使多份面向不同关注点的局部表达汇成对同一架构的统一、可校验的整体。 |
| ESS-H-08 | SOLID 职责划分与替换性 | 本质 essence | 进阶 | SOLID 是一组以职责划分与可替换性为判据的面向对象设计原则族:单一职责约束变更原因,开闭原则要求以扩展而非修改应对变化,里氏替换与接口隔离约束子类型与接口依赖,依赖倒置约束依赖方向。 |
| ESS-H-09 | 设计模式与反模式 | 本质 essence | 进阶 | 设计模式是对反复出现的设计问题所给的可复用解法模板,提供团队共同语言但不保证适用;反模式是初看合理却适得其反的常见解法,二者把设计经验的正反两面固化为可传承的知识。 |
| ESS-G-04 | 模块化与分解 | 本质 essence | 基础 | 模块化与分解指的是把整体切成若干能够各自独立运转的较小单元,使每个单元的扩容、部署与故障处置不再被其余部分牵连。它被视为可伸缩性最通用的一条做法,因为服务化、数据分片、流式处理以及节点各自持有本地资源的形态,底层走的都是同一条思路。定义的重心并不落在切这个动作上:真正的判定标准是切完之后各单元能否在负载增长时被单独放大。哪些职责应当留在一起、哪些应当分开,并没有通用答案,因此分解的边界是相对的,取决于当前负载形态与团队条件,而不是可以照抄的结构模板。切得过细同样会反噬。 判断边界是否合理,有一个可操作的观察点:某单元能否在不牵动邻单元的前提下完成一次容量调整或一次故障切换。 |
| ESS-G-05 | 架构风格 | 本质 essence | 进阶 | 定义一类系统结构组织方式的模式:规定该系统实例中可用的组件与连接件词汇表,以及它们的组合约束,从而约束设计空间并带来一组可预期的属性。 |
| ESS-G-06 | 视图与视角 | 本质 essence | 进阶 | 按不同干系人的关注点,从特定角度表达系统架构的概念结构;视角是一类视图的构造与解释约定,视图则是按某个视角约定所作的具体表达。 |
| ESS-H-05 | 深模块与浅模块 | 本质 essence | 进阶 | 以“接口复杂度与所提供功能之比”评价模块的两种形态:深模块提供强大功能却只有简单接口,浅模块接口相对复杂却功能不足,未能隐藏显著复杂度。 |
| ESS-H-06 | 组合优于继承与脆弱基类 | 本质 essence | 进阶 | 在复用与扩展中优先采用对象组合而非类继承:继承以暴露父类实现为代价换取复用,组合只依赖被复用对象的接口,从而维持封装边界与替换能力。 |
| ESS-H-07 | 可读性与认知负荷 | 本质 essence | 基础 | 把代码可读性视为一种工程要求:代码被阅读的次数远多于被编写,理解与修改代码的成本由读者所需的认知负荷决定,而非由风格偏好决定。 |
§3组内关系图
前置依赖实现依据推导案例印证对比冲突
§4学习路径提示
本组内存在 40 条前置依赖边(prerequisite),推荐先掌握前置知识点,再进入依赖它的节点。
推荐阅读顺序(拓扑序)
业务与任务价值 → 关注点分离 → 模块化与分解 → 抽象泄漏 → SOLID 职责划分与替换性 → 可测试性本质 → 错误、缺陷与失效 → 构建发布运行分离 → 部署即变更管理 → 故障不可避免性与容错 → 可观测性本质 → 架构侵蚀与漂移 → 演化的不可逆性 → 性能效率本质 → 可靠性与可用性 → 质量属性不可直接测量 → 康威定律 → 干系人与需要 → 架构风格 → 视图与视角 → DRY 单一知识来源 → 信息隐藏 → 设计模式与反模式 → 测试作为验证与反馈机制本质 → 开发生产一致性 → 不可变基础设施 → 度量驱动的反馈闭环 → 变更成本随复杂度增长 → 可维护性本质 → 组织-架构同态 → 软件需求 → 架构描述与对应关系 → 深模块与浅模块 → 组合优于继承与脆弱基类 → 测试的不可穷尽性 → 可靠性即风险管理 → 可演化性与可扩展性 → 组织即设计系统 → 需求可追溯性与可验证性 → 需求的不确定性与变更 → 可读性与认知负荷 → 内聚与耦合 → 认知负荷约束 → 本质复杂度与偶然复杂度 → 团队边界与架构边界耦合 → 软件演化定律 → 架构即权衡 → 权衡的不可消除性 → 技术债本质 → 边界与接口隔离 → 依赖倒置与依赖规则
- 关注点分离 → 信息隐藏关注点分离是信息隐藏的前提
- 信息隐藏 → 内聚与耦合理解信息隐藏是评估内聚耦合的前提
- 本质复杂度与偶然复杂度 → 架构即权衡本质复杂度不可消除,故架构只能在约束下权衡
- 内聚与耦合 → 边界与接口隔离内聚耦合度量指导边界划分
- 康威定律 → 边界与接口隔离组织沟通结构约束可行边界
- 边界与接口隔离 → 依赖倒置与依赖规则先划定边界,才能约束依赖方向
- 本质复杂度与偶然复杂度 → 软件演化定律本质复杂度是演化中复杂度递增的成因
- 关注点分离 → DRY 单一知识来源关注点分离促成知识的单一归属
- 架构即权衡 → 边界与接口隔离边界划分是对多重质量属性的权衡
- 业务与任务价值 → 干系人与需要业务与任务价值是引出干系人需要的上游依据
- 干系人与需要 → 软件需求干系人需要是界定软件需求的来源
- 软件需求 → 需求可追溯性与可验证性明确需求对象是建立追溯与验证的前提
- 软件需求 → 需求的不确定性与变更需求概念是理解其不确定性与变更的基础
- 错误、缺陷与失效 → 测试作为验证与反馈机制本质错误-缺陷-失效概念是测试活动的认知对象
- 可测试性本质 → 测试作为验证与反馈机制本质可测试性是有效测试得以进行的前提
- 测试作为验证与反馈机制本质 → 测试的不可穷尽性认识测试方能理解其不可穷尽性
- 构建发布运行分离 → 开发生产一致性三阶段分离是环境一致性的前提
- 构建发布运行分离 → 不可变基础设施运行阶段无变更入口是基础设施不可变的基础
- 故障不可避免性与容错 → 可靠性即风险管理承认故障不可避免是可靠性风险管理的前提
- 可观测性本质 → 度量驱动的反馈闭环可观测性使度量驱动反馈闭环成为可能
- 度量驱动的反馈闭环 → 可靠性即风险管理反馈闭环支撑对风险的持续管理
- 演化的不可逆性 → 技术债本质演化不可逆使技术债必然累积
- 演化的不可逆性 → 变更成本随复杂度增长持续演化推动复杂度与变更成本上升
- 软件演化定律 → 技术债本质演化定律的复杂度递增是技术债的理论根据
- 可维护性本质 → 可演化性与可扩展性可修改能力是可演化性的先决条件
- 质量属性不可直接测量 → 可维护性本质属性可操作化是可评估可维护性的前提
- 康威定律 → 组织-架构同态康威定律是组织-架构同态关系的原始表述
- 组织-架构同态 → 团队边界与架构边界耦合同态关系是团队-架构边界耦合的理论基础
- 认知负荷约束 → 团队边界与架构边界耦合认知负荷是划定团队边界的依据
- 组织即设计系统 → 认知负荷约束组织设计须管理团队的认知负荷
- 本质复杂度与偶然复杂度 → 权衡的不可消除性本质复杂度不可消除支撑权衡不可消除
- 视图与视角 → 架构描述与对应关系视图与视角概念是理解架构描述构成与对应关系的前提
- SOLID 职责划分与替换性 → 设计模式与反模式职责划分与替换性判据是理解模式适用性的前提
- 模块化与分解 → 信息隐藏模块化目标是信息隐藏判据的前提
- 模块化与分解 → 内聚与耦合模块划分质量以内聚耦合衡量
- 关注点分离 → 架构风格关注点分离是理解与选择架构风格的认知基础
- 关注点分离 → 视图与视角关注点分离是视图与视角划分的基础
- 信息隐藏 → 深模块与浅模块信息隐藏是理解深/浅模块的前提
- 信息隐藏 → 组合优于继承与脆弱基类信息隐藏是判断继承/组合取舍的前提
- 深模块与浅模块 → 可读性与认知负荷深模块降低认知负荷,支撑可读性