软件方法与技术体系的发展历史表明, 每当软件基础支撑平台和相应的应用需求发生重大变化时, 软件方法与技术体系将会随之发生变化, 并会对新方法与技术体系的诞生提供驱动力。 宏观说来, 软件开发就是给定待解问题, 由软件开发者通过智力活动过程开发出能够在所提供的平台上有效运行的、能够解决问题的软件。 在此意义下, 软件开发的3 个宏观要素可抽象概括为平台空间、认知空间、问题空间。 我们认为, 软件方法与技术体系的发展过程就是在新驱动力的推动之下, 对这三个空间的认识不断深化并将其有机融合的过程。
20 世纪70 年代兴起的结构化方法学与技术体系就是由于计算机基础能力(速度、存储与外设)的快速发展和软件危机的出现而导致人们对基础的程序设计方法与语言的科学思考而产生的, 它较好地融合了软件开发的两要素: 平台空间, 认知空间; 而20 世纪80 年代开始成熟, 并且至今仍为主流的面向对象方法与技术体系则是在结构化方法的基础上, 进一步利用和发展了从宏观角度控制软件复杂性的手段,如关注分离、信息隐蔽、模块化等, 并将问题空间纳入软件设计的范畴, 提出与问题结构具有良好对应关系的对象式程序模型的概念与支撑机制, 从而有效实现了软件设计三要素平台空间、认知空间、问题空间的有机融合。
然而, Internet 平台不同于传统的计算机硬件平台,它的出现和普及使计算机软件开发、部署、运行和维护的环境开始从封闭、静态、可控逐步走向开放、动态、难控。它们之间形成较为鲜明的对比: 开放是指对软件开发、部署、运行和维护的外部环境在通常只能做较少的界定或难以明确界定; 从而导致构成外部环境的要素及其关系在软件生存周期中是动态可变的, 构成外部空间的各个要素及其关系的内容的变化方式常常是难以控制的; 从而导致软件系统用一种非确定的显式的方式来应对外部环境的变化。 例如, 通常我们说Internet 平台构成了开放、动态、难控的环境可理解如下: (1)由于Internet 是真分布的, 难以对其边界给予明确的界定, 因此它是开放的。 (2)在Internet 环境下, 不仅构成外部环境的诸要素, 如分布支撑节点与资源、开发与使用软件的群体特征、网络连接的方式、可能遭受的安全攻击等范围通常难以明确确定, 而且各要素的变化范围, 如分布支撑节点与资源中支撑节点个数(动态加入和撤出)、开发与使用软件的群体特征中用户的使用方式(使用服务器的用户个数)等的变化范围通常是难以预测的, 因此, 它是动态和难控的。 (3)因此, 要使得所开发的软件在这样一种非确定的环境下能够应付自如, 就必须要有一种显式的方式来应对这样一种难控的环境。
在开放、动态、难控的环境下, 软件设计三要素的内涵已发生了重要的变化: 平台空间已经从单个或多个可控计算机向开放的Internet平台发展; 认知空间已经开始从“面向个体程序员”开始向“群体化和服务化方式”的过渡; 问题空间已经从确定环境下的单个问题求解, 到开放开发环境下的群体问题求解, 开始向非确定环境下如何为大量最终用户提供优质服务的方面发展。
如果要对开放、动态、难控环境下的软件系统的开发、运行和维护提供直接、自然和有效的支持, 就需要在面向对象技术体系的基础上, 完成从有限自主性和固定封装性到软件实体主体化的转变、从交互方式的内嵌性与单调性到协同方式的分离性与多样性的转变、从封闭可控的软件结构到开放协同软件结构的转变; 进而在上述转变的基础上, 进一步完成从基于实体的结构分解到基于协同的实体聚合的转变、从系统运行静态性到系统演化动态性的转变、从系统目标的确定性到多重不确定性的转变等。
为了完成上述转变, 许多软件新理念、新概念、新模型、新方法和新技术应运而生。 网构软件就是现在一个重要的研究方向。网构软件是以软件服务形式存在于Internet 各节点上的主体化软件实体, 相互间通过协同机制进行跨网络的互连、互通、协作和联盟而组成的,可以动态利用计算机基础资源,不断满足客户新需求的软件系统。
网构软件由两部分组成:具有主体化服务特征的软件实体和各种各样的协同程序。它的运行就是满足用户阶段性需求,通过与环境的交互选择新实体,系统进行演化与调整,再满足用户新要求的循环过程。
根据网构软件所依附的平台、提出网构软件概念的目的、和其工作机制以及其要满足的需求,组成网构软件的各实体必须有自主性、协同性,网构软件系统必须有演化性、反应性和多态性。也就是实体相互协作、自我维护、Internet 环境驱动系统演化、系统持久性开发。
网构软件是依附于网络而存在,其实体是分布在网络的各个节点上,所以网构软件必须具有Internet 的特征,必须能够充分利用Internet 的优点和很好的与Internet 融合。网构软件要求有自主性,但自主性是指软件实体(软件系统各组成部分)的自主,即各实体的管理和运行是相对独立的,其自主性也是网构软件实现自治管理,将系统管理员从系统运行和维护的繁琐细节中解放出来的必要条件。系统为了适应Internet 的动态变化必须有自我演化性,但演化不应该是软件实体内部的变动,而是对软件实体的重新选择,对服务的重新匹配。网构软件虽然可以通过不断的重新选择匹配服务来满足用户的阶段性需求,但是当用户的要求超出了系统设计的范围时,开发人员必须重新设计修改系统,演化性不是万能的。
网构软件诸多特性在技术上的主要共性可归结为自适应性, 具体表现为软件实体的自适应性和系统结构的自适应性,即网构软件在运行过程中能够在合适的时刻、合适的场合、准确捕捉变化并进行合理的适应性调整, 以满足功能和质量的需求。
lntemet 的发展将使系统软件和支撑平台的研究重点开始从操作系统等转向新型中间件平台。而网构软件的理论、方法和技术的突破必将导致在建立新型中间件平台创新技术方面的突破。网构软件的应用前景是非常广阔的,但现在还只是停留在理论的研究和完善阶段,对于其具体的实体的开发和系统的运行仍然没有实现。