在1968年伴随着软件工程的概念提出,软件工厂的概念也几乎在同时被提了出来,最早提出软件工厂概念的是R.W.Bemer。他是基于通用电气公司为了开发一种提高软件工程师生产力的新的软件开发模式而提出的,在他的软件工厂的设计里,通过使用标准化软件生产工具、计算机接口和带有历史数据的数据库组成的。而在1969年第一个标榜自己的软件组织为软件工厂的公司是日本的日立公司;但是到了1975年以后,软件工厂的概念才开始逐渐在日本和欧美的一些公司得到发展,如日本的NEC、东芝、富士通和三菱等公司。在此期间,软件工程得到子决速的发展和提高,而软件工厂大多都还处于探索和实践阶段,一直到最近几年,随着软件外包的流行,软件工厂才一又被提到学者们和各大软件公司的面前。如美国的微软公司、IBM公司以及中国的北大青鸟、东软集团和凯科思特(北京)科技有限公司等等虽然说已经对软件工厂做了一些研究,但目前人们对自动化软件工厂的理解还是很模糊的。有鉴于此,提出了一种自动化软件工厂的简单模型,并对其可能使用的几种实用技术进行了初探。
1 软件工厂的定义及其简单模型
根据美国微软公司的体系结构设计师Jack Greenfield的定义,“所谓软件工厂就是指为了支持某种特定应用程序的快速开发而配置的开发环境。由此可以看出自动化软件工厂应该具有以下几个特点:
1)具有领域特性,一般上来讲不同的领域具有不同的软件工厂;
2)软件开发过程是自动配置的,不需要或需要极少的编码;
3)支持特定应用程序的、特殊的、可配置的软件开发环境;
4)能够快速的开发特定的应用软件,从而大幅度减少软件开发的时间和费用,进而提高软件的开发效率。
根据软件组件技术、软件总线技术、工作流技术和软件中间件技术,给出软件工厂简单模型,如图1所示。
2 领域标准与领域组件
领域标准和领域组件可以说是构建自动化软件工厂的基石。从当今全球化的IT产业链来看,其过程是:标准、技术、设计净制造、加工、包装,全球采购与分销,往复循环;标准决定了制造,而制造又促进了标准的完善。软件科学虽然说是一门独立的学科,然而把它看着成一门应用学科更容易为社会大众所接受,将软件技术应用于社会的各行各业,并为相关的行业提供快速有效的强有力的服务。也正是由于有这种强烈的社会需求,软件技术才从原始的程序设计模式进化到软件作坊模式,再进化到现在的软件工程时代和软件工厂时代。可是社会上行业多种多样,庞大繁杂,不同的领域其标准、用户要求和操作规范又差别很大,即使是同一领域的不同用户,其区别也是很明显的。因此,要想开发一个全部通用的应用软件或功能模块都几乎是不可能的。既然做通用的是不现实的,那么可以退而求其次,开发领域软件和领域组件。图1所示的一种自动化软件工厂的简单模型,就是在领域标准的涵盖之下,为不同领域的快速软件制造而设计的。
领域组件是以软件构件为基础、结合领域内的某个具体业务概念而实现的软件模块或子系统。它来源于软件构件却又不同于软件构件。软件构件是一种定义良好的独立、可重用的二进制代码,包括功能模块、被封装的对象类、软件框架和软件系统模型等。软件构件技术是基于面向对象的,以嵌人后马上可以使用的即插即用型软件构件概念为中心,通过构件的组合来建立应用系统闭。而领域组件不仅是在开发时和运行时的一个构件,而且是整个软件生命周期中的构件,领域组件同时也是一个具体业务概念的软件实现。领域组件不仅是在设计时所标识的、在构造时所实现的,以及在单元测试及集成测试时所测试的软件产品,而且也是配置时所看到的产品。每个领域组件相应于一组运行时可独立进行配置的产品,它们可独立于其他领域组件而存在,也可以被另一领域组件所代替而不必重新编译系统,从而实现真正意义上的即插即用‘图i所示的一种自动化软件工厂的简单模型当中,有下列主要领域软件组件:
1)需求分析组件:按照应用系统需求分析,使用工作流技术和软件总线技术集成的领域组件。主要对手工处理后的系统需求,按领域标准的要求完成应用系统的《需求规格说明书》,它通过配置领域需求分析组件库的各种组件和集成,而形成的可以配置到领域软件中间件的大型领域组件。
2)系统设计组件:依据需求分析组件所完成的《需求规格说明书》生成应用软件相应的系统设计报告。主要包括应用系统的体系结构设计、组件之间的接口设计和数据设计。系统设计组件是一个大型的领域组件,它主要使用工作流技术和软件总线技术,通过配置领域设计组件库中的各种组件集成而成,可以直接挂接到领域软件中间件中使用。
3)组件配置组件:这是一个组件容器,可以说是一个中型的领域组件,主要是对应用软件所需要的组件进行配置、扩展和客户化。由于所选择的组件不一定完全满足应用软件的要求(如接口和消息要求等),通过自动配置组件这个容器,可以自动对其进行相关配置,并自动测试配置后的组件。
4)组件集成组件:这也是一个组件容器。它主要是根据应用软件的需求,对选定后的各级组件进行集成以生成软件产品,自动生成测试用例和进行集成测试;同时也生成相应的软件产品的各种使用手册和限制说明。
5)数据管理组件:按领域标准的要求,通过数据管理总线和调用通用数据组件库中的相关组件,以组件的方式向领域软件中间件提供不同的数据管理策略。如文件管理策略、数据库管理策略等等。
6)网络管理组件:按领域标准的要求,通过网络管理总线和调用通用网络组件库中的相关组件,以组件的方式向领域软件中间件提供不同的网络管理策略。如有线网管理策略、无线网管理策略、互联网管理策略等等。
3 领域软件中间件技术
中间件(middleware)是基础软件的一大类,属于可复用软件的范畴,处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。根据IDC的表述:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。而中国科学院软件所研究员仲萃豪形象地把中间件定义为:平台+通信,这种定义虽然比较让现在的人们所接受,但是也限定了只有用于分布式系统中才能称为中间件。这类中间件是为了解决客户端和服务器端的负载过重、跨平台、传输不可靠等问题的。目前在社会上流行的大多数中间件均属于这种中间件。
而领域软件中间件则不同于这种传统上的中间件的定义,它是基于某个特定应用领域内,为相关领域的应用软件提供设计、开发、集成、部署、运行和管理的集成化软件平台;它是在操作系统、网络和数据库之上,领域应用软件之下的可配置、可扩展的软件综合架构。图1所示的一种自动化软件工厂的简单模型当中,领域软件中间件可以说是这个模型的核心部分(如图1描述)。这里所说的领域软件中间件控制器,其实它也是一个大型的领域组件。主要完成以下主要功能:
图1软件工厂简单模型图
1)支持并提供软件总线技术:这种总线主要是领域组件n置和插接,并对所有的组件进行管理。如:配置、插接和管理需求分析组件、系统设计组件、组件配置组件、系统集成组件、数据管理组件和网络管理组件等等。
2)支持并提供工作流技术:可以按不同的工作流来组织和管理各级组件和各个组件之间的关系。如制造领域应用软件的工作流:需求分析~系统设计~组件配置,系统集成、系统测试等等。
至于在领域软件中间件中,是不是支持分布式系统,如何实现系统资源的共享和减轻客户机c务器的负载和管理计算资源与网络通信等等,领域软件中问件控制器本身并不直接来处理,而是根据领域应用软件的不同需求,选择和使用不同的领域组件来完成。这样一来,不但简化了模型的复杂性,也进一步强化了责任到组件的功能。
4 工作流技术与软件总线技术
工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。1993年,国际工作流管理联盟(Workflow Management COAlition,WFMC)的成立标志着工作流技术开始进入相对成熟的阶段。为了实现不同工作流产品之间的互操作,WFMC在工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准。工作流管理联盟给出的工作流定义是:工作流是指整个或部分经营过程在计算机支持下的全自动或半白动化。在实际情况中可以更广泛地把凡是由计算机软件系统(工作流管理系统)控制其执行的过程都称为工作流一个工作流包括一组活动及它们的相互顺序关系,还包括过程及活动的启动和终止条件,以及对每个活动的描述。工作流管理系统指运行在一个或多个工作流引擎上用于定义、实现和管理工作流运行的一套软件系统,它与工作流执行者(人、应用)交互,推进工作流实例的执行,并监控工作流的运行状态。图1所示的一种自动化软件工厂的简单模型当中,工作流技术可以说贯穿于整个模型中的大中型领域组件中,因为对于一些组件来说,其本身就是一个子系统,通过将其需要完成的业务分解成不同的工作流,再将工作流分解成不同的活动,进而可以选择、配置和使用不同的领域组件,从而制造出相关的领域组件和应用软件。
软件总线技术是实现软件工厂的另一个核心技术,它和计算机的总线一样,如ISA,PCI总线等,做软件就像硬件的做法一样,只要按照标准来做,就能够无缝地进行连接和通信。软件总线负责在各个组件中传递信息流,将各个组件组织起来,完成一个具体的任务。总线是一个抽象的概念,在实际中总线也是由具体的技术构成。例如,一个总线可能是一段代码,负责调用各个组件;总线也能是一个消息系统,负责收集和分派消息;总线也可能是一个工作流系统,负责系统信息的流转;总线还可能是一个JMX,负责将消息路由到目标组件。但无论总线的实现技术是什么,总线的特点就是采用一种松祸合的方式将组件组织起来。这样,总线本身和挂接在总线上的组件就是松祸合的。如果要将总线分类的话,可以大致将其分为以下4类:
1)控制总线:主要控制各个组件的插接、激活、挂起、停止和撤出等;
2)数据总线:主要控制各个组件对不同数据的存取等;
3)消息总线:主要控制各个组件间的消息传递;
4)网络总线:主要控制各个组件对不同网络的传输。图1所示的一种自动化软件工厂的简单模型当中,软件总线技术被用于许多部分,甚至大中型组件的内部。而图中所特别强调的是数据管理总线和网络管理总线,在这两种总线之中,它们都包含这4种总线,是这4种总线的复合体。
5 嵌入式软件测试技术
目前,嵌入式方面的有关研究大都集中于硬件系统当中,即使有些是软件方面的,也大多数是用来探讨如何有效地开发嵌入式的软件来为嵌入式硬件服务的。然而就如何使用嵌入式的原理与方法来有效地进行软件的测试,则还不太多见。在上海创景计算机系统有限公司的LDRA Testbed系统当中,其针对嵌入式系统特点,专门提供嵌入式测试模块,提供客户完整的嵌入式测试解决方案,从单元测试、集成测试到系统测试,功能包括编码规则检查、软件度量分析、数据流信息流分析、代码覆盖率分析及测试驱动/桩模块自动生成。虽然说此系统是针对嵌人式系统的,但它体现了嵌入式测试模块的思想。在本模型当中,就是利用嵌入式测试模块的思想,将嵌入式测试模块嵌人到整个集成的软件当中,来对整个软件甚至软件的各个组件进行测试。在使用本模型制造软件的过程当中,其主要是通过配置不同的组件进而集成生成领域应用软件的。也就是说,各个组件都是经过相当的测试以后才被引入组件库,才被领域应用软件所使用的。因此对这种软件的测试主要是软件的功能测试及各个组件的接口及其关系的测试。通过应用嵌入式测试模块的思想,可以开发出一些可配置的嵌入式测试组件,并将它们放入到领域组件库中;在集成制造领域应用软件的过程当中,根据需要将配置后的嵌入式测试组件嵌入到相应的地方(如业务流),以实现对相关部分的测试。同时,可以在软件测试成功以后,根据需要卸载相关的嵌人式测试组件。
随着软件的生产模式的不断变化,软件工厂的研究与开发也将不断的深入和细化。本文提出一种软件工厂的粗框模型,并对其几种实用的技术包括领域标准与领域组件、领域中问件技术、工作流技术与软件总线技术以及嵌入式软件测试技术进行了初步的探索。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:关于自动化软件工厂模型及其实用技术的探究