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

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

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

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

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

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

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

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

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

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

宏观研发过程:复杂模式

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

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

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

业务需求转化:庞杂模式

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

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

软件构造过程:庞杂模式

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

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

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

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

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

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

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

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

三、一个统一的视角

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

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

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

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

相关推荐
李昊哲小课6 分钟前
大模型应用开发课程 —— 项目 09~12 完整教程
大数据·人工智能·大模型
天涯明月19931 小时前
AI Agent应用深度研究报告
人工智能·大模型·agent
艾莉丝努力练剑7 小时前
【AI接入大模型SDK】ChatSDK示例验证
人工智能·学习·面试·大模型·sdk
前沿在线14 小时前
百度文心助手推出任务引擎 2.0,日活用户同比增长 83%,日均对话轮次增长超 2 倍
人工智能·ai·大模型
thesky12345616 小时前
27届大模型面试准备(四十四):生成式世界模型与视频生成——从 JEPA 到 Sora/Genie
大模型·视频生成·sora·世界模型·jepa·生成式世界模型·dreamer
赵大仁21 小时前
Structured Output 落地:JSON Schema、重试与前端校验
前端·ai·大模型·工程化·json schema
小七-七牛开发者21 小时前
dsh 拆解系列 Vol.01:没有特权内核的 Agent 运行时
ai·大模型·agent·claude·token·工作流·skill·claudecode·ai coding
嘟哩DuliDuli21 小时前
AI 短剧生成为什么要有角色库、场景库和镜头卡
android·人工智能·安全·ai·软件工程
老郑聊AI业财智造1 天前
Qwen技术架构与源码深度剖析
人工智能·语言模型·架构·系统架构·软件工程