向对象发展到面向构件,由面向构件再发展到面向服务,因此它们的认知观和基础理论都是息息相关的,解决大型软件的开发效率和质量除了要解决编程的正确性外,还必需解决开发周期长、复用性差、成本高、文档多、以及难以适应系统演化等问题。
40年前国际上发生了“软件危机”,如IBM公司开发一个操作系统、或美国的航空公司开发飞机订票系统,都花费了上千人年的工作量,开发周期长、而开发出来的产品却是错误很多,难以维护和适应修改。正在此时,一位荷兰的物理家E.W.Dijkstra提出了一种“结构程序设计方法”,他认为:人的智力是有限的,采用数学或物理学的思维方法,用枚举、抽象、归纳、类比等思维方式简化问题,称为结构程序的分析和设计方法(SASD)。由于我也是数学系毕业的,我拜读了他的所有论文,编写一本著作“编程方法学”,此书三次获得著作大奖,并在全国十多所名牌大学讲过课。用此方法扩展到软件设计中时,称为“结构化分析和结构化设计(SASD)”,
所谓“结构程序设计方法”,就是基于面向对象的体系结构没计方法的早期蓝本,侧重於解决程序正确性的编程的方法,以此为基础建立了软件工程这门学科,建立了编程的基础理论体系。
解决软件开发效率的认知观及其基础理论
我们都知道由面向对象发展到面向构件,由面向构件再发展到面向服务,因此它们的认知观和基础理论都是息息相关的,解决大型软件的开发效率和质量除了要解决编程的正确性外,还必需解决开发周期长、复用性差、成本高、文档多、以及难以适应系统演化等问题,十多年来仍旧困惑着这门学科,“软件危机”仍未解决。
姗姗来迟的重用技术
人们的知识是从一个定理、一个原理逐步积累起来的,,社会是依靠知识的不断积累发展的。然而编制软件每次却都是从零开始,这是造成“软件危机”的根本原因。由此提出了编程工作是否也可以重用以前成功的经验和程序呢?。然而软件的重用比数学中重用难得多,整整又经过十多年的探索,到七十年代才获得成功。
面向对象技术就是为解决重用而提出了“封装性、继承性和多态性”,提出了一批基础理论著作,我用此方法设计了大型操作系统,
但这种方法真正用于实际工程中的开发应用软件却很少见到:另外OO未形成统一的模型和概念,难以形成标准;工程上的实施缺乏开发规范;在技术上要术开发人员的素质较高;最大的问题是被开发出来的软件难以演化,而软件要能适应变化是客观存在的。
为此发展出单纯重用的“构件和架构”思想及其理论体系。在1998年日本京都召开的“基于构件的软件开发(CBSD)”国际专题学术会议上,一致认为构件技术离不开构件和体系结构。轶件体系结构现简称架构。
软件开发技术已发展到基于构件/架构的技术,与此同时出现了建模语言UML。
1
2
3
下一页>>