(江苏蓝宝星球科技有限公司,江苏 连云港)
摘要:随着经济和科学技术的不断发展,港口信息化对于港口的发展具有非常重要的意义,也是信息化时代发展的必然结果。我国港口信息化建设,仍然存在信息资源整合与应用系统集成方面的问题。应用合适的软件工程方法和技术,研究出符合港口行业特点的软件综合解决方案显得尤为重要。本文通过对组件式的软件工程方法技术与软件产品体系结构的理论知识的研究,提出基于组件的港口软件产品体系模型,并通过实践构建了“iPortWorks”插件式动态扩展平台(即组件容器)及相应的产品线体系规范。
关键词: 港口信息化;组件组装;组件容器;软件产品线体系规范;
一、引言
随着世界经济的发展,港口的发展大体经历了三个阶段:“运输中心”阶段、“运输中心+服务中心”阶段、“国际物流中心”阶段。目前,世界主要港口中第二阶段仍然是发展的主流,但是在经济全球化、市场国际化和信息网络化大潮的推动下,一些大型港口已经开始向第三阶段转型,转变为货物流、资金流和信息流高度整合的“大物流”港,因而也对信息化提出更高的要求,使其能支撑整个体系的高速有效运转。
我国港口主要分为海港和内河港,其中海港的信息化总体水平要高于内河港,部分沿海大港正从第二阶段向第三阶段转变,其余大部分仍处于第二阶段中。由于我国整体信息化理论技术起步都相对较晚,因而港口企业在信息化建设过程中,普遍采取从局部摸索开展的方式,逐渐形成如今的格局,缺乏整体性、统筹性。如今,软件工程理论方法和前沿信息技术,都取得革命性的发展,如何研究出符合港口行业特点的软件综合解决方案显得尤为重要。
二、我国港口信息化的现状
港口信息化在港口规划建设与生产运营中,利用信息处理技术和网络通信技术,将港口的各种数字信息及各种信息资源加以整合并充分利用,从而构筑起港口信息化基础信息平台和决策支持平台。港口信息化应包括港口生产过程的各个领域的信息,如运输、仓储、海关、码头、堆场等,涉及港口物流企业中信息活动的全过程,即信息产生、整理、加工、存储、分析、传输和使用,是港口物流企业管理系统的一个重要组成部分,执行着对港口物流生产经营目标的计划、组织、监督、调整及控制的职能,港口信息化有其独特行业特色。
目前,通过多年不断的努力,我国港口信息化建设取得了一定的成果,为我国水运事业积累了宝贵的数字资源,为下一步港口转型升级提供了有力支持,但是仍然存在不少问题。对我国港口信息化建设现状,总结主要包含如下几个特点:
相对我国其他行业而言,港口信息化水平较高。由于我国港口行业信息化起步相对较早,且行业发展比较平稳,易于成果积累,在不断的积累过程中,一步步提升。
在港口行业内,集装箱码头信息化水平高于杂货码头。集装箱码头业务规范标准化高,与国外生产经营模式接近,起步早且有国外成熟的参考模式,因此发展较快。散件杂货码头业务有我国港口的特殊性,货物品种繁杂,作业工艺不尽相同,因而发展相对缓慢。
整体信息资源整合需求大,应用系统集成度不高。由于早期单体信息系统多,且缺乏顶层规划设计和信息化总体架构,使得港口企业信息化资源标准化不足、无法有效交互,各具体应用不能有效集成,最终形成“孤岛”,阻碍港口信息化深入建设。
三、关于组件式软件工程
3.1、组件式软件工程概论
基于组件的软件工程(component-based software engineering,CBSE)是强调使用可复用的软件组件来设计和构造基于计算机的系统。在软件工程的范围内,复用既是旧概念,也是新概念 。程序员从最早的计算机时代开始,就已经开始复用概念、对象、论据、抽象和过程,但是早期的途径是特定的。今天,复杂的、高质量的基于计算机的系统必须在非常短的时间内建立,这要求更有组织的复用方法。
CBSE正在改变大型软件系统被开发的方式。CBSE体现了Fred Brooks等人支持的“购买,而非建造”的思想。就像早期的子例程将程序员从思考细节中解放出来一样,CBSE将考虑的重点从编程软件移到组装软件系统。“实现”已经让位给“集成”作为考虑的焦点。这样做的基础是假定在很多大型软件系统中存在足够多的共性,从而使得开发可复用软件组件来满足这些共性是值得的。
图1-1 一个支持CBSE的过程模型
3.2、组件式软件工程的目标
(1)在工程学或管理方面,CBSE的目标如下:
降低成本:这是所有软件开发方法学的共同目标,CBSE把成本效率提高到软件复用方法的最高境界。
方便装配:CBSE的最大特征是一系列组件的装配过程。
提高复用:全面考虑组件在多个应用系统中的复用潜力。
按需定制:开发者可以按需配置组件。
维护简单:在系统中可以方便地添加、删除和修改组件。
(2)在技术方面,CBSE的目标如下:
降低耦合:耦合指组件之间的相关性。
提高内聚:内聚指组件内元素之间的相关性。
控制粒度:粒度系统中组件对应问题域的规模,包括组件数量和大小两个方面。
3.3、组件式软件工程的主要研究方向
将CBSE引入到软件产品线的构建中,主要研究如下几个方面:
基于组件软件工程方法的概念模型、过程模型。
组件模型:研究组件的本质特征及组件间的关系。
组件获取:有目的的组件生产和从已有系统中挖掘提取组件。
组件描述语言:以组件模型为基础,解决组件的精确描述、理解及组装问题。
组件库(组件分类与检索):研究组件分类策略、组织模式及检索策略,建立组件库系统,支持组件的有效管理。
组件集成组装:在组件模型的基础上研究组件组装机制,包括源代码级的组装和基于组件对象互操作性的运行级组装。
标准化:组件模型的标准化和组件库系统的标准化。
组件系统的安全性问题和时效(real-time)问题。
非技术因素对组件式软件开发的影响:法律法规、商业实践、组织结构等方面的挑战和策略。
四、关于软件产品体系结构
4.1、软件产品体系结构概论
软件产品线的实践早在20世纪80年代中期就出现。软件产品线的发展得益于软件体系结构的发展和软件重用技术的发展。卡耐基梅隆大学软件工程研究所(CMU/SEI)定义为:产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足选定的市场或任务领域的特定要求。这些系统遵循一个预描述的方式,在公共的核心资源(core assets)基础上开发的。根据这个定义,软件产品线有两个部分:核心资源和产品集合。
在软件密集的大规模系统或具有类似需求和结构的软件产品线的开发中,必须从一个较高的层次来考虑组成系统的组件、组件之间的交互,以及由组件与组件交互形成的拓扑结构,这些要素应该满足一定的限制,遵循一定的设计规则,能够在一定的环境下进行演化.而且,软件体系结构应能反映系统开发中具有重要影响的设计决策,便于各种人员的交流,反映多种关注,据此开发的系统能完成系统既定的功能和性能需求。
4.2、软件产品体系结构建模研究
研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。根据建模的侧重点的不同,可以将软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型。在这5个模型中,最常用的是结构模型和动态模型。
结构模型:这是一个最直观、最普遍的建模方法。这种方法以体系结构的组件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是体系结构描述语言。
框架模型:框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
动态模型:动态模型是对结构或框架模型的补充,研究系统的"大颗粒"的行为性质。例如,描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。
过程模型:过程模型研究构造系统的步骤和过程。因而结构是遵循某些过程脚本的结果。
功能模型:该模型认为体系结构是由一组功能组件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。
4.3、软件产品体系结构的主要研究方向
在基于组件和体系结构的软件开发方法下,程序开发模式也相应地发生了根本变化.软件开发不再是“算法+数据结构”,而是“组件开发+基于体系结构的组件组装”。那么,如何描述、表示、设计体系结构?如何验证一个体系结构是否符合期望的系统需求?如何基于体系结构开发实例化的软件系统?将是基于组件和体系结构的软件开发方法所必须研究和解决的核心问题.归纳现有体系结构的研究活动,主要包括如下几个方面:
体系结构理论模型的研究。
体系结构描述研究,主要研究体系结构描述语言及其支持环境、体系结构描述规范。
体系结构设计研究:包括体系结构设计方法、体系结构风格、体系结构设计空间等内容。
体系结构分析与验证:研究如何将软件的非功能特性转化为体系结构的需求,如何分析体系结构满足期望的需求的属性,对体系结构的语法、语义、类型失配等进行检查与验证的研究。
体系结构演化与复用研究:研究产品线中软件体系结构演进的理论与方法,从已有文档、系统设计和代码中逆向提取软件体系结构、体系结构复用等。
动态体系结构研究:研究软件系统由于特殊需要必须在连续运营情况下的体系结构变化与支撑平台。
基于体系结构的软件开发:研究引入体系结构后的软件开发过程、基于体系结构开发与中间技术集成、基于体系结构的程序框架自动生成技术等。
五、基于组件的港口软件产品线体系的研究
随着港口企业功能和业务不断的拓展,港口企业对信息化建设的要求也越来越高,面临的困难和难点也越来越多。如何在港口行业形成一套信息化综合解决方案显得尤为重要。港口行业的集团化、多元化、跨业态等特点,就决定了港口行业信息化综合解决方案必须从体系分析、规范设计和动态可扩展架构开发做起。对组件式软件工程和软件产品体系结构统筹研究,形成基于组件的港口软件产品线体系规范和架构,推动港口信息化建设走资源统一规划和应用融合集成之路。
基于组件的港口软件产品线体系的研究,重点是使用知识表示方法和演化计算方法解决组件的语义模型和自动过程问题,包括CBD原理和技术中的组件模型、组件体系结构和描述语言和基于组件的开发过程等几方面内容。具体步骤如下:
5.1、港口行业主营业务分类归纳研究
对业务层面划分行业信息化需求集,为后续的组件颗粒划分提供基础,为产品集的确定提供依据。
5.2、研究并建立特定CBD(即基于组件的软件开发)概念框架
用数学方法定义组件相关概念的形式化模型,既要尽可能的简单,又要足以描述已有的组件基本概念和开发技术。
5.3、研究并建立一套切实可行的开发规范
在组件概念框架基础上,为组件开发者建立相互交流的特殊语言,并提供方法和技术对组件进行描述、一致性约束和正确性验证。
5.4、为CBD开发流程建立一个合理的过程模型
特别要研究如何为扮演不同角色的开发者分配相应的任务,例如软件体系结构设计师负责软件构架设计的详细职责和结果验收标准。
5.5、研究并构建支持描述技术和过程模型的辅助开发工具
至少需要具备开发组件、实现应用系统和生成文档的工具。理想的开发工具还包括关键系统特征的验证工具。
六、关于“iPortWorks”软件产品线体系的构建
6.1、iPortWorks简介
iPortWorks,是在连云港港信息化建设过程中,经过不断的实践和总结,最终探索出的符合港口行业信息化建设总体要求的一整套软件产品线体系。iPortWorks,不是一个单独的软件,而是包含一系列软件、协议和工具的集合,是基于组件形式的动态可扩展的软件产品体系。
6.2、iPortWorks软件产品定位及体系划分
iPortWorks软件产品,主要定位为港口行业涉及的相关业务领域的信息化综合解决方案。
iPortWorks软件产品线体系,主要划分为港口商务经营系列产品、港口智能生产系列产品、港口物流系列产品和港口辅助支撑系列产品。
6.3、iPortWorks软件产品线体系规范及技术实现
6.3.1、iPortWorks软件产品线体系规范
iPortWorks软件产品线体系规范主要分为核心资源平台和功能组件集合。核心资源平台,分为三个部分:iPortWorks支撑平台、iPortWorks授权管理平台和iPortWorksStudio集成开发平台。功能组件集合,分为港口商务经营组件集、港口智能生产组件集、港口物流组件集和港口辅助支撑组件集。
6.3.2、iPortWorks软件产品线体系技术实现
iPortWorks软件产品技术要求是插件式的、分布式的、动态可扩展的。iPortWorks总体是通过WebAPI、WCF等多种技术构建的面向服务的SOA多层架构。这种架构将业务功能展现的客户端与业务逻辑处理的服务端隔离开,通过第三方契约层进行交互,使得服务端的逻辑处理扩展变化更加灵活。iPortWorks采用分布式、松耦合开发技术,提高了平台自身的健壮性;iPortWorks支持多种安全密钥协议,保证数据运行的安全性;iPortWorks支持多种网络通信协议,使得平台既可以在局域网使用,也可以通过因特网使用;iPortWorks作为基础支撑运行平台,凡是符合平台组件开发规范的插件系统都可以再平台中运行,与各插件实现无缝对接;iPortWorks支持客户应用需求的实时反馈,客户可以在线体验和参与新需求的研发使用;iPortWorks支持业务应用的在线安装,客户只要安装基础平台即可,具体应用插件会更具客户权限自动安装更新。
(1)iPortWorks组件开发框架协议
iPortWorks Framework是iPortWorks组件开发框架协议包,主要包含如下内容:
IApplication,是iPortWorks宿主程序接口协议。它定义了获取平台Mdi父窗体服务、获取或设置插件集服务、获取插件运行权限服务、获取平台日志操作服务、获取跨插件调用服务等接口,是第三方插件获取平台运行服务的框架协议。
IPlugin,是iPortWorks第三方插件接口协议。它定义了获取iPortWorks平台上下文内容接口服务、获取插件与iPortWorks联接服务、获取插件属性服务、获取插件当前操作状态服务等接口,是iPortWorks获取第三方插件运行情况的框架协议。
PluginService,是iPortWorks插件集成服务协议,主要包含平台对所有运行插件管理的相关服务接口协议。
ServicesAPI,是iPortWorks像第三方插件提供平台服务端配置数据的服务协议。它包含了平台获取WebAPI和WCF服务所需的地址、绑定、运行模式等信息。
(2)iPortWorks Studio集成开发平台
集成开发平台,主要包含一个组件快速开发工具和一个iPortWorks软件产品支撑组件集。具体如下:
iPortWorks ToolKits 组件运行开发工具包:
iPortWorks ToolKits是iPortWorks客户端开发工具包。为了提高平台组件开发效率,提升软件的复用度,iPortWorks将各种可复用软件组件分门别类的集成在一起,提供给iPortWorks组件开发者。iPortWorks ToolKits中主要包含:Common通用组件、Data本地数据组件、Format格式化组件、Xtra Dev专用服务组件。
iPortWorks Identity 平台统一认证协议包:iPortWorks Identity是iPortWorks统一认证协议包,主要是为与其他平台或者门户之间进行用户身份统一认证使用的。包中封装了iPortWorks用户认证服务。
iPortWorks Data 平台数据层开发包:iPortWorks Data是iPortWorks数据层开发包,集成封装了多种数据库、多种连接方式的数据顶层处理服务,主要包含:General通用数据库处理组件、SQLite数据库处理组件、OleDB方式处理组件、Oracle方式处理组件、SqlClient方式处理组件。
七、结束语
基于组件的软件产品线体系的构建是一个复杂的工程,既包含技术层面技能,也包括工程学层面的知识。在“iPortWorks”构建的过程中,一方面要对港口行业以及该行业的信息化建设发展历程和未来趋势进行深入研究,了解港口行业信息化发展的目标以及当前所遇到的问题;另一方面,要带着这样的问题,学习研究最新的软件工程学成果,并需熟悉相应的先进软件架构方法和开发技术。
软件体系结构的开发是大型软件系统开发的关键环节。体系结构在软件生产线的开发中具有至关重要的作用,在这种开发生产中,基于同一个软件体系结构,可以创建具有不同功能的多个系统。在软件产品族之间共享体系结构和一组可重用的组件,可以增加软件工程和降低开发和维护成本。一个产品线代表着一组具有公共的系统需求集的软件系统,它们都是根据基本的用户需求对标准的产品线构架进行定制,将可重用组件与系统独有的部分集成而得到的。
采用基于组件的港口软件产品体系,可以实现行业软件生产的规模化、高效化,大幅节约港口行业信息化建设的成本,更好支撑港口行业信息化发展。
[参考文献]
[1] 《软件工程—实践者的研究方法》 第5版 Roger S. Pressman著,梅宏译
[2] 《大规模基于构件和软件开发》 Alan W. Brown著,赵文耘等译
[3] 《现代软件工程》 科学出版社 周之英编著
[4] 《软件工程》 高等教育出版社 齐治昌 等
[5] Herzum Sims著.韩柯等译.《基于组件的企业级开发》[M].机械工业出版社.2005.8
[6] 张广泉. 软件体系结构与XYZPE[D] . 中国科学院博士后研究工作报告
1