integrator for client-side users, but these services are
implemented by remotely calling the JWin’s
methods in the server-side.
Figure 5: Structure of coordinator
3.3 Phase 3: Interfacing
Figure 6: MVC pattern in JDSI
A new integrated software system may commonly
need a operational interface such as GUI for client-
side users. Due to the old user interface of the
wrapped MS-Windows application is hardly
separated. We prefer to build a new one for client
users rather than reusing the old one.
JDSI style includes a Model-View-Controller
(MVC) pattern into coordinator. UserInterface in
coordinator provides user interface (i.e.
OPI_Windows in Figure 5) for end-user’s operation
through UI_Controllers, such as monitor, mouse,
keyboard, and other I/O devices. Each operation
would call the services of TaskCoordination to
request the sever-side MS-Windows applications.
According to MVC pattern, the UserInterface
could be regarded as an abstract UI_Factory (see
Figure 6), which declares an interface for operations
that create concrete OPI-Windows for users.
The TaskCoordination in coordinator could be
regarded as the “Model” component in MVC,
because it implements the functionality of the
integrated system. However, TaskCoordination is
not a concrete Model, because each of services in
coordinator is operated by remotely calling the
server-side wrapped MS-Windows software
applications.
4 CONCLUSION
JDSI style specifies a software wrapper for wrapping
MS-Windows applications as Java objects. JDSI
style could be applied to COTS-based system
development and even for legacy system
reengineering. The valuable design knowledge could
help a software engineer to deal with the related
problems when reusing COTS-based systems and
legacy systems. Our current work is focused on how
to promote the performance and robustness in JDSI
style.
Coordinator
UserInterface TaskCoordination JWin
<<Interface>>
port
Method_1()
Method_2()
.
.
.
Method_n()
Service()
Remote Method
Invocation
OPI_Window
getData()
Input()
Call_service()
Display()
<<client>>
I_Controller
getData
Service() {
Method_1()
Method_2()
.
.
Method_n()
}
<<method invocation>>
Call service
manipulate
REFERENCES
Aversano, L., Canfora, G., Cimitile A., De Lucia, A.,
2001. Migrating Legacy Systems to the Web: An
Experience Report. Proceedings of the 5
th
European
Conference on Software Maintenance and
Reengineering, 148 –157.
Canfora, G., Cimitile, A., De Lucia, A., Di Lucca, G.A.,
1998. Decomposing Legacy Programs: A First Step
towards Migrating to Client-Server Platforms.
Proceedings of the 6
th
International Workshop on
Program Comprehension, 136 –144.
Cimitile, A., De Carlini, U., De Lucia, A., 1998.
Incremental Migration Strategies: Data Flow Analysis
for Wrapping. Proceedings of the 5
th
IEEE Working
Conference on Reverse Engineering, 59 –68.
De Lucia, A., Di Lucca, G.A., Fasolino, A.R., Guerra, P.,
Petruzzelli, S., 1997. Migrating Legacy Systems
towards Object-Oriented Platforms. Proceedings of
IEEE International Conference on Software
Maintenance, 122 –129.
Lin, J.M., et. al., "Reengineering Windows Software
Applications Into Reusable CORBA Objects”, Journal
of Information Software and Technology, Vol.46, No.6,
pp. 403-413, May 2004.
Schmidt, D., Stal, M., Rohnert, H., Buschmann, F., 1999.
Pattern-Oriented Software Architecture: Volume 2.
Reading, MA: Addison-Wesley.
Serrano, M., Carver, D., Montes De Oca, C., 2002.
Reengineering Legacy Systems for Distributed
Environments. Journal of Systems and Software, 37-55.
Sneed, H.M., 1998. A Case Study in Software Wrapping.
Proceedings of the International Conference on
Software Maintenance, (1998), 86-94.
U
UI_Factory
<<ConcreteView_A>>
OPI-Window for userA
<<ConcreteView_B>>
OPI-Window for userB
<<AbstractModel>>
Task coordination
Service()
<<ConcreteModel>>
Wrapped MS-Windows
APP
<<Controller>>
userA
Controller>>
userA
manipulation
manipulation
Call service
Call service
Get data
Get data
<<
ICEIS 2005 - DATABASES AND INFORMATION SYSTEMS INTEGRATION
452