由于对象技术是占有统治地位的商业范式,所以我们了解可用于软件系统架构的主要的商业技术是很重要的。其中主要的两类包括专利软件和开放系统软件。
专利软件
专利软件(proprietary software)是单个厂商的非兼容标准的产品。该厂商控制了多个重复的产品版本中的软件的形式和功能。目前的系统在建立的时候,它们在很高程度上依赖于商业软件。商业软件是软件重复使用的主要的形式,并且实际上它是单个企业中的一种更加高效的重复使用的形式。
因经营规模的扩大而得到经济节约是商业软件成为更加强大的重复使用的形式的一个原因。软件的大量副本被分发给客户,并且软件的除错和质量控制的程度远远超过了即使最大的终端用户企业的内部开发能力。当终端用户企业依赖于专利软件的时候,他们都是依赖于该厂商对于已有能力的持续的支持,并且从结构上说,很多终端用户依赖的厂商主张的很多的未来特性都将被添加到软件中。当专利软件以公共规范或标准的形式包装的时候,该规范通常成为单个软件实现的直接表现。
通常,当专利规范进入到公共领域的时候,这种专利实现一般不会被改变。当实际上没有必要修改下层技术的时候,它留下的印象是专利软件也可能成为一种开放系统的标准。当成千上万的软件许可被分发并且在已有的软件系统上运行的时候,这种现象特别真实。当专利技术向前发展的时候,厂商使用软件概念的唯一的解释来描述它们的产品。这种解释可能包括对面向对象原则的基本原理的修改。
“我们规定建筑物的形状;从那以后建筑物就规定了我们的形式。”——sir winston spencer churchill
专利技术的最重要的方面是应用程序接口(api)的规定。专利软件的api定义了某种专利实现与增值应用软件(可能是独立软件厂商或最终用户提供建立的系统)之间的边界。随着专利软件技术通过多种方式演化,应用程序编程接口也可能改变。
新的能力仍然在持续不断地添加到专利软件中,这加剧了应用程序编程接口的复杂性。在很多情形中,专利软件的编程接口的复杂性远远超过了最终用户组织需要的功能。接着最终用户组织试图用多种方式管理这种复杂性就变为合适的了。
作为给专利编程接口增加新能力的补充,厂商有时可能会废弃软件中的一些接口。这样做会对应用软件产生重大的维护方面的影响。随着专利软件通过多种方式的演化,持续地升级软件以保持与专利厂商提供的主流支持活动同步,这一点对于用户很重要。当最终用户的系统落后了两个以上周期的时候,通常必须重新购买或完全重新修复该商业软件,这样才能与当前版本同步。很多最终用户发现在产品版本的少数周期中应用程序接口几乎全部是废弃的。
总之,专利软件版本和编程接口的演化成为应用程序开发人员和独立的软件厂商为了保持与可以使用的和受到支持的软件同步的单调的工作。这是应用程序用户和专利软件厂商之间的冲突,因为厂商利润的大部分可能由软件升级包的销售来驱动。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器