乐于分享
好东西不私藏

白话软件质量管理史 第13章 军工计算与系统工程时代的国别比较(1945 - 1969)

白话软件质量管理史 第13章 军工计算与系统工程时代的国别比较(1945 - 1969)

点击上方蓝字关注我们

金句一:软件质量管理,从来不是从程序员的电脑前开始的,而是从国家安全的倒计时里长出来的。

金句二:战后二十多年,世界不是先发明了“完美方法”,而是在一次次高风险任务中,被迫把“出错的代价”写进工程流程。

金句三:这一阶段最重要的变化,不是Bug变少了,而是人类第一次承认:复杂系统不能只靠天才,必须靠组织。

金句四:如果说1900 - 1945年是质量管理的“点”时代,那么1945 -1969年,就是它从“点”艰难拉成“线”的年代。

本章速览

1945 - 1969年,是现代软件质量管理真正“出生”的前夜,也是“软件工程”这个概念被正式命名前最关键的孕育期。

这一时期,“软件”还没有完全成为独立产业。人们更多谈的是程序、例程、控制逻辑、制导指令、任务系统、信息处理系统。但问题已经非常现代:系统越来越大,程序越来越复杂,接口越来越多,组织越来越庞大,失败成本越来越高。

本章围绕五个国家展开比较:

  • 美国
    :军工牵引、实验室创新、企业放大。SAGE、Apollo、IBM System/360等项目,率先把软件复杂性暴露为系统工程问题。
  • 英国
    :学术传统、系统工程、公共部门计算。英国更强调制度责任、长期维护、公共系统可信和学术严谨性。
  • 法国
    :国家规划、工程师体系、关键系统。Plan Calcul体现了法国把计算能力视为技术主权和国家能力的战略眼光。
  • 苏联
    :国防优先、集中力量、体制刚性。苏联能在高风险任务中形成极强纪律,但也暴露出反馈迟缓、协同僵硬、创新扩散慢的问题。
  • 日本
    :制造质量经验领先,但尚未全面转入软件。日本已经形成强大的制造质量文化,却尚未把这套能力转化为软件复杂性治理体系。

本章的核心判断是:

1945 -1969年,质量管理从“检查一个点”开始走向“治理一条线”:需求、设计、实现、测试、交付、运行与反馈,开始被理解为连续过程。

这一阶段不是软件质量管理成熟的时代,而是软件质量管理被迫诞生的时代。

导语:为什么要回到1945 - 1969?

今天我们谈软件质量,张口就是自动化测试、DevOps、SRE、可观测性、供应链安全、SBOM、AI评测、红队测试、MLOps、LLMOps。仿佛软件质量天然属于互联网公司、云平台和AI实验室。

但如果把历史镜头往回拉,我们会发现一个常被忽略的事实:

软件质量管理的真正起点,并不在互联网公司,也不在商业软件市场,而在战后国家竞争、军工体系、实验室组织和大系统工程的高压环境里。

1945年,二战结束。

但世界并没有真正进入和平时代,而是迅速切换到冷战、核威慑、导弹竞赛、雷达预警、航天竞争、电子指挥控制、情报分析和国家级通信网络的时代。

这一切都要求计算系统不能只是“能算”,而且必须:

  • 算得对;

  • 算得稳;

  • 算得及时;

  • 算得可控;

  • 出问题时还能保住关键任务。

这正是现代软件质量管理最深的源头。

在这一时期,很多系统还不是今天意义上的“软件产品”,而是军工装备、控制系统、制导系统、实时信息系统、公共部门计算系统和大型商业数据处理系统的一部分。程序员也还没有成为后来那种独立的职业群体。许多程序由数学家、工程师、女性计算员、实验室人员、军工承包商共同完成。

但软件质量问题已经扑面而来:

  • 程序规模膨胀;

  • 需求不断变化;

  • 硬件更新带来软件重写;

  • 军事任务要求近乎零容忍;

  • 系统之间开始联动;

  • 多组织协同成为常态;

  • 时间和预算双重收紧;

  • 失败代价从经济损失上升到国家安全。

于是,一个关键转折出现了:

质量管理不再只是检验产品合不合格,而开始变成:如何让一个复杂系统在复杂组织中,持续、可信、可重复地完成任务。

这就是本章的主题:

1945 - 1969,军工计算与系统工程时代,质量管理如何在不同国家被塑造出来。

一、本章分析框架:时代压力 - 主导风险 - 核心技术 - 组织形态 - 质量方法 - 典型局限 - 下一阶段触发器

为了避免把历史写成流水账,本章采用统一框架分析这一阶段。

1. 时代压力:战后不是和平,而是“高压竞争的和平”

1945年后,世界进入冷战格局。核武器、远程导弹、雷达预警、航天发射、指挥控制系统,让计算技术迅速变成国家战略能力。

这一时期的计算技术,不是“先有市场、后有产业”,而是典型的“先有国家任务、后有产业扩散”。

2. 主导风险:从硬件故障走向系统性失控

1940年代末到1950年代,工程界最直观的风险仍然是硬件故障:电子管不稳定、维护困难、机器庞大、环境适应性差。

但随着系统复杂度上升,风险结构发生变化:

  • 逻辑会错;

  • 接口会错;

  • 需求会错;

  • 数据会错;

  • 测试覆盖不够;

  • 变更失控;

  • 组织沟通断裂。

也就是说,质量问题第一次明显从“物理故障”转向“系统失控”。

3. 核心技术:电子计算、控制论、运筹学、系统工程汇流

这一时期影响质量管理演化的不只是计算机本身,还包括:

  • 控制论:让人们开始把系统视为反馈、控制、稳定性的对象;

  • 运筹学:让复杂决策和资源分配具备形式化分析基础;

  • 系统工程:让需求、设计、实现、验证、运行成为整体;

  • 可靠性工程:把失效概率、冗余、容错纳入工程设计;

  • 早期程序设计方法:开始出现模块化、文档化、结构化的萌芽。

4. 组织形态:谁主导,决定质量长什么样

这一时期,组织形态比单个技术更重要。

  • 美国:军方、大学、实验室、企业协同;

  • 英国:公共部门、大学、国家研究机构;

  • 法国:国家规划、工程师体系、国有或准国有工业;

  • 苏联:国防体系、设计局、集中计划;

  • 日本:制造企业、质量文化、追赶型技术吸收。

不同组织形态塑造了不同质量哲学:

  • 有的重任务成功;

  • 有的重制度责任;

  • 有的重国家可控;

  • 有的重纪律执行;

  • 有的重持续改进。

5. 质量方法:从“控制结果”走向“控制过程”

这一时期还没有成熟的软件质量模型,但已经出现重要趋势:

  • 用系统工程贯穿全生命周期;

  • 用文档、配置、评审控制复杂性;

  • 用可靠性分析应对任务关键风险;

  • 用仿真和试验弥补真实环境难以复现;

  • 用标准化和接口约束降低协作成本;

  • 用组织纪律替代对少数天才的过度依赖。

6. 典型局限:方法开始形成,但远未成熟

这一阶段不是黄金时代,而是高压试错时代。

它的局限包括:

  • 需求变化快,但变更管理还不成熟;

  • 文档增加了,但理解未必增加;

  • 大项目管理经验不足,延期和超支频繁;

  • 军工方法高成本,难以直接迁移到民用;

  • 国家主导能集中资源,也可能压制灵活创新;

  • 可靠性越高,成本越高,速度越慢。

7. 下一阶段触发器:软件危机已在路上

到1960年代后期,一个世界性问题逐渐清晰:

硬件在进步,软件在拖后腿。

程序越来越大,团队越来越多,需求越来越动态,项目延期越来越严重。1968年NATO软件工程会议被历史记住,正是因为“软件危机”已经无法再被掩盖。

13.1 美国:军工牵引、实验室创新与企业放大
13.1.1 美国为什么最早形成现代软件质量治理雏形?

如果用一句话概括美国1945 - 1969年的路径,那就是:

国家用军工需求点火,实验室提供思想燃料,企业把方法放大成工业能力。

美国之所以领先,不只是因为技术强,而是因为它同时具备三种能力:

  1. 国家战略需求强:冷战、核威慑、防空、航天、导弹、通信都需要计算;

  2. 知识生产体系强:大学、实验室、研究机构活跃;

  3. 产业放大能力强:IBM、AT&T、GE、航空航天承包商等能够快速工程化。

这三者叠加,使美国最早把“计算问题”上升为“系统工程与质量治理问题”。

13.1.2 从弹道计算到国家系统:美国为什么必须重视质量?

二战中的弹道计算、密码破译、雷达控制,已经说明计算不是高级算盘,而是战略工具。战后,这种工具迅速升级为国家基础设施。

典型压力来自几个方向:

  • 防空预警系统:必须实时、准确、持续;

  • 核威慑与导弹系统:失误代价接近不可承受;

  • 航天工程:任务窗口极窄,容错空间极小;

  • 大型企业信息处理:要求稳定、兼容、可维护;

  • 通信与指挥控制系统:接口复杂性急剧上升。

在这种环境下,美国较早意识到:

质量不是“产品做得好一点”,而是“任务不能失败”。

一旦目标变成任务成功,质量管理就不可能只盯着某个部件,而必须追问:

  • 需求是否清楚?

  • 架构是否支撑任务?

  • 模块边界是否合理?

  • 接口是否一致?

  • 变更是否可控?

  • 测试是否接近真实场景?

  • 组织沟通链条是否可靠?

这就是质量从“点”走向“线”的开端。

13.1.3 美国真正领先的不是技术,而是组织创新

很多人谈美国,首先想到技术领先。但在1945 - 1969年,更深层的优势是:

美国率先建立了适合复杂技术扩散的组织网络。

这个网络至少有三层。

# 第一层:军方需求驱动

美国国防部及相关机构通过大规模采购、合同管理和任务定义,把国家安全需求转化为工程项目。

这种机制有几个特点:

  • 需求刚性;

  • 预算规模大;

  • 可容忍前期高投入;

  • 强调交付、验证和追责;

  • 重视合同、文档、评审和试验。

军工合同天然推动了文档化、配置管理、质量证明和里程碑评审。

# 第二层:实验室与研究机构创新

贝尔实验室、MIT林肯实验室、RAND公司、NASA相关机构,不只是发明设备和算法,更重要的是发明“如何组织复杂技术”。

它们输出的不只是机器,还有:

  • 系统工程方法;

  • 接口管理思想;

  • 可靠性设计方法;

  • 跨学科协作机制;

  • 大系统任务分解逻辑;

  • 早期软件验证思路。

# 第三层:企业工程化放大

没有企业,美国很多实验室成果可能停留在原型阶段。IBM、AT&T、GE、航空航天承包商等,把实验室经验变成工程流程、产品规范和产业能力。

美国的厉害之处,从来不只是发明了什么,而是把发明变成制度、流程、产业和市场。

13.1.4 SAGE:现代实时系统质量治理的早期样板

如果要在这一时期选一个最具代表性的美国案例,SAGE(Semi-Automatic Ground Environment,半自动地面防空系统)几乎绕不开。

SAGE是冷战背景下美国构建的防空预警与指挥控制系统,目标是把雷达、通信、计算机、显示终端和指挥中心连接成一个国家级实时网络。

今天看,SAGE像是某种“前互联网”的巨型实时信息系统。但在当时,它面对的难题极其超前:

  • 多地节点协同;

  • 实时数据处理;

  • 高可靠显示与交互;

  • 连续运行;

  • 操作员与机器协同;

  • 军事任务不允许长时间宕机;

  • 软件规模远超传统经验。

SAGE最重要的贡献,不只是技术,而是让工程界第一次深刻认识到:

软件不是附属品,而是系统成败的核心变量。

它提前暴露了后来软件工程会反复面对的问题:

  1. 系统复杂度不是线性增长,而是快速膨胀;

  2. 接口越多,错误传播越快;

  3. 实时系统不能靠最终测试兜底;

  4. 组织协同失败会直接转化为技术故障;

  5. 大系统项目需要过程控制,而不是“写完再说”。

SAGE本质上提前预演了软件危机,只是当时人们还没来得及把它命名为“软件危机”。

13.1.5 Apollo计划:把“软件可靠性”送上月球

另一个绕不开的案例是Apollo计划

Apollo令人震撼的不只是把人送上月球,而是它证明:

在极端资源约束、极端风险、极端复杂条件下,软件可以成为任务关键系统的核心。

阿波罗制导计算机(AGC)的软件开发面对极端挑战:

  • 计算资源极其有限;

  • 实时性要求极高;

  • 任务阶段复杂;

  • 错误可能危及生命;

  • 硬件、软件、任务流程、宇航员操作高度耦合。

Margaret Hamilton及其团队在Apollo软件工程中的贡献,后来成为软件工程史的重要象征。她推动“software engineering”这一表述被更广泛接受,正是因为Apollo让人们意识到:

软件不能再被看作“顺便写一下的指令集合”,而必须像桥梁、飞机、火箭那样被工程化对待。

1969年Apollo 11登月过程中,计算机出现著名的1201和1202报警。系统因负载问题触发报警,但由于前期对任务优先级和异常处理机制做了设计,计算机能够丢弃非关键任务,保住核心制导功能,最终支持登月成功。

这个故事的意义不在于“系统没有问题”,恰恰在于:

真正高水平的质量,不是永远没有异常,而是异常来了,系统仍然能保住最关键目标。

这就是高可靠系统的本质。

13.1.6 IBM System/360:把软件问题从军工带入商业世界

如果说SAGE和Apollo主要属于国家任务系统,那么IBM System/360则把软件质量问题推向商业与产业层面。

1964年,IBM推出System/360。它的目标极其雄心勃勃:让不同性能的机器共享统一架构,使客户的软件投资不因硬件升级而作废。

这背后是一种非常现代的质量观:

质量不只是机器稳定,更是兼容性、迁移性、可维护性和生态连续性。

但System/360也遭遇了巨大的软件挑战:

  • 不同机型兼容难度极大;

  • 操作系统软件异常复杂;

  • 进度延误严重;

  • 协调成本惊人;

  • 开发规模超过传统管理经验。

Frederick Brooks后来在《人月神话》中总结这些经验,提出著名判断:

“向一个已经延期的软件项目增加人手,只会让它更加延期。”

这句话不是项目管理鸡汤,而是指向一个严肃命题:

软件质量和软件进度,背后是同一个复杂性问题。

System/360说明,到1960年代中期,软件已经不再是配套劳动,而是决定产业成败的主变量。

13.1.7 美国路径的核心特征与局限

美国这一阶段的核心特征包括:

  1. 质量目标首先是任务成功,不是指标漂亮;

  2. 方法论诞生于大型项目的痛苦经验,不是书斋推演;

  3. 政府 - 实验室 - 企业三角结构极其关键

  4. 美国率先把软件复杂性视为治理对象

但美国模式也有代价:

  • 军工逻辑容易带来高成本方法;

  • 大项目容易催生官僚化;

  • 文档可能繁荣,理解却未必增加;

  • 过度依赖大机构,未必适合所有创新环境。

美国经验的真正启示不是“照搬军工流程”,而是:

复杂系统质量,必须靠组织网络,而不是靠单点英雄。

13.2 英国:学术传统、系统工程与公共部门计算
13.2.1 英国模式:不够“炸裂”,但非常“耐看”

如果说美国的故事像火箭升空,英国的故事更像一座老钟楼:不一定最喧哗,但结构严谨、制度深厚、节奏克制。

英国在计算与质量治理上的早期贡献,常被美国光芒遮蔽。但细看会发现,英国在三个方面非常重要:

  1. 学术传统深厚;

  2. 公共部门主导明显;

  3. 系统工程观念和制度理性较强。

英国的贡献更多体现为:

把复杂系统的可靠运行,纳入一种理性、规范、可审议的公共工程传统。

13.2.2 从图灵到国家计算:英国的基础并不差

英国在计算理论、密码破译、自动化技术方面有重要历史地位。图灵、Bletchley Park、Colossus等,构成了英国计算史的高光部分。

问题在于,战后英国的产业放大能力不如美国,资本市场和企业规模也不同。因此,英国计算能力更多嵌入国家机构、大学体系和公共部门。

这带来一种独特质量特征:

英国较早把计算视为公共管理能力,而不仅是军事装备或企业产品。

政府统计、科研计算、公共服务信息处理等场景,让英国很早面对这些问题:

  • 系统如何长期稳定运行?

  • 多部门之间如何共享数据?

  • 公共预算下如何平衡质量与成本?

  • 标准和程序如何支持长期维护?

  • 技术成果如何转化为国家治理能力?

这些问题今天仍然存在于政务数字化、公共平台、医保社保系统和关键基础设施建设中。

13.2.3 英国质量逻辑:不是最快做成,而是长期可治理

美国更像“任务倒逼创新”,英国更像“制度约束塑造方法”。

英国公共部门计算让质量管理呈现几个特点。

# 第一,强调规范与制度

英国公共部门项目通常更关注:

  • 程序是否合规;

  • 责任边界是否清晰;

  • 文档是否可追溯;

  • 系统是否可交接;

  • 预算与治理结构是否匹配。

这使英国较早强调可审核性和制度性质量。

# 第二,强调学术与实践之间的桥梁

英国大学在数学、逻辑、工程上的传统,使许多技术思路更容易被抽象化、结构化。这为后来结构化程序设计、形式化方法、安全关键系统验证等欧洲路径提供了土壤。

# 第三,强调系统作为公共基础设施

英国很多计算能力建设服务于科研、行政和公共服务,而不是单一企业利润。因此质量重点更偏向稳定性、延续性和公共责任。

美国更像是“先把大系统打出来”,英国更像是“先把大系统管起来”。

13.2.4 公共部门计算:质量进入“责任治理”

英国公共部门计算的核心命题是:

公共系统失败,不只是项目失败,而可能损害国家治理效率和公共信任。

因此,英国路径强调:

  • 程序化审批;

  • 职责划分;

  • 制度内协同;

  • 标准约束;

  • 可维护、可交接、可监督。

这些东西今天看似“慢”,但许多关键系统恰恰不能只追求快。

商业软件可以容忍一定试错,公共系统更需要可信。英国早期路径的价值,就在于它很早意识到了这一点。

13.2.5 英国路径的局限

英国模式的问题也很清楚:

  1. 产业规模和资本支持不如美国,许多理念没有形成全球商业扩散能力;

  2. 公共部门路径容易受财政和政治周期影响

  3. 制度理性有时会牺牲灵活性

英国模式的张力是:

稳定性强,但爆发力不足;治理性强,但扩张性有限。

13.2.6 英国留下了什么?

英国这一阶段最重要的遗产,不是某一款超级产品,而是一种思维方式:

  • 把计算视为公共治理能力;

  • 把质量视为制度责任;

  • 把系统视为长期维护对象;

  • 把学术严谨性注入工程实践;

  • 把规范化视为复杂协作的必要条件。

它提醒我们:

不是所有软件都应该像互联网App那样迭代。

有些系统,一开始就必须按公共责任去做。

13.3 法国:国家规划、工程师体系与关键系统
13.3.1 法国故事:计算产业成为国家意志的一部分

法国的战后路径与美国、英国都不同。

它不像美国那样由军工 - 实验室 - 企业三角快速扩张,也不像英国那样更多嵌入公共治理和学术传统。法国更像是把计算与软件能力纳入国家现代化工程,由国家规划、精英工程师体系和关键产业政策共同推进。

法国式特点很鲜明:

国家不是旁观者,也不是单纯买方,而是积极的组织者、设计者和整合者。

13.3.2 为什么法国特别强调国家规划?

战后法国面临的核心问题,不只是有没有技术,而是能不能在美国主导的技术秩序中保有自主能力。

当计算能力逐渐成为国家工业基础设施时,法国意识到:如果关键计算设备、系统架构、人才体系和工业标准全面依赖外部国家,那么工业现代化会存在根本性脆弱性。

于是法国形成典型思路:

  • 用国家规划确定技术方向;

  • 用工程师体系形成组织骨干;

  • 用国有或准国有企业承接产业任务;

  • 用关键系统建设带动能力积累;

  • 用标准和教育维持长期自主性。

这种思路在1966年的Plan Calcul(计算计划)中表现最集中。

13.3.3 Plan Calcul:法国争夺的是技术主权地基

Plan Calcul常被解释为法国扶持本国计算机产业的计划。这当然没错,但还不够。

更准确地说,Plan Calcul的底层逻辑是:

当计算成为国家基础能力时,技术自主就不再是产业政策选项,而是国家主权问题。

法国为什么推动Plan Calcul?

  • IBM等美国公司在全球计算市场越来越强;

  • 法国担心关键工业、行政和国防系统受外部架构控制;

  • 计算不只是设备采购,而是未来工业能力和治理能力的平台;

  • 如果没有本国能力,标准、接口、人才培养都会被别人定义。

对质量管理而言,这种国家意志带来鲜明特点:

  1. 强调关键系统可控;

  2. 强调本土工程能力积累;

  3. 强调标准、教育、工业、研究联动;

  4. 强调长期能力,而非短期盈利。

13.3.4 工程师体系:法国质量治理的隐形基础设施

如果说Plan Calcul是显性的国家战略,那么法国工程师体系就是隐性的质量基础设施。

法国高等工程教育体系培养的人才通常具有:

  • 数理基础扎实;

  • 工程纪律严谨;

  • 对国家项目有认同感;

  • 熟悉标准和大型系统组织;

  • 能在政府、研究机构、大企业之间流动。

这意味着,法国的质量治理不只是靠制度文本,更靠一套职业共同体。

法国很多时候不是先有流程再找人,而是先有一群受过同一套工程训练的人,能够把流程落成现实。

质量管理最怕的不是没制度,而是制度写得很好,组织不会执行。法国工程师体系的价值正在这里。

13.3.5 关键系统建设:质量目标首先是“可控”

法国在国防、能源、交通、电信等关键系统中,一个共同特点是:

质量目标首先是可控性,而不是最低成本。

当国家把计算和系统能力看作主权基础设施时,质量管理自然偏向:

  • 安全性;
  • 可审查性;
  • 长期维护性;
  • 本土人才可接续性;
  • 系统架构可理解性;
  • 关键环节不被黑箱化。

这对软件质量管理的启示非常深:

质量不仅是性能和缺陷率问题,还是控制权问题。

谁定义系统?

谁掌握接口?

谁理解内部逻辑?

谁能在危机时刻修复?

谁对未来迭代负责?

这些问题在今天的云平台、工业软件、AI大模型和基础软件领域,比当年更尖锐。

13.3.6 法国路径的优点与局限

法国路径的优点包括:

  1. 适合关键基础设施和高可靠系统;

  2. 重视长期能力建设;

  3. 能把产业目标与国家目标耦合;

  4. 强调标准、教育、人才和工程纪律。

局限也明显:

  1. 市场反应速度可能偏慢;

  2. 集中式资源配置可能压缩多样化创新;

  3. 工程理性强,但全球商业放大未必同步;

  4. 技术路线一旦判断失误,调整成本较高。

法国给今天最大的启示是:

对关键系统来说,质量管理不能只看企业流程,还必须看国家能力、人才体系和技术主权。

13.4 苏联:国防优先与体制刚性
13.4.1 苏联模式:把质量做成纪律,也把灵活性压到最低

苏联路径是这一阶段最具张力的一条。

一方面,苏联在国防、航天、导弹、核工业等领域,对可靠性和任务完成有极高要求;另一方面,高度集中、计划主导的体制,也让质量治理深受组织刚性影响。

一句话概括:

在最能体现国家意志的地方,苏联把质量做成了纪律;但也正因为过度依赖纪律,它很难把质量做成有弹性的系统能力。

13.4.2 为什么苏联必须高度重视计算与可靠性?

对苏联而言,导弹、预警、核力量、航天发射、工业自动化都直接关系国家安全。

因此:

  • 关键系统必须可靠;

  • 任务链条必须受控;

  • 失败必须可追责;

  • 冗余设计必须充分;

  • 组织纪律必须强。

苏联对质量的理解,首先不是顾客满意,而是国家任务完成。

这和美国军工体系有相似之处。但苏联不同在于:市场机制更弱,组织调整更难,跨机构协同更依赖行政命令,而不是合同网络和企业生态。

13.4.3 设计局体系:苏联质量治理的核心组织单元

理解苏联路径,必须理解设计局(OKB)体系

设计局承担从方案设计到系统集成的重要职责,在航天、航空、导弹、电子等领域像是技术权力中心。

它有明显优点:

  • 任务导向明确;

  • 资源集中;

  • 专家权威强;

  • 系统集成能力集中;

  • 能处理高机密、高风险项目。

但问题也突出:

  • 部门壁垒大;

  • 知识流动受限;

  • 横向协同成本高;

  • 路线竞争可能内耗;

  • 变更反馈链条较长。

苏联的质量管理很大程度体现为“自上而下的任务纪律”。这在确定性目标中有效,但面对快速变化和复杂协同时,就显得沉重。

13.4.4 苏联质量强项:高风险任务中的极致控制

苏联在国防和航天项目中对质量要求严苛:

  • 试验程序严格;

  • 验证步骤繁密;

  • 故障追责严厉;

  • 冗余和容错意识较强;

  • 关键部件和关键逻辑审查强度高。

这说明一个残酷事实:

在极端高风险环境中,质量管理的第一推动力往往不是市场,而是恐惧。

对失败的恐惧,对国家安全后果的恐惧,对政治问责的恐惧,共同塑造了苏联式质量纪律。

13.4.5 体制刚性为什么会反过来伤害质量?

问题在于:

质量不是只靠严格就能做好的。

当系统复杂度上升、需求变化加快、跨部门协同增多,仅靠层级命令和纪律并不足够,甚至会产生反作用。

# 第一,信息上行不充分

强等级组织中,一线问题可能因政治压力和层级过滤无法真实上报。质量问题会在系统内部累积。

# 第二,变更成本极高

高度计划化系统一旦进入既定流程,调整困难。而软件和复杂系统最怕的正是无法适应变化。

# 第三,责任清晰不等于协作高效

责任边界强,并不自动等于接口顺畅。部门可能形成“只保自己不出错”的局面,降低整体系统质量。

# 第四,创新扩散慢

即便局部形成先进做法,要在全国体系扩散,也需要穿透层层组织结构。

纪律可以压住错误,但未必能吸收复杂性。
而软件质量,越来越是复杂性治理问题。
13.4.6 苏联最深的教训:高控制不等于高韧性

苏联经验给后人一个巨大提醒:

一个系统可以很受控,但不一定很有韧性。

受控意味着:

  • 层级清晰;

  • 命令有力;

  • 试验严格;

  • 责任明确。

韧性则意味着:

  • 出问题时能快速反馈;

  • 发生变化时能灵活调整;

  • 多部门能高效协同;

  • 方法能持续学习和改进。

苏联在控制上强,在韧性上弱。这解释了它为何能在某些重大国家任务中取得惊人成就,却在更广泛的民用计算与软件生态扩展中显得迟缓。

13.5 日本:制造质量经验尚未全面转入软件
13.5.1 日本悖论:制造质量世界级,软件还没跟上

日本是战后质量管理史上最传奇的国家之一。Deming、Juran等质量思想在日本被吸收、发展,形成全员质量控制、持续改进、精益生产等世界级方法论。

但如果把时间严格限定在1945 - 1969年,会发现一个有趣现象:

日本在制造质量上已经显示惊人潜力,但这种优势还没有完整转化为软件质量治理能力。

原因很简单:硬件制造和软件工程虽然都叫质量,但不是同一种问题。

13.5.2 日本为什么先在制造业起飞?

战后日本国家战略首先是恢复工业能力、提升制造质量、重建出口竞争力。

日本企业擅长:

  • 把外来方法本土化;

  • 把质量管理融入现场;

  • 用持续改进提升一致性;

  • 用团队文化支撑纪律;

  • 把减少浪费变成系统能力。

这些方法在制造业特别有效,因为制造具有:

  • 工序可重复;

  • 偏差可测量;

  • 过程相对稳定;

  • 反馈明确;

  • 质量与物理对象紧密对应。

但软件不同。

软件的问题是:

  • 需求本身可能不稳定;

  • 缺陷暴露非线性;

  • 代码复制成本极低但复杂性极高;

  • 同样流程未必产生同样结果;

  • 后期改动可能影响整体结构。

因此,日本制造质量经验虽然重要,但在这一阶段尚未形成对软件工程的系统性迁移。

13.5.3 软件当时还不是日本国家能力主轴

1945 - 1969年,日本技术和产业重心更多在:

  • 电子制造;

  • 通信设备;

  • 精密工业;

  • 汽车与机械;

  • 生产组织能力。

软件更多附着于硬件和制造体系,而不是独立成为战略产业与方法论中心。

所以,日本出现一种典型状态:

它在“如何把事情做得稳定一致”上很强,但在“如何治理不断膨胀的软件复杂性”上,还没有建立完整体系。

13.5.4 制造质量文化对软件有帮助,但不够

日本制造质量文化对软件的早期影响主要体现在理念层面:

  • 重视过程纪律;

  • 重视团队协作;

  • 重视缺陷预防;

  • 重视持续改进;

  • 重视标准作业;

  • 重视经验沉淀。

这些后来都对软件质量极其重要。但在1945 - 1969年,它们仍是潜在资源,还没有和软件工程方法深度结合。

因为软件还需要:

  • 抽象设计;

  • 接口管理;

  • 模块化;

  • 需求变更控制;

  • 系统验证;

  • 配置管理;

  • 大规模协同开发。

这些能力,日本此时仍在吸收和积累。

13.5.5 日本给中国的提醒:制造强不自动等于软件强

这一点特别重要。

很多国家在推进智能制造和工业软件时,容易认为:既然制造已经强,软件质量自然会强。

历史告诉我们:不一定。

制造业擅长把确定性做深,软件工程擅长与不确定性共处。这两种能力相关,但绝不相同。

日本经验说明:

  • 制造质量能力是软件质量的重要基础,但不是充分条件;
  • 软件有独特复杂性治理问题,不能简单照搬工厂管理;
  • 如果不把软件上升为独立工程对象,它会长期作为硬件附庸存在;
  • 软件质量需要新的组织结构、方法论和人才体系。
13.6 阶段总结:质量管理开始从“点”向“线”过渡

1945 - 1969年最重要的历史意义,不是计算机速度提高了多少,也不是编程语言发明了多少,而是:

人类第一次在大规模、任务关键、跨组织协同的复杂系统中意识到:质量不能只抓局部,必须贯穿全过程。

这就是从“点”向“线”的过渡。

13.6.1 什么叫“点”?

“点”是工业质量管理早期形态:

  • 查某个缺陷;

  • 控某个工序;

  • 修某个部件;

  • 盯某个指标;

  • 解决某次故障。

这种方式在制造时代有合理性,因为问题通常对应物理对象和局部偏差。

13.6.2 什么叫“线”?

“线”意味着把质量放进连续过程:

  • 需求是否清楚;

  • 架构是否合理;

  • 接口是否清晰;

  • 实现是否一致;

  • 测试是否有效;

  • 变更是否受控;

  • 交付是否可维护;

  • 运行反馈能否闭环。

1945 - 1969年,虽然“软件生命周期管理”尚未成熟,但这条线已经被历史强行拉出来。

13.6.3 为什么是这一阶段?

因为三个条件同时出现。

# 第一,失败代价大到不能只靠补救

导弹预警、航天任务、公共计算系统、关键工业控制都不允许“先上线看看”。

# 第二,复杂性大到不能只靠个人

代码多了,团队多了,接口多了,环境复杂了。个人天才无法统领全局,必须靠流程、文档、标准、评审和验证。

# 第三,组织协同成为质量问题本身

问题不再只是某人写错代码,而可能是:

  • 部门理解不一致;

  • 任务定义与工程实现脱节;

  • 变更没有同步;

  • 验证环境与真实环境不一致;

  • 责任边界清楚但接口失败。

这意味着质量管理开始从技术问题升级为组织问题。

跨阶段比较:五国路径背后,隐藏着五种质量哲学

把美国、英国、法国、苏联、日本放在一起看,它们不是简单的“谁先进谁落后”,而是代表五种质量哲学。

一、美国:复杂性治理哲学

美国的核心是:

在大型任务中暴露复杂性,再通过组织创新、系统工程和企业放大来消化复杂性。

美国质量观认为:

  • 问题一定会出现;

  • 关键是能否系统性管理;

  • 方法必须嵌入项目和产业;

  • 高风险任务会倒逼工程纪律。

美国最强的不是发明,而是扩散。

二、英国:制度责任哲学

英国强调:

  • 质量是公共责任;

  • 系统要长期维护;

  • 方法要能监督、交接、审计;

  • 学术严谨性应进入工程实践。

英国提醒我们:不是所有高质量系统都需要狂飙突进。

三、法国:主权工程哲学

法国的底层逻辑是:

  • 关键系统不能完全交给外部;

  • 质量与国家能力、技术主权相关;

  • 工程师体系是质量治理的根;

  • 长期能力比短期市场收益更重要。

这在今天的基础软件、工业软件、云平台和AI大模型时代尤其值得重视。

四、苏联:纪律控制哲学

苏联强调:

  • 国家任务压倒一切;

  • 严格层级确保执行;

  • 高风险任务必须强管控;

  • 失败不可接受。

但它也提醒我们:

纪律很重要,学习机制更重要;控制很重要,韧性更重要。

五、日本:文化改进哲学

日本在本阶段尚未形成成熟软件质量体系,但展现出一种深刻能力:

  • 把质量变成组织文化;

  • 把改进变成日常习惯;

  • 把标准执行内化为集体能力。

它的问题是这套能力尚未完整转入软件。

对中国的启示:今天回看1945 - 1969,不是为了怀旧,而是为了回答“中国怎么做”

历史研究最怕停留在知识欣赏。我们研究这一阶段,是为了回答现实问题:

今天中国的软件质量管理,到底应该学什么,又不能照搬什么?

一、软件质量首先是国家能力问题,不只是企业管理问题

美国、法国、苏联都说明:

一旦软件进入国防、能源、交通、通信、金融、政务、工业控制等关键领域,它就不再只是企业开发流程问题,而是国家能力问题。

中国今天面临的正是这一阶段:

  • 工业软件仍有短板;

  • 关键基础设施数字化加速;

  • 自主可控要求提高;

  • 云平台、大模型、政务系统、智能制造深度耦合;

  • 网络安全、数据安全、供应链安全压力加大。

因此,中国的软件质量管理不能停留在测试覆盖率和开发规范,而必须上升为:

  • 国家关键系统韧性建设;

  • 自主软件基础设施质量治理;

  • 产业链协同质量能力;

  • 软件、数据、模型一体化治理。

二、不能只学美国工具,还要学组织机制

中国过去大量吸收美国软件工程方法、标准和工具,这是必要的。但美国真正优势不只是方法清单,而是:

  • 军方、大学、实验室、企业协同机制;

  • 通过大项目积累工程经验的能力;

  • 把局部经验沉淀为产业规则的能力;

  • 用企业放大方法的能力。

如果只引进工具,不建设组织网络,就会出现:

  • 工具买了,流程有了,实战能力不足;

  • 标准学了,文档做了,复杂系统仍控不住;

  • 局部试点成功,行业扩散乏力。

三、法国经验值得重视:关键系统质量要和技术主权绑定

中国在若干领域与当年法国有相似处境:

  • 底层平台可能受制于人;
  • 关键系统依赖外部工具链;
  • 核心接口和生态规则不完全掌握;
  • 工业软件、基础软件、高端工程软件需要长期积累。

法国告诉我们:

关键软件如果只看成市场问题,往往会输在长期;
如果上升为国家能力问题,质量治理才真正稳得住。

中国需要:

  • 把质量治理前置到架构和工具链;
  • 把自主可控与高质量统一起来;
  • 建立国家级关键系统验证评估能力;
  • 推动标准、教育、产业、应用场景协同。
四、避免苏联式刚性陷阱

关键系统当然需要严纪律、强审查、高标准。但如果质量治理变成:

  • 层层表格;

  • 层层审批;

  • 层层签字;

  • 报喜不报忧;

  • 谁也不敢暴露真实问题;

最终可能是形式上更安全,实际上更脆弱。

真正高水平的质量,不是没人说有问题,而是问题能被尽早、真实、低成本地暴露并消化。

中国软件质量治理必须同时具备:

  1. 硬约束能力:高标准、强审查、严底线;

  2. 软吸收能力:真实反馈、持续改进、跨组织协同、容纳试错。

五、制造强国不自动等于软件强国

日本历史提醒中国:

制造质量能力不能自动转化为软件质量能力。

中国是制造大国,但软件有自己的难点:

  • 需求不稳定;

  • 架构复杂;

  • 数据质量影响巨大;

  • 模型行为不确定;

  • 接口生态动态变化;

  • 安全风险与外部环境耦合。

因此,中国不能把工厂管理简单套到软件,而要发展适合软件、数据、模型和AI系统的质量治理方法。

六、形成“中国气象”的软件质量管理方法论

中国真正需要的,不是复制任何单一国家模式,而是综合吸收:

  • 学美国的系统工程与组织协同;

  • 学英国的公共责任与制度治理;

  • 学法国的国家规划与主权意识;

  • 借鉴苏联的关键任务纪律性,但避免刚性;

  • 吸收日本的质量文化与持续改进精神。

面向中国现实,这套方法论至少应包括:

  1. 关键基础设施优先的质量底线治理;

  2. 软件、数据、模型一体化质量框架;

  3. 面向超大规模系统的架构与过程治理;

  4. 自主可控与开放协同并重;

  5. 面向复杂供应链的软件可信验证机制;

  6. 将质量视为国家竞争力、产业韧性和社会信任的结合点。

本章小结:1945-1969,软件质量管理真正“出生”了

我们常说,软件工程在1968年NATO会议上“诞生”。这句话没有错,但如果只看到那场会议,就会错过更深的历史背景。

真正的出生,不是在概念被命名的瞬间,而是在问题被历史逼到必须解决的那一刻。

1945 - 1969年,正是这样的时刻。

在美国,军工任务、实验室创新与企业放大,让复杂系统质量治理初具雏形;

在英国,公共部门与学术传统推动质量进入制度责任逻辑;

在法国,国家规划与工程师体系让关键系统质量与技术主权绑定;

在苏联,国防优先塑造了高控制、高纪律的质量模式,也暴露体制刚性的边界;

在日本,制造质量文化已然成形,但尚未完全转化为软件复杂性治理能力。

这些路径共同说明:

软件质量管理不是从“写代码的人更认真一点”开始的,而是从“整个国家与组织承受不起失败”开始的。

本阶段最大的历史贡献,是完成了三个认知跃迁:

  1. 软件不是附属物,而是系统核心;

  2. 质量不是终检,而是全过程治理;

  3. 复杂系统不能只靠个人英雄主义,必须依赖组织工程能力。

这意味着,软件质量管理已经不再只是“点”的控制,而开始拉出“线”的轮廓。

后面的历史:1970 - 1989年的软件工程与质量体系化时代,将沿着这条线继续展开,直到形成更大范围的“面”和“体”。

注释
  1. 本章关于战后计算与系统工程发展的叙述,综合参考科技史、军工史、软件工程史、质量管理史等研究成果。由于1945 - 1969年“软件”概念尚未完全独立,许多史料使用“程序”“例程”“系统”“控制逻辑”“信息处理”等术语。

  2. SAGE系统通常被视为大型实时计算系统、指挥控制系统和系统工程实践的重要里程碑,也被看作现代网络化系统和软件复杂性治理的前史之一。

  3. Apollo计划软件开发与Margaret Hamilton团队的贡献,在NASA资料、MIT仪器实验室相关回忆录和软件工程史研究中均有讨论。

  4. IBM System/360及其操作系统开发问题,是软件工程史上“大项目复杂性失控”的经典案例,Frederick P. Brooks的《人月神话》对此影响深远。

  5. 法国Plan Calcul常被置于战后法国技术主权和国家产业政策框架下理解,其意义不仅是产业扶持,更是对计算能力基础设施的战略布局。

  6. 苏联设计局体系、国防优先配置和高度集中式科研工业组织,为高风险任务提供集中资源优势,也带来知识流动受限、反馈迟缓等问题。

  7. 日本在1945 - 1969年的质量优势主要体现在制造业领域,软件质量治理要到后续嵌入式系统、工业控制、消费电子和汽车电子发展后才更清晰呈现。

  8. 本章所谓“从点到线”,并非认为此阶段已经形成完整软件生命周期质量治理体系,而是指需求、设计、实现、验证、维护之间的连续性意识开始出现并被强化。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-23 07:05:36 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/868658.html
  2. 运行时间 : 0.105218s [ 吞吐率:9.50req/s ] 内存消耗:4,868.31kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=65c5fef6f17728b52f51d7300d5954d3
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000703s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001052s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000370s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000287s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000531s ]
  6. SELECT * FROM `set` [ RunTime:0.000204s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000623s ]
  8. SELECT * FROM `article` WHERE `id` = 868658 LIMIT 1 [ RunTime:0.000977s ]
  9. UPDATE `article` SET `lasttime` = 1784761536 WHERE `id` = 868658 [ RunTime:0.011984s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000275s ]
  11. SELECT * FROM `article` WHERE `id` < 868658 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000467s ]
  12. SELECT * FROM `article` WHERE `id` > 868658 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000458s ]
  13. SELECT * FROM `article` WHERE `id` < 868658 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001204s ]
  14. SELECT * FROM `article` WHERE `id` < 868658 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001186s ]
  15. SELECT * FROM `article` WHERE `id` < 868658 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001444s ]
0.106855s