笔记
20 世纪 60 年代第一次软件危机引出了“结构化编程”,创造了“模块”概念;20 世纪 80 年代第二次软件危机引出了“面向对象编程”,创造了“对象”概念;到了 20 世纪 90 年代“软件架构”开始流行,创造了“组件”概念。我们可以看到,“模块”“对象”“组件”本质上都是对达到一定规模的软件进行拆分,差别只是在于随着软件的复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。
-
只有规模较大的软件系统才会面临软件架构相关的问题,例如:
- 系统规模庞大,内部耦合严重,开发效率低;
- 系统耦合严重,牵一发动全身,后续修改和扩展困难;
- 系统逻辑复杂,容易出问题,出问题后很难排查和修复。
理解与思考
- 软件工程上陆续出现的几种编程理论和开发方法,都是为了解决软件系统日益复杂度、交付难度日益增长的问题。社会的信息化进程日益加快,我们需要构建更大型的系统去支撑业务的快速发展。如何降低系统开发的复杂度,及时交付出高质量的软件,是软件从业者都要思考的问题。软件架构设计希望通过较高抽象层次的设计来分解系统,将其降解成较小的模块和组件,以期降低开发难度,提高开发效率。
- 软件架构的三种典型问题,我现在参与的项目就存在着。一个系统,越往后发展,代码和架构就越腐化,系统耦合,逻辑复杂,非常难修改和维护。如何在系统发展和演进的过程中保持净化的能力,是个非常值得思考和实践的问题。