11
Reengineering windows software applications into reusable CORBA objects Jim-Min Lin a, * , Zen-Wei Hong a , Guo-Ming Fang a , Hewijin C. Jiau b , William C. Chu c a Department of Information Engineering, Feng Chia University, Taichung City 40724, Taiwan, ROC b Department of Electrical Engineering, National Cheng Kung University, Tainan City, Taiwan, ROC c Department of Information Engineering and Computer Science, Tong Hai University, Taichung City, Taiwan, ROC Received 29 September 2002; revised 2 July 2003; accepted 26 August 2003 Abstract CORBA is becoming one of the most important middleware for supporting object-oriented and client/server paradigms in distributed computing systems. However, application systems based on CORBA are still scarce to date. One reason is that only few CORBA object services have been developed. To have a new CORBA application, a programmer must make the effort to design a program with a CORBA interface. In our previous work [Proceedings of the Sixth IEEE Computer Society Workshop on Future Trends of Distributed Computing Systems (1997) 2], a re-engineering approach was proposed to convert RPC-based programs into CORBA objects. This has successfully increased the development of CORBA applications. However, the source code is required in this approach. In many cases, software designers cannot acquire the source code. This prevents adapting existing PC software applications, particularly for Windows applications. Our study addresses this problem. A graphic factory temperature monitor system, which integrates MS-Excel under MS-Windows, was implemented to demonstrate the feasibility of our approach. q 2003 Elsevier B.V. All rights reserved. Keywords: Software reuse; Software integration; CORBA; Functional integration model 1. Introduction The object-oriented, client/server programming para- digm has been an important trend for distributed computing software development. Common Object Request Broker Architecture (CORBA) [1,2], which was proposed by Object Management Group (OMG), is one of the most important middleware programs used to support this software development paradigm. However, CORBA applications are still not widely used. One main reason is that only few CORBA object services have been developed for CORBA clients. A user that wants to have a new CORBA application needs to design a program with a CORBA interface. The speed of software development is obviously limited. Therefore, it would be significant to have a method to quickly build a CORBA object service. Software reuse is a significant way to improve the speed of software development. Thousands of application software programs (APP) exist for Personal Computer (PC) users. CORBA supports object services in heterogeneous environments, including MS-Windows and UNIX. There- fore, reusing existing PC APPs would be an efficient and economic way to construct CORBA object services. Microsoft COM/DCOM [3] and Active X [4] are proposed for integrating binary-code APPs under an MS- Windows environment. However, these techniques have less interoperability support between Windows platform software and software built on other platforms. There are several advantages in reusing existing PC APPs as CORBA objects: 1. Diverse tools/functions support. Because there are plenty of existing PC APPs, CORBA users can have the benefits of harnessing these APPs. 2. Saving time and money. By reusing existing software as a module in a newly developed software system, coding for this module is unnecessary. Additionally, many PC APPs can be purchased at low prices, therefore, saving both time and money. 0950-5849/$ - see front matter q 2003 Elsevier B.V. All rights reserved. doi:10.1016/j.infsof.2003.08.003 Information and Software Technology 46 (2004) 403–413 www.elsevier.com/locate/infsof * Corresponding author. Tel.: þ886-4-2451-7250x3754; fax: þ 886-4- 2451-6101. E-mail address: [email protected] (J.-M. Lin).

Reengineering windows software applications into reusable CORBA objects

Embed Size (px)

Citation preview

Reengineering windows software applications into

reusable CORBA objects

Jim-Min Lina,*, Zen-Wei Honga, Guo-Ming Fanga, Hewijin C. Jiaub, William C. Chuc

aDepartment of Information Engineering, Feng Chia University, Taichung City 40724, Taiwan, ROCbDepartment of Electrical Engineering, National Cheng Kung University, Tainan City, Taiwan, ROC

cDepartment of Information Engineering and Computer Science, Tong Hai University, Taichung City, Taiwan, ROC

Received 29 September 2002; revised 2 July 2003; accepted 26 August 2003

Abstract

CORBA is becoming one of the most important middleware for supporting object-oriented and client/server paradigms in distributed

computing systems. However, application systems based on CORBA are still scarce to date. One reason is that only few CORBA object

services have been developed. To have a new CORBA application, a programmer must make the effort to design a program with a CORBA

interface. In our previous work [Proceedings of the Sixth IEEE Computer Society Workshop on Future Trends of Distributed Computing

Systems (1997) 2], a re-engineering approach was proposed to convert RPC-based programs into CORBA objects. This has successfully

increased the development of CORBA applications. However, the source code is required in this approach. In many cases, software designers

cannot acquire the source code. This prevents adapting existing PC software applications, particularly for Windows applications. Our study

addresses this problem. A graphic factory temperature monitor system, which integrates MS-Excel under MS-Windows, was implemented to

demonstrate the feasibility of our approach.

q 2003 Elsevier B.V. All rights reserved.

Keywords: Software reuse; Software integration; CORBA; Functional integration model

1. Introduction

The object-oriented, client/server programming para-

digm has been an important trend for distributed computing

software development. Common Object Request Broker

Architecture (CORBA) [1,2], which was proposed by

Object Management Group (OMG), is one of the most

important middleware programs used to support this

software development paradigm.

However, CORBA applications are still not widely used.

One main reason is that only few CORBA object services

have been developed for CORBA clients. A user that wants to

have a new CORBA application needs to design a program

with a CORBA interface. The speed of software development

is obviously limited. Therefore, it would be significant to

have a method to quickly build a CORBA object service.

Software reuse is a significant way to improve the

speed of software development. Thousands of application

software programs (APP) exist for Personal Computer (PC)

users. CORBA supports object services in heterogeneous

environments, including MS-Windows and UNIX. There-

fore, reusing existing PC APPs would be an efficient and

economic way to construct CORBA object services.

Microsoft COM/DCOM [3] and Active X [4] are

proposed for integrating binary-code APPs under an MS-

Windows environment. However, these techniques have

less interoperability support between Windows platform

software and software built on other platforms. There are

several advantages in reusing existing PC APPs as CORBA

objects:

1. Diverse tools/functions support. Because there are plenty

of existing PC APPs, CORBA users can have the benefits

of harnessing these APPs.

2. Saving time and money. By reusing existing software as a

module in a newly developed software system, coding

for this module is unnecessary. Additionally, many PC

APPs can be purchased at low prices, therefore, saving

both time and money.

0950-5849/$ - see front matter q 2003 Elsevier B.V. All rights reserved.

doi:10.1016/j.infsof.2003.08.003

Information and Software Technology 46 (2004) 403–413

www.elsevier.com/locate/infsof

* Corresponding author. Tel.: þ886-4-2451-7250x3754; fax: þ886-4-

2451-6101.

E-mail address: [email protected] (J.-M. Lin).

3. Ensuring software reliability. Most existing software has

been well designed by venders and well tested by

millions of customers. Reusing such software might have

the potential to increase the software reliability if COTS

software components are carefully and accurately

identified.

4. Evolving software easily. Although PC APPs may evolve

with different released versions, they usually have

compatible user interfaces. An old version of a PC

APP that was re-engineered into CORBA can easily be

upgraded in a plug-and-play manner using a newly

released version in our approach.

5. Decentralization. Most traditional PC APPs are designed

for a single user. Through porting a PC APP on CORBA,

this tool can provide services for multiple clients and

become decentralized software.

6. Revaluing existing software. Many PC APPs may be

retired because of limited functionality. Reusing these

PC APPs can revalue them.

In this paper, a CORBA Functional Integration Model

(CFIM) [5] is proposed for integrating APPs in binary code

mode into CORBA. This paper focuses on how to reuse MS-

Windows software as a CORBA object using the wrapper

technique [6]. In general, there are two main differences

between this system and previous work on wrappers:

1. Most of the traditional wrappers aim to translate

information from various data sources into a uniform,

accessible data representation. In our work, data sources

can be encapsulated and various functionality sources,

such as computation tools, picture drawing tools, data

management tools, and even communication tools, can

be wrapped as reusable units. This contributes additional

functionality’s to the integrated software system.

2. The success of traditional wrappers relies on the

existence of a well-defined programmatic interface,

such as database API, HTTP commands, and so on,

for the encapsulated data sources. Our wrappers are

able to simulate human user operations, such as typing

keyboard keys and clicking a mouse key, rather than

invoking the tool’s services through the tool’s API. A

Coordinator program acts like a human to integrate

applications. It receives an output data stream from

one application, filters the output data stream and then

translates the filtered data into an input data stream in

the format for the application’s input commands.

Therefore, no common integrated software data format

or source code is required in this approach.

A factory temperature monitoring/analyzing system, that

integrates MS-Excel under MS-Windows has been

implemented to demonstrate the feasibility of our approach.

This paper is organized as follows: related software

integration works are introduced in Section 2. The CFIM for

binary-code level software integration and the wrapper

design for Windows tools are addressed in Section 3. An

example, a wrapper for Excel, is given to illustrate Windows

wrapper design in Section 4. A brief conclusion is made in

Section 5.

2. Related works

Various approaches to migrating non-object-oriented

legacy systems to object-oriented platforms have been

proposed in the literature. Some of them have also

successfully migrated a legacy system into distributed

object environments. Wrapper (i.e. encapsulation) is the

most important technique widely used in these approaches.

However, most of the proposed approaches were based on

the assumption that the source code of a legacy system is

available. Conversely, the source code for MS-Windows

applications is seldom available. Therefore, our wrapping

technique is proposed to cope with the difficulty of source

code unavailability. In the following paragraphs, we will

focus on the wrapping technique comparison among the

related works.

Neighbors’ approach [7] was to find the locations of

loosely coupled code regions in a system rather than

individually extracting the software components. His study

was based on a structure-based approach to analyze the

existing program’s architecture and interconnection data

graph. However, he did not encapsulate the extracted

software components into object-orientated modes. De

Lucia, et al. [8,9] proposed a six-step process to migrate

the existing source code into object-orientated format.

During object identification, the legacy program codes

could be decomposed into individual program parts

according to an abstract object model. The legacy system

could then be reengineered by encapsulating the decompo-

sition into object wrappers. De Lucia migrated a legacy

COBOL system into a client/server paradigm [10,11]. Other

researches, such as Serrano et al. [12,13], encompassed data

mining and evolutionary migration techniques into reengi-

neering a legacy program. They also proposed a feasible

reengineering methodology to migrate non-object-oriented

systems into the CORBA platform [14].

Our approach to wrapping MS-Windows applications

into software objects occurs at the non-source-code level.

For commercial-off-the-shelf (COTS) software tools,

especially the MS-Windows applications, source code is

seldom available. The issues in incorporating COTS

software products into a new software development system

have been discussed by the Software Engineering Institute

of Carnegie Mellon University [15,16]. David Carney

regarded COTS software as a ‘turnkey’ system, including

MS-Windows office or desktop computing environment

[17]. He stated that COTS software systems provided

valuable and reliable capabilities. If COTS tools are

correctly and carefully assembled together a COTS software

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413404

integrated system could provide many benefits for large-

scale system [18–20].

More software vendors provide various programmable

interfaces for integrating COTS software into their

modern software application systems. Recent 3-tier

architectures, such as CORBA and Java Connector

Architecture, provide standards for developing interfaces.

For example, most database systems support Open

DataBase Connectivity (ODBC), which is an open driver

provided by Microsoft. For example, Active Server Pages

(ASP) is a technique for developing a client/server

system under Microsoft platforms. A programmer could

write an Active X component to access the dataset in a

database system via ODBC. Microsoft Distributed

Common Object Model (DCOM) and .NET share the

same properties with ASP. Java Connector Architecture

(JCA) is another example that provides a Common Client

Interface (CCI) for the software integrator. CCI defines

several APIs for connecting an application server and

enterprise information systems (such as database systems

and transaction systems). JCA thinks that enterprise

system vendors have responsibility to provide relevant

interfaces written with CCI for software integrator.

However, we still have numerous COTS software

products that do not provide programmable interfaces.

MS-Windows applications exemplify this situation.

In the last decade, our previous projects [5,21,22]

proposed an approach to migrate COTS applications under

MS-DOS into CORBA platform to speed up CORBA server

object construction. However, we focused only on software

integration on virtual 8086 machines with single-tasking

operating systems in our previous researches. Potentially,

COTS applications under various platforms, like MS-

Windows and Linux, could be reengineered into the target

object models using the same approach.

3. CORBA function integration model

The UNIX pipe [23] is an inter-process communication

(IPC) mechanism that connects the standard output channel

of the writer process to the standard input channel of the

reader process in a UNIX system. Virtual Machine Pipe

(VMP) [24,25] has a similar idea with UNIX pipe in

performing software integration. Our previous work pro-

posed a VMP based functional integration model, FIM

[24 – 26], for non-CORBA software integration. An

extended FIM, called CORBA FIM (CFIM) [5,6], is

proposed to integrate PC APPs into a CORBA distributed

system.

The architecture for CFIM is shown in Fig. 1. There exists

a coordinator, several servers running DOS, Windows,

CORBA based applications and some clients. Each Windows

APP is encapsulated with a wrapper program. The wrapper

program serves as an interface between a non-CORBA based

application and other CORBA services. A wrapper is an I/O

interceptor with a CORBA interface protocol in CFIM.

Based on VMP technology, the CFIM provides a solution for

data and platform independent software integration. Under-

standing the external operations, input command format and

integrated software output results are all required. Knowing

the internal details of the program source codes is not

required. CFIM provides a framework that supports the

following mechanisms: (1) multitasking, (2) tools I/O

Fig. 1. System overview of CORBA based software integration.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413 405

interception/redirection and IPC, (3) tools coordination, and

(4) a functional integration interface specification mechan-

ism. VMP technology provides the primitive operations to

support multitasking, tools IPC and tools coordination.

CFIM enhances the VMP technology by offering a high level

integration interface specification language, that is used to

specify the integration protocol, and a generator, that

generates the low level interface to each integrated PC APP

according to the specified protocol.

3.1. Functional integration interface specification

mechanism

Because a functionally integrated approach might involve

labor intensive low level integration, such as I/O interception

and redirection, a high level CORBA Functional Integration

Interface Specification Language (CFIISL) is desired to

assist the integration process in a cost effective way. An

integration specification specified by CFIISL defines how

software systems will be integrated. CFIISL includes the

software-IC and software-circuit definitions and specifica-

tions. A CORBA Functional Integration Interface Library

(CFIIL) is actually the repository for storing reusable VMP

codes. A CORBA Functional Integration Interface Generator

(CFIIG) is used to generate the corresponding low level

VMPs for integrated tools.

A software-IC definition describes the integration-related

features of an integrated functional unit (tool). It contains

the following information: (1) Software-IC name, e.g.

Excel, (2) Software-IC type, or name of the operating

system upon which the tool is running, e.g. ‘MS-Windows’,

(3) Software-IC filename, or full path name of the executable

tool file, and (4) Software-IC pins. A software-IC may have

one or more software-pins. Each software-pin is an input (or

output) operation interface for a tool with certain charac-

teristics. The software-pin characteristics are specified by:

(a) Pin ID, i.e. name of a pin; it is usually the name of an I/O

device name, e.g. ‘KEYBOARD’. (b) Pin type, i.e. the

direction of the command/data stream that goes through

the pin, either ‘INPUT’ or ‘OUTPUT’. (c) Pin data type, i.e.

the data type of I/O stream, e.g. ‘ASCII_STRING’,

‘INTEGER16’, ‘INTEGER32’, ‘COORDINATE’,…etc.

and (d) Pin entry i.e. I/O redirector vector or signal type.

The pin entry is the signal type. For example, the keyboard

message interception is achieved by sub-classing the

function GetMessage in the Windows system.

A software circuit consists of several channels that connect

software-pins among software-ICs. Each channel has basi-

cally one-way communications and defined by the communi-

cation and coordination characteristics, including (1) Channel

ID, i.e. name of channel, (2) Channel source, i.e. a pair of

Software-IC ID and Software-pin ID, and (3) Channel

destination(s), i.e. one or more pairs of Software-IC and

Software-pin ID. Fig. 2 shows an example of CFIISL. A more

detailed description of CFIISL can be found in Ref. [21].

3.2. CORBA functional integration interface generator

(CFIIG)

Based on the specifications in CFIISL, a CFIIG generates

the stubs that serve as the interface between software-ICs.

Fig. 3 shows the CFIIG process. CFIIG is responsible for

generating stubs for tools according to the software-IC pin

definition. For Windows APPs, CFIIG will generate a piece

Fig. 2. An example of FIISL.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413406

of code that will intercept the system message queue for the

software-IC pin input and the output data through the

Graphic Device Interface (GDI) and System Development

tool Kit (SDK) Application Programmer’s Interface (API)

for output software-IC pins. CFIIG also generates the

message interface for the coordinator program and syn-

chronizes the operations between the coordinator and tools.

3.3. Wrapper for windows AP

To integrate a Windows APP into a CORBA platform,

the Windows APP should be encapsulated with a wrapper

program, which serves as an interface between the Windows

APP and CORBA clients. In other words, the wrapper hides

the operation details of the Windows APP and represents it

as a CORBA object to its clients.

Therefore, a wrapper takes two responsibilities. The first

is to accept requests from clients and reply with results to

the clients using the CORBA communication protocol. The

second is to convert the requests from clients into the

corresponding input command stream for the encapsulated

Windows APP and redirect the output data from the

encapsulated APP to its clients.

A wrapper is composed of two parts: a communication

interface to CORBA and an I/O interceptor/redirector

module to a Windows APP (see Fig. 4). To illustrate

wrapper operations, an operation scenario in which requests

are processed from CORBA clients is shown in Fig. 5. There

are six steps in this scenario:

Step 1

A CORBA client sends a request message to a CORBA

server through the CORBA interface module.

Step 2

The CORBA interface module then translates the request

into corresponding event messages and command strings for

the wrapped Windows tool.

Step 3

The wrapper sends the event messages and command strings

into the Windows tool.

Step 4

After a command execution in the Windows tool, the

wrapper acquires the data results from the Windows tool.

Step 5

The intercepted data is acquired from the Windows tool.

This data are filtered and reproduced into data that can be

passed into the CORBA interface module.

Step 6

The CORBA interface module prepares the result message

and replies to the corresponding CORBA client.

4. An experimental system

MS-Excel is a popular and useful software application.

There are many powerful and useful functions in it, such as

data calculation and a convenient statistical graphics

functions. In this section, Excel will be integrated into an

experimental Graphical Temperature Monitoring System

(GTMS) for an industry factory. This is achieved by

wrapping an Excel task as a CORBA object. Three parts

must be implemented in the Wrapper: input redirection,

output redirection, and CORBA interface.

4.1. Input redirection in windows

Because most Windows applications are driven by event

messages and receive input from mouse and keyboard

devices, the windows task input channel can be redirected

Fig. 3. CORBA functional integration interface generation.

Fig. 4. Structure of a wrapper.

Fig. 5. The scenario of processing request.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413 407

using an event message simulation for mouse and keyboard

devices.

Fig. 6 shows the input redirection by the wrapper. There is

a system message queue in MS-Windows to store external

events such as mouse or keyboard events. Once the mouse

clicks on a window, this window becomes active and receives

the program focus. A thread will receive event messages in

system message queue only as this thread receives focus.

Four steps are performed in the wrapper program to intercept

the input events from a target window task:

Fig. 6. Input channel redirection by the wrapper.

Fig. 7. Program codes for generating keyboard events.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413408

Step 1

The focus is set the wrapped application using the wrapper.

Step 2

The Wrapper generates the necessary control messages and

sends them to the system message queue.

Step 3

The wrapped application will consequently receive the

control messages as if they were generated by a keyboard or

mouse.

Step 4

The wrapped application will react and perform the

corresponding operations to acquire the desired results

according to the control messages.

In addition to the above approach, Windows API-

SendMessage or OLE techniques can also be applied.

However, there are many problems using those techniques.

For example, when using SendMessage API, lots of time is

spent getting the windows handle needed to send input

events. In using OLE, not all applications support the OLE

protocol such that the applicability is limited. Therefore,

those methods were not adopted in this research.

The program code segment listed in Fig. 7 is used to

illustrate how keyboard and mouse events are generated in a

wrapper for a popular Windows application-MS-Excel.

The wrapper is programmed in Visual Cþþ with MS-

Platform SDK APIs. The same wrapper program can be

applied to other MS-Windows platforms, like Windows 98,

2000, ME and XP. The function of this program segment is

to send a keyboard event to Excel. This program is

explained as follows.

First the wrapper gets the Excel Handle window using

FindWindow () function:

ExcelHWND ¼ < FindWindow(‘XLMAIN’, NULL)

Second, GetWindowThreadProcessId() is used to get

the Excel thread identifier.

TheirId ¼ <

GetWindowThreadProcessId(ExcelHWND,NULL);

Because the wrapper will focus on Excel, it must attach

the Excel input to itself. AttachThreadInput() function

is used to attach the wrapper thread ID to the Excel

thread ID.

< AttachThreadInput(OurId, TheirId, TRUE);

The SetFocus() function is called to set the focus on

Excel. The keyboard event is then generated using the

keybd_event() function.

Fig. 8. Program codes for generating mouse events.

Fig. 9. Output redirection of a windows application.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413 409

< SetFocus(ExcelHWND);

< keybd_event(ScanCode, Ch,KEYEVENTF_EXTEN-

DEDKEY,0);

In the same way, mouse events are generated using

the MS-Windows USER module function as shown in

Fig. 8.

4.2. Output redirection of windows application

Fig. 9 shows the conceptual structure of the output

redirection in the wrapper. The Windows Clipboard

mechanism is used to redirect/intercept the output data

from the wrapped application. First, the Wrapper triggers

the wrapped application to save the output data in the

clipboard space using the output redirection mechanism.

The wrapper then acquires the needed data from the

Clipboard space.

The program segment codes listed in Fig. 10 are used to

illustrate how the needed data is acquired from the

Clipboard space. This is achieved through the following

operations with corresponding MS Platform SDK APIs:

Step 1

Generate ‘mark’ and ‘copy’ keyboard events. These events

will cause the wrapped application to save the needed output

data into the Clipboard space.

Step 2

Open the Clipboard by calling the OpenClipboard function.

Step 3

Select a proper Clipboard data format.

Step 4

Retrieve the data in the Clipboard space by calling the

GetClipboardData function.

Step 5

Close the Clipboard by calling the CloseClipboard

function.

Some problems could be incurred using this method. The

first problem is the data output ending perception sent to the

Clipboard space. In other words, there is a process

coordination problem between the wrapper and the wrapped

application. To synchronize the wrapper and the wrapped

application, a hook function is installed in the wrapper to

monitor messages in the wrapped application (see Fig. 11).

The second problem is retrieving the information contained

in the data in bit-map format. Wrapping image-processing

software to retrieve/interpret bit-map images might be a

possible approach for solving this problem.

4.3. CORBA interface

To execute a program in CORBA convention, it is

necessary to define a CORBA interface for the program.

Fig. 12 shows a scenario in which a CORBA application is

generated. First, the CORBA interface is defined in an

interface definition file (of file type .idl) using CORBA

Interface Definition Language (IDL). This file is then

compiled using an IDL compiler and a header file (of file

type .h) is generated for both the client and server sites. The

programs for both counterparts are compiled into executable

images with the above header file.

Fig. 10. Program codes for getting data from clipboard.

Fig. 11. Program codes for monitoring the message queue.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413410

4.4. Graphical factory temperature monitoring system

A factory temperature monitoring/analyzing system in

which MS-Excel is reused as a chart-display unit is

implemented using the proposed method. In the simulated

factory the temperature of numerous locations must be

properly monitored and controlled. A Graphical Factory

Temperature Monitoring System (GFTMS) that collects

temperature data and graphically shows the temperature

analysis chart is used (see Fig. 13). In our implementation,

the Excel program was selected and wrapped as a server

that collects and analyzes temperature data. In each of the

client sites, a random number generator is used to

simulate a temperature sensor and generate the tempera-

ture data. Through the Orbix (a product of CORBA),

clients send temperature data to the server at regular time

periods. Upon receiving this temperature data, the wrapper

filters the data and converts it into proper data format and

the corresponding Windows events for Excel. This

converted data and events will then be sent to Excel.

Excel will be Periodically triggered to draw the

temperature analysis chart.

Fig. 12. Generation of a CORBA application.

Fig. 13. GFTMS structure.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413 411

The following program slice is the definition of an IDL

file for the ExcelWrapper

//wrapper.idl

//define the interface of Wrapper

interface ExcelWrapper

{

short InputData(in short NoteID,in short Temperature);

};

In the interface, only the InputData() function with a

short data type is defined. It will be periodically called to

send the temperature data to the server. The experimental

GFTMS was successfully implemented for two man

(undergraduates) months. The GFTMS outlook is shown

in Fig. 14. It is apparent that the proposed approach is a

quick and economic way to build new software compared

with design from scratch.

5. Conclusions

Software reuse through software integration is probably a

fast way to construct new software applications. A CFIM

was proposed to achieve software integration under

heterogeneous systems, such as the CORBA environment.

This paper proposed a method to construct a CORBA object

by reusing/wrapping an existing Windows tool. There are

many advantages in this scheme, such as: (1) increasing the

software productivity of CORBA applications; (2) revaluing

existing Windows tools; (3) migrating a traditional

centralized tool, such as a Windows tool, into distributed

software. We implemented an experimental graphic factory

temperature monitoring system that integrates the popular

Windows tool, MS-Excel, under the Orbix environment.

Two-man-months (undergraduate students) were used to

accomplish this integration. This shows a promising result.

With the same goal, wrappers for other centralized tools,

such as MS-DOS and UNIX tools could also be developed.

In our approach, CORBA is not the only specified

architecture. With the use of this wrapping approach, we

can migrate the wrappers to other architectures [23,27], such

us RMI or Web Service, without significantly modifying the

wrapper. This research could be enhanced in numerous ways

in the future. For example, PIN data type I/O stream could be

implemented using XML/DTD; to compare implementations

using various 3-tier architectures; and so on.

Acknowledgements

The authors thank the anonymous referees for their

insightful suggestions on this paper. This research was

supported by National Science Council, Taiwan under Grant

NSC90-2213-E035-003.

References

[1] Object Management Group, CORBA: Common Object Request

Broker Architecture and Specification Revision 2.0, July 1995.

[2] OMG, CORBA 2 Interoperability Draft, OMG Document Number 95-

3-10, March 1995.

[3] A. Ewald, M. Roy, Choosing Between CORBA and DCOM, Object

Magazine October (1996).

[4] D. Chappell, Understanding Active X and OLE, Microsoft Press,

Redmond, WA, 1996.

[5] J.-M. Lin, W. Chu, W. Lo, H. Yang, C.-W. Lu, Building CORBA

objects with DOS software applications, Proceedings of the 22nd

International Computer Software and Applications Conference,

COMPSAC ’98 August (1998) 252–257.

[6] Y.-C. Pan, J.-M. Lin, W.-T. Lo, Wrapping existing software tools as

CORBA objects, Proceedings of Eighth Workshop on Object-

Oriented Technology and Applications, Chungli, Taiwan August

(1997) 187–193.

Fig. 14. Out looks of GFTMS user interface.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413412

[7] J.M. Neighbors, Finding reusable software components in large

systems, Proceedings of the Third IEEE Working Conference on

Reverse Engineering November (1996) 2–10.

[8] A. De Lucia, G.A. Di Lucca, A.R. Fasolino, P. Guerra, S. Petruzzelli,

Migrating legacy systems towards object-oriented platforms,

Proceedings of IEEE International Conference on Software Mainten-

ance October (1997) 122–129.

[9] A. Cimitile, U. De Carlini, A. De Lucia, Incremental migration

strategies: data flow analysis for wrapping, Proceedings of the

Fifth IEEE Working Conference on Reverse Engineering October

(1998) 59–68.

[10] G. Canfora, A. Cimitile, A. De Lucia, G.A. Di Lucca, Decomposing

legacy programs: a first step towards migrating to client–server

platforms, Proceedings of the Sixth International Workshop on

Program Comprehension June (1998) 136–144.

[11] L. Aversano, G. Canfora, A. Cimitile, A. De Lucia, Migrating legacy

systems to the Web: an experience report, Proceedings of the Fifth

European Conference on Software Maintenance and Reengineering

March (2001) 148–157.

[12] M. Serrano, C. Montes De Oca, D. Carver, Evolutionary migration of

legacy systems to an object-based distributed environment, Proceed-

ings of the IEEE International Conference on Software Maintenance

August–September (1999) 86–95.

[13] M. Serrano, D. Carver, C. Montes De Oca, Mapping object-oriented

systems to distributed environment, Proceedings of 13th International

Conference on Industrial and Engineering Applications of Artificial

Intelligence and Expert Systems June (2000) 79–84.

[14] M. Serrano, D. Carver, C. Montes De Oca, Reengineering legacy

systems for distributed environments, The Journal of Systems and

Software (2002) 37–55.

[15] Carnegie Mellon University Software Engineering Institute (SEI)

COTS-Based System (CBS) Monograph Series, http://www.sei.cmu.

edu/cbs/monographs.html.

[16] C. Albert, L. Brownsword, Evolutionary Process for Integrating

COTS-Based Systems, Technical Report CMU/SEI-2002-TR-005

http://www.sei.cmu.edu/publications/documents/02.reports/02tr005.

html.

[17] D. Carney, Assembling large systems from COTS components:

opportunities, cautions, and complexities, SEI Monographs on the

Use of Commercial Software in Government Systems June

(1997).

[18] K. Ballurio, B. Scalzo, L. Rose, Risk reduction in COTS software

selection with BASIS, Proceedings of International Conference on

COTS-Based Software Systems (ICCBSS), February, Springer, 2002,

pp. 31–43.

[19] X. Burgues, C. Estay, X. Franch, J.A. Pastor, C. Quer, Combined

selection of COTS components, Proceedings of International Con-

ference on COTS-Based Software Systems (ICCBSS), February,

Springer, 2002, pp. 54–64.

[20] N.A.M. Maiden, H. Kim, C. Ncube, Rethinking process guidance for

selecting software components, Proceedings of International Con-

ference on COTS-Based Software Systems (ICCBSS), February,

Springer, 2002, pp. 151–154.

[21] J.-M. Lin, Cross-platform software reuse by functional integration

approach, Proceedings of the 21st International Computer Software

and Applications Conference, COMPSAC ’97 August (1997)

402–408.

[22] S.-C. Lee, J.-M. Lin, H.C. Jiau, Constructing COTS-based software

components with reusing COTS products, Proceedings of Inter-

national Symposium on Multimedia Software Engineering December

(2000) 289–296.

[23] D.M. Ritchie, K. Thompson, The UNIX Time-Sharing System, Bell

System Tech. Journal, 57(6), pt.2 July–August 1978.

[24] J.-M. Lin, S.R. Tsai, L.-M. Tseng, Integrating existing software

packages using the virtual machine technique, Journal of Systems

Software 18 (3) (1992) 207–218.

[25] J.-M. Lin, S.R. Tsai, Distributed software integration using a remote

virtual machine pipe mechanism, Proceedings of 1992 International

Computer Symposium December (1992) 13–15.

[26] J.-T. Wu, G.-M. Fang, Z.-W. Hong, J.-M. Lin, Reengineering

COTS-based products as web service applications, Conference

on Integrated Design and Process Technique (IDPT) (2003)

in press.

Further Reading

K. Liang, W.C. Chu, S.-M. Yuan, W. Lo, From legacy RPC services to

distributed objects, Proceedings of the Sixth IEEE Computer Society

Workshop on Future Trends of Distributed Computing Systems

October (1997) 2–7.

J.-M. Lin et al. / Information and Software Technology 46 (2004) 403–413 413