软件工程即知识工程:从知识传递视角重新理解研发过程

软件工程即知识工程:从知识传递视角重新理解研发过程

一、软件是载体,知识才是产品

理解软件工程的本质,需要先厘清一个根本问题:软件的真正产品是什么?

软件与书籍是同构的。书籍是载体,作家真正关心的是其中的人物、情节、观点和论据------内容才是产品,书籍只是内容的载体。软件同理:软件是载体,软件中所蕴含的知识才是真正的产品

软件中最重要的知识是业务知识,包括业务流程、组织架构、行业规则、领域知识等。这些知识描述了软件如何帮助客户解决问题、企业如何运营业务。业务知识可以脱离软件存在,但软件不能脱离其内在知识而存在。

业务知识的载体不只是软件,还有人和组织。一个按公式计算报价的软件,其真正的产品是报价规则;掌握了这个规则的人,同样能完成报价工作。这个视角揭示了一个重要事实:当软件承担一部分业务知识时,或修改软件所承担的业务知识范围时,往往也会引起对应的组织变更。

除业务知识外,软件中还包含架构知识------关于"软件系统该如何实现"的知识。架构定义了系统中组件的类型及组件间的交互方式,有两个作用:帮助理解系统现状(显式知识),以及指导新需求的任务分解(不可言说知识)。

二、软件研发过程的认知模式分析

将软件研发过程映射到 Cynefin 框架,可以清晰地看到不同阶段的认知模式,从而理解效率差异的根本原因。

宏观研发过程:复杂模式

从宏观来看,软件研发是对业务知识的学习过程。在构造软件之前,我们无法 100% 确定所构造的软件是否能满足业务需求,是否能在现有知识结构下发挥作用。这是典型的"未知的未知",只能处于复杂认知模式

这也是为什么主流研发流程都包含迭代元素:每次迭代都是一次**探测(根据已知情况构造软件)→ 感知(收集反馈验证软件是否有效)→ 响应(根据反馈改进方案)**的循环。

放大到产品生命周期,精益创业的"构建-度量-学习"循环与复杂模式完全对应:构建(Probe)→ 度量(Sense)→ 学习(Respond)。

业务需求转化:庞杂模式

进入交付流程之前,需要将业务知识转化为软件功能需求------按照目标解决方案(业务架构愿景)将业务知识映射为不同业务模块的软件需求。此时处于庞杂认知模式:感知(对要解决的问题已有初步理解)→ 分析(按照业务架构处理问题)→ 响应(得到各软件系统的需求)。

这里的"分析"能力,正是业务架构师积累的不可言说知识在发挥作用。

软件构造过程:庞杂模式

进入交付流程后,软件构造围绕质量展开,包括功能性质量(软件是否执行预定功能)和非功能性质量(性能、可靠性、可扩展性等)。

架构知识是从技术视角出发的解决方案,在任务分解过程中发挥作用------将软件需求在架构规定的组件范围内进一步分解为具体任务。这同样是庞杂认知模式:感知(理解要解决的问题)→ 分析(按照软件架构处理问题)→ 响应(得到针对不同架构组件的任务)。

架构腐化的本质:架构腐化不只是最终结果的问题,更多是在分解任务时架构无法有效起到指导作用,持续产生不正确的任务划分。当开发者无法用架构知识指导任务分解时,他们实际上处于复杂模式而非庞杂模式,这正是架构腐化的认知层面根因。

质量保障措施:不同模式对应不同效率

不同的质量保障措施对应不同的认知模式,效率差异显著:

代码审查处于复杂模式:探测(成员根据对架构的认知先完成功能)→ 感知(架构师或团队成员对已完成功能进行反馈,寻找不符合架构约束的地方)→ 响应(指明整改方向)。代码审查本质上是一种学习机制,表明开发者在探索架构约束的边界。

测试策略处于庞杂模式:感知(理解需求边界)→ 分析(将需求功能按不同边界分解为不同种类的测试)→ 响应(完成测试)。测试策略是基于分析的质量保障,效率高于代码审查。

这个对比揭示了一个反直觉的结论:Debug 是低效的复杂模式 (探测打断点 → 感知通过断点数据寻找问题成因 → 响应定位问题),表明开发者并不知道代码如何运转,正在学习当前代码库。而看起来"奇怪"的测试驱动开发(TDD)是庞杂模式,效率反而更高。

三、一个统一的视角

将软件研发过程理解为知识过程,可以得到一个统一的分析框架:

软件研发的宏观过程是业务知识的学习(复杂模式),进入交付后是业务知识和架构知识的应用(庞杂模式),具体的质量保障措施则根据其机制分别处于复杂或庞杂模式。

这个框架的实践价值在于:软件工程的优化方向,就是将复杂模式转化为庞杂模式,将庞杂模式转化为清晰模式。任何能够降低认知模式层级的实践,都是有效的效率提升手段。

对于 LLM 辅助软件工程,这个框架同样适用:LLM 能在庞杂模式和清晰模式下显著提升效率,但在复杂模式下,它只能作为探测工具,无法替代人的感知和响应过程------因为那个过程本身就是不可言说知识的学习机制。

相关推荐
山顶夕景1 天前
【LLaDA】Large Language Diffusion Models
大模型·llm·diffusion·生成式·llada
BothSavage1 天前
OpenHarness源码研究-2-CLI构建工具Typer
大模型·agent·openharness
xixixi777771 天前
从5G标准到6G前沿:Polar码的技术演进与未来之路
开发语言·人工智能·5g·大模型·php·通信·polar码
九成宫1 天前
IT项目管理期末复习——Chapter 5 项目范围管理
笔记·项目管理·软件工程
摩西蒙1 天前
软考计算机组成原理学习笔记-1
笔记·学习·软件工程
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2026-04-13)
ai·大模型·github·ai教程
博士僧小星1 天前
人工智能|大模型——训练——大模型微调全栈指南:从Transformer架构、10+种PEFT原理、流程与实战(全网最详细)
人工智能·lora·大模型·微调·peft·qlora·prefix tuning
Flying pigs~~1 天前
RAG前身:基于mysql➕redis➕bm25的传统QA问答系统
数据库·redis·缓存·大模型·qa·rag·prompt提示词
努力的小巴掌1 天前
多模态大模型-基础概念
语言模型·大模型·llm·多模态
guslegend1 天前
第9节:FAISS,HNSW还是BM25?如何选择最适合业务的向量检索引擎?如何选择最适合业务的向量检索引擎
人工智能·大模型·faiss·rag