知识卡片

软件开发四阶段演进与架构概念的萌芽

普通读书笔记卡

内容

软件开发历经四个明显阶段,每个阶段都有一个标志性事件驱动转折。松散的软件开发阶段始于1946年数字电子计算机诞生,主要任务是编码和纠错(Code & Fix),手工作坊式开发,没有软件架构的概念。基于软件工程思想的开发阶段始于[[软件危机与NATO会议催生软件架构学科]]中提到的1968-1969年NATO会议,软件开发流程系统化、规范化,由需求分析→概要设计→详细设计→编码→测试→部署维护组成,其中概要设计(preliminary design)类似架构设计,是架构思想的初步萌芽——但书中明确指出软件架构与概要设计并不相同:软件架构有名字,便于交流;软件架构可重用,是针对某类问题的已知最优解决方案;软件架构有模式和风格等概念。这一阶段因黑盒开发占主流、用户参与粒度不够,仍导致效率低成本高质量不高的问题,催生了下一阶段。基于敏捷过程的软件开发阶段始于2001年敏捷联盟成立,特点是迭代、增量、持续集成,黑盒开发和白盒开发协同推进,弱化软件过程概念但深化架构概念——核心思想是先通过原型化方法快速建立初始架构,再通过持续演化和评估得到最终架构,且架构会随需求和环境变化做自适应调整。智能化软件开发阶段标志性事件尚未确定,架构演化思想将进一步深化,可能表现为两种形态:一是大量人工智能技术被用于构造架构过程(架构自身不一定智能),二是架构本身由智能体(如Agent)组成、组件连接件都具备感知学习推理决策能力,或架构自带一个比架构师更强大的智能助手。理解这条演进链的关键是:架构不是从一开始就存在的概念,它是”概要设计”在软件工程规范化压力下逐渐分化、独立出来的产物,而”架构是演化而非设计出来的”这一敏捷时代的核心判断,正是对松散阶段”缺乏系统流程”和软件工程阶段”过度预先设计”两种极端的双重反思。

参考来源

- 位置:《软件架构理论与实践》第6章《软件架构与敏捷开发》"6.1 软件开发的发展简史"节(源文件:_epub-src/OEBPS/text00047.html) - 结论依据:原文逐一说明四个阶段的标志性事件和特征,并明确"软件架构与概要设计是不同的,最明显的不同有:①软件架构有名字,便于交流;②软件架构可重用……③软件架构有模式和风格等概念",直接支撑本卡片结论。 - 原始内容:这个阶段开始的标志性事件是北大西洋公约组织(NATO)于1968年和1969年召开的两次会议……其中概要设计(preliminary design)类似架构设计,所以说这个阶段开始有了软件架构的初步思想……但是,软件架构与概要设计是不同的,最明显的不同有:①软件架构有名字,便于交流。