知识卡片
软件的两个价值维度:行为价值与架构价值
内容
每个软件系统都通过行为和架构两个维度体现实际价值,多数程序员只关注前者:行为价值指按需求文档编写代码、修复bug,让机器按指定方式运转创造利润——这是最直观的价值,也是大部分程序员认为的”全部工作”。但架构价值同样根本,它就藏在”software”这个词里——”soft”意味着灵活性:软件被发明出来的目的,正是让我们能以灵活方式改变机器的工作行为(对机器上难以改变的行为,我们才称之为硬件);软件要保持”软”,意味着当需求方改变需求时,所需的变更必须能简单方便地实现,且变更实施的难度应该只和变更的范畴(scope)成正比,与变更的具体形状(shape)无关。问题的根源正在于架构设计:如果架构偏向某种特定”形状”,与该形状不匹配的新需求(哪怕范畴很小)就会越来越难实施——这正是为什么有些代码变更成本和它实现的功能改变量完全不成比例,也是为什么第二年、第三年的研发成本会持续走高。发散:”软件应该软”这句看似平淡的话,实际上给”好架构”下了一个操作化定义:好架构应该让变更成本只取决于变更范畴,而与架构本身当前的”形状”无关。
参考来源
- 位置:《架构整洁之道》第2章《两个价值维度》"行为价值""架构价值"(源文件:_epub-src/text/part0010_split_002.html)
- 结论依据:原文区分行为价值(按需求文档实现功能与修bug)与架构价值(软件应保持"软"即易于修改),并说明变更实施难度应与变更范畴成正比而非取决于系统当前"形状",指出架构设计偏向特定形状会导致新变更成本与其功能改变量不成比例,直接支撑本卡片结论。
- 原始内容:软件应该容易被修改……变更实施的难度应该和变更的范畴(scope)成等比关系,而与变更的具体形状(shape)无关……问题的实际根源当然就是系统的架构设计。