标题：网构软件
简介
从技术的角度看, 网构软件在Internet上展现为一种与当前的信息Web类似的Software Web. 以软件构件等技术支持的软件实体将以开放、自主的方式存在于Internet的各个节点之上, 任何一个软件实体可在开放的环境下通过某种方式加以发布, 并以各种协同方式与其他软件实体进行跨网络的互连、互通、协作和联盟.
由于Internet的开放、动态和多变, 以及用户使用方式的个性化要求, 决定了网构软件的开发不同于传统软件开发的“一次成型”式, 具体表现为, 网构软件在发布之后, 能够感知外部网络环境的动态变化, 并随着这种变化按照功能指标、性能指标和可信性指标等进行静态的调整和动态的演化, 以使系统具有尽可能高的用户满意度, 而且, 由于用户需求的多样化和个性化以及投资回收等因素,一个软件系统往往存在时间较长, 因此, 网构软件的演化过程也在长时间内持续不断. 因此开发具有上述技术特点的网构软件面临着开发过程、开发方法以及支持技术3 个方面的挑战.
在软件开发过程方面, 传统软件系统的开发因所基于的平台相对封闭、静态、稳定, 采用自顶向下的途径, 确定系统的范围(即scoping)总是建立需求的第一步, 然后通过分解而实施分而治之的策略, 整个开发过程处于有序控制之下.
而网构软件系统的开发所基于的平台是一个有丰富基础软件资源但同时又是开放、动态和多变的框架, 开发活动呈现为通过将原本“无序”的基础软件资源组合为“有序”的基本系统, 随着时间推移, 这些系统和资源在功能、质量、数量上的变化导致它们再次呈现出“无序”的状态, 这种由“无序”到“有序”的过程往复循环, 基本上是一种自底向上、由内向外的螺旋方式.
软件生命周期局限性
此外, 在传统的软件工程体系中, 软件生命周期概念所强调的是从问题提出到软件交付的整个开发过程的重要性, 而对于交付之后的软件变化过程往往只采用“软件维护”加以简单概括.这样一种软件生命周期概念对处于静态封闭环境下的软件系统的开发是合适的,但对处于Internet 开放、动态和多变环境下网构软件系统的开发则有明显的局限性.
首先, 新的软件实体往往通过已有的软件实体组装而成, 由于这些实体彼此独立、自主运行, 不受任何机构或组织的统一控制, 因此, 在系统交付运行之前,很难由这些被组装的软件实体准确无误地推演出目标系统的功能和质量.
其次,环境的开放、动态和多变决定了软件实体及其之间的协同均面临着诸多变化, 不论这些变化能否在运行前准确预知, 运行系统都必须进行持续的适应性调整.
再者, 网构软件既服务于处在不同时区的用户也服务于随时到达的其他网构软件的请求, 而且, 一个网构软件系统本身往往由散布在Internet 上的其他软件组成,因此, 一个网构软件系统一旦交付使用, 往往就不能完全停机. 这意味着改错、优化、增加新功能等活动均需在线执行, 这些活动也需要经历分析、设计、实现、测试、部署, 而传统软件生存周期中的维护期难以准确刻画这些活动.
要实现对网构开发的有效支持，必须对网构软件的以下特征进行深入认识：
首先，网构软件自主性是指软件实体具有相对独立性、主动性和自适应性. 从技术角度看, 网构软件实体一般都是独立开发和管理的, 它们可能在不同的网络节点上独立运行. 它们的目标和所提供的服务由其所有者来决定, 其行为受自身的目标驱动, 而并非单纯地被动用于组装或部署. 它们在运行过程中可能实时收集环境的各种变化信息, 并根据预先设定好的策略, 在必要时自动调整自身的行为以适应环境的变化;
其次, 协同性是指网构软件系统中软件实体与软件实体之间可按多种静态连接和动态合作方式在开放的网络环境下加以互连、互通、协作和联盟. 从技术角度看, 传统软件系统在封闭集中环境下往往采用单一静态的连接模式, 而网构软件则支持连接模式的适应性调整, 如, 不同互操作协议的切换, 连接安全级别的升降, 同步异步的转变, 消息传递可靠性的调整等;
第3, 反应性是指网构软件具有感知外部运行和使用环境并对系统演化提供有用信息的能力. 从技术角度看, 网构软件的外部环境由其他网构软件以及底层支撑平台组成, 因此, 反应性既要求网构软件能够以某种方式暴露自身的状态和行为信息, 也要求网构软件支撑平台能够开放底层实现细节及运行状态;
第4, 演化性是指网构软件结构可根据应用需求和网络环境变化而发生动态演化, 主要表现在其实体元素数目的可变性,结构关系的可调节性和结构形态的动态可配置性. 从技术角度看, 演化性要求软件体系结构具备动态调整能力;
最后, 多态性是指网构软件系统的效果体现出相容的多目标性, 它可根据某些基本协同原则, 在动态变化的网络环境下, 满足多种相容的目标形态. 从技术角度看, 多态性既要求系统开发过程中需要支持多目标建模, 又要求系统运行时能够基于环境变化进行动态目标的适应性选择.
基于上述分析, 网构软件诸多特性在技术上的主要共性可归结为自适应性, 具体表现为软件实体的自适应性和件结构的自适应性, 即, 网构软件在运行过程中能够在合适的时刻、合适的场合、准确捕捉变化并进行合理的适应性调整, 以满足功能和质量的需求.
关键挑战
简介人在网构软件适应过程中的参与程度决定了网构软件自适应能力的高低. 因此, 如何开发出具有这种自适应能力的软件系统, 并尽可能减少运行过程中人的参与, 是网构软件开发方法的关键挑战.
在软件运行支撑技术方面, 传统的软件开发工具往往针对软件交付前的分析、设计、实现、测试中的一个或几个阶段, 而软件交付后则部署在运行平台上,并利用各种管理工具进行维护.分析而基于上述分析, 网构软件的开发已经不仅仅局限于软件交付之前, 软件开发的重心从交付前逐渐转移到运行过程中, 而网构软件自动或手动的调整往往依赖于软件生存周期各个阶段的活动与制品. 因此, 网构软件开发工具不仅要覆盖整个软件生存周期, 还有必要与运行平台融合, 从而支持软件运行中持续不断的开发活动.
另一方面, 网构软件的诸多特性对运行平台提出了极大的挑战, 首先, 运行平台不仅要具备实时显示自身运行状态和行为的能力, 还应协助实现上层软件实体内部状态和行为的实时展现, 其次, 运行平台必须支持网构软件实体与结构的动态调整, 否则, 自适应很难甚至在某些情况下无法实现.总结综上所述, 网构软件的开发在过程方面, 需要遵循自底向上、从“无序”到“有序”的新型构造途径, 开发重心由系统交付前向系统运行时转移; 在开发方法方面, 需要重点考虑软件实体和结构的自适应性; 在支持技术方面, 需要整合开发工具和运行平台以支持跨整个软件生存周期的开发, 而运行平台应提供软件实体和结构自适应所需的基本机制.
Internet基本特征
Internet作为不同于传统计算机的硬件平台，具有如下基本特征：　
无统一控制的“真”分布性
节点的高度自治性
节点链接的开放性和动态性
人、设备和软件的多重异构性
实体行为的不可预测性
运行环境的潜在不安全性
使用方式的个性化和灵活性
网络连接环境的多样性
由 于软件系统所基于的计算机硬件平台正经历从集中封闭的计算平台向开放的Internet平台的转变，软件系统作为计算机系统的灵魂，随着其运行环境的演变 也经历了一系列的变革。目前，面向网络的计算环境正由Client/Server发展为Client/Cluster，并正朝着Client /Network和Client/Virtual Environment的方向发展。那么，未来的基于Internet平台的软件系统又将会呈现出一个什么形态呢？
从 技术的角度看，以软件构件等技术支持的软件实体将以开放、自主的方式存在于Internet的各个节点之上，任何一个软件实体可在开放的环境下通过某种方 式加以发布，并以各种协同方式与其它软件实体进行跨网络的互连、互通、协作和联盟，从而形成一种与当前的信息Web类似的Software Web。Software Web不再仅仅是信息的提供者，而是各种服务（功能）的提供者。由于网络环境的开放与动态性，以及用户使用方式的个性化要求，从而决定了这样一种 Software Web并不能够像传统软件那样一蹴而就，它应能感知外部网络环境的动态变化，并随着这种变化按照功能指标、性能指标和可信性指标等进行静态的调整和动态的 演化，以使系统具有尽可能高的用户满意度。我们将这样一种新的软件形态称为网构软件（Internetware）。
网构软件特征
网构软件区别于传统软件形态的独有特征
网构软件是在Internet开放、动态和多变环境下软件系统基本形态的一种抽象，它既是传统软件结构的自然延伸，又具有区别于在集中封闭环境下发展起来的传统软件形态的独有的基本特征：自主性指网构软件系统中的软件实体具有相对独立性、主动性和自适应性。自主性使其区别于传统软件系统中软件实体的依赖性和被动性。协同性指网构软件系统中软件实体与软件实体之间可按多种静态连接和动态合作方式在开放的网络环境下加以互连、互通、协作和联盟。协同性使其区别于传统软件系统在封闭集中环境下单一静态的连接模式。反应性指网构软件具有感知外部运行和使用环境并对系统演化提供有用信息的能力；反应性使网构软件系统具备了适应Internet开放、动态和多变环境的感知能力。演化性指网构软件结构可根据应用需求和网络环境变化而发生动态演化，主要表现在其实体元素数目的可变性，结构关系的可调节性和结构形态的动态可配置性；演化性使网构软件系统具备了适应Internet开放、动态和多变环境的应变能力。多态性指网构软件系统的效果体现出相容的多目标性。它可根据某些基本协同原则，在动态变化的网络环境下，满足多种相容的目标形态。多态性使网构软件系统在网络环境下具备了一定的柔性和满足个性化需求的能力。
可以说，网构软件的概念是普适而广泛的。实际上，从单机结构上的软件系统、到主/从结构的软件系统、到客户机/服务器模式的软件系统、一直到现有的浏览/服 务器结构的软件系统，从本质上来说，都是网构软件系统的一种特例（具有网构软件的某些特性）。例如，当今有代表性的Browser/Server结构在 Server端具有相对独立性，而众多Browser与Server端的连接则具有开放环境下跨网络的初级协同性；而Browser搜索引擎搜索结果的多 重性则体现了其随网络环境变化而产生的多态性；JINI技术中所倡导的软件实体的动态联盟和Applets技术等则在某种意义下体现了演化性的需求；而 Active Software 和Autonomous Software 则反映了在网络环境下对软件实体自主性的需求。因此，有理由相信，网构软件概念基本概括了在Internet开放、动态和多变环境下软件技术的发展趋势， 它将在未来5-10年成为软件的一种主流形态。
局限性
从 网构软件的角度来考察当今主流软件技术，可以发现现有软件技术体系由于其本质上是一种静态和封闭的框架体系，难以适应Internet开放、动态和多变的 特点。从技术框架看，软件方法学的核心是程序设计方法学，而程序设计方法学考虑的重点是软件结构。软件结构主要包括程序实体和协同方式两部分。目前在软件 领域占主导地位的软件方法是面向对象方法。从网构软件的角度来看面向对象软件结构，可以发现以下三方面的问题：
系统目标和结构确定性的限制
一般说来，在构建系统的过程中，系统的基本功能和基本结构是按照系统所要解决的问题和问题领域的特性通过系统分析与设计逐步确定的，未能兼顾Internet开放、多变和动态的特性。因此，它难以适应网构软件系统的动态协同、逐步适应和不断演化的需求。
实体单元自主性的欠缺
面向对象方法中的对象概念通常是静止和被动的，它难以在Internet开放、动态和多变环境下调整自己的目标和行为，以适应网络环境的变化和用户的个性化要求。
协同方式的单一性