知识卡片

软件方法论演进的共同模式

普通读书笔记卡 · 1652

内容

从结构化编程的”模块”,到面向对象的”对象”,再到软件架构的”组件”,每次新方法论都是对已达一定规模的软件做进一步拆分,区别只在粒度越来越粗、抽象层次越来越高。这些方法论轮番被当作”银弹”追捧,但都只能缓解而非根除问题——因为各自针对的是不同阶段暴露的复杂度,而非复杂度本身。发散:评价任何新范式时,应先问它解决的是复杂度的哪个具体侧面,而非默认它能解决”复杂度”这个笼统问题。

参考来源

- 位置:《从0开始学架构》第4章《02|架构设计的历史背景》"软件架构的历史背景"一节(源文件:_epub-src/OEBPS/Text/part0003_split_006.html) - 结论依据:原文明确"20世纪60年代第一次软件危机引出了'结构化编程',创造了'模块'概念;20世纪80年代第二次软件危机引出了'面向对象编程',创造了'对象'概念;到了20世纪90年代'软件架构'开始流行,创造了'组件'概念……'模块''对象''组件'本质上都是对达到一定规模的软件进行拆分,差别只是在于……拆分的粒度越来越粗,拆分的层次越来越高",且明确软件工程、面向对象均被当作"银弹"但"事实证明……也不是银弹"。 - 原始内容:软件架构的出现有其历史必然性。20世纪60年代第一次软件危机引出了"结构化编程",创造了"模块"概念;20世纪80年代第二次软件危机引出了"面向对象编程",创造了"对象"概念;到了20世纪90年代"软件架构"开始流行,创造了"组件"概念……差别只是在于随着软件的复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。