开放架构的意义
采用开放架构的软件产品指宣称,使用并符合各种开放技术, 标准, 提供各种开放接口, 能够与符合同样开放标准的产品互操作的产品. 有些产品直接采用开源软件实现各种开放接口. 开放架构和标准的出现是软件业对大型企业垄断市场的一种反应. 采用开放架构对树立企业和产品市场形象, 吸引客户, 减小技术风险和产品开发成本有很大作用.
采用开放架构可以快速实现产品进入比较成熟的市场, 使企业产品站在较高的起点. 采用现成的标准接口和经过验证的开源代码, 可以使用户比较快地熟悉产品使用, 减小设计和实现代码的潜在问题, 提高开发效率和质量. 目前很多软件企业采用开放架构使新产品以低成本快速进入市场, 参与市场竞争.
开放架构的设计
当确定采用开放架构实现产品的策略后, 架构师首先需要根据产品目标寻找开放标准和开源软件. 如欲开发一个可以和企业信息系统紧密集成的开放的企业文档编辑器软件产品. 首先找到开源的OpenOffice软件和开放文档标准OpenDocument. 为了提供企业特别的文档与其他系统数据集成需要, 可以找到Eclipse插件框架或者Web门户框架.
设计开放架构的软件产品主要根据开放技术和标准设计. 具体方法是在寻找相关开源软件,根据本产品需求进行集成, 在集成的架构中再加入自己特定功能处理模块. 在设计过程中可以考虑参与和增强现有开放技术和标准的制定与改进.
加入的模块需要符合开放标准,并根据标准要求公开相应接口和数据格式. 这些公开的接口和格式可能成为新的开放标准的一部分.
开放标准测试
采用开放架构的软件产品需要符合相关的公开标准. 由于各个企业和个人对标准的理解和采用的开源软件对标准的实现不一定一致, 在完成软件产品手, 需要测试软件产品对标准的符合度, 以及与其他声称符合相关标准和架构的产品的兼容性.
在软件产品测试过程中可能发现多种对标准理解不同和不兼容情况. 需要逐个分析判断原因, 制定解决方案. 可以选择修改补充开源代码, 开发特别处理模块, 在文档中说明特殊情况和建议的处理方法.
成本和收益
采用开放技术和架构可能减小成本和风险. 但给人以低成本的印象. 而在企业内部和外部被要求低价格. 由于开放技术和标准的公开, 容易得到, 进入门槛低, 竞争激烈. 也使产品的价格不能过高.
采用开放架构的实现产品的成本比封闭架构甚至更高. 主要增加的工作包括对符合标准的额外处理, 处理开放技术本身代码的问题, 维持对多个版本标准的兼容性, 解决额外代码带来的性能和维护问题. 还有考虑与开放标准和代码社区进行交流的成本.
开放架构的问题
开放标准和开源软件对知识产权要求较小, 但基于这些开放标准和软件的产品可能遇到严重的知识产权问题. 在设计开放架构时需要与相关法律人员一起分析相关的资料, 制定对应的产品市场和销售策略.对某些特定代码和标准的知识产权, 在确定商业战略后, 可以考虑自己开发.
在开发开放架构时经常发现现有标准和开源软件不完全符合产品用户和市场的要求. 这时需要考虑是推动扩展标准接口还是开发不兼容的接口. 由于推动标准一般需要较长的时间和精力, 典型的方法是在保持支持现有标准的基础上, 开发并公开扩展接口, 经过市场验证后, 努力将扩展功能纳入未来标准.
企业需要保持开放架构的稳定性.当产品改进时需要保持对原来公开的接口和格式的兼容性. 也要考虑对开放标准的多个版本的兼容性. 这些要求有时限制了产品的改进.可以考虑在大版本中为了新功能和架构去掉对旧接口和标准的兼容性.
开放性也可能带来安全问题. 采用开源软件和开放自己的架构和代码使任何人都可以了解软件的内部运行机制和数据格式, 给编写病毒, 入侵程序和非法访问提供了更多可能性. 产品架构师需要考虑和处理开放性带来的潜在安全问题及其对客户和企业的影响.可以在开放架构中加入特别的访问控制, 审计等安全机制.
在开放架构中使用封闭技术
在设计开放架构产品时应该随时考虑是否应该从技术, 市场, 支持服务等角度需要采用封闭架构, 包括不开放的接口, 格式, 处理代码等等. 需要保证产品中的封闭技术与开放架构能够较好的集成, 在保证产品整体功能的前提下, 保证不影响开放的接口格式等要求.