nipissing university, north bay, ontario, canada 1 challenges to reusable services - ibm eclipse...

22
Nipissing University, Nor Nipissing University, Nor th Bay, Ontario, Canada th Bay, Ontario, Canada 1 Challenges to Reusable Challenges to Reusable Services Services -IBM Eclipse Innovation Grant -IBM Eclipse Innovation Grant Haibin Zhu, Ph.D. Haibin Zhu, Ph.D. Dept. of Computer Science and Dept. of Computer Science and mathematics, Nipissing University, 100 mathematics, Nipissing University, 100 College Dr., North Bay, ON P1B 8L7, College Dr., North Bay, ON P1B 8L7, Canada, Canada, [email protected] [email protected] , , http://www.nipissingu.ca/faculty/haibin http://www.nipissingu.ca/faculty/haibin z z

Upload: avice-mathews

Post on 17-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, OntNipissing University, North Bay, Ontario, Canadaario, Canada

11

Challenges to Reusable ServicesChallenges to Reusable Services-IBM Eclipse Innovation Grant-IBM Eclipse Innovation Grant

Haibin Zhu, Ph.D.Haibin Zhu, Ph.D.Dept. of Computer Science and mathematics, Dept. of Computer Science and mathematics,

Nipissing University, 100 College Dr., North Bay, ON Nipissing University, 100 College Dr., North Bay, ON P1B 8L7, Canada, P1B 8L7, Canada, [email protected]@nipissingu.ca, ,

http://www.nipissingu.ca/faculty/haibinzhttp://www.nipissingu.ca/faculty/haibinz

Page 2: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 22

ContentsContents

IntroductionIntroduction The Development of Program The Development of Program

ParadigmsParadigms Fundamental PrinciplesFundamental Principles The Key Concepts and ElementsThe Key Concepts and Elements SOP and Component-based SOP and Component-based

ProgrammingProgramming ConclusionConclusion

Page 3: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 33

IntroductionIntroduction Service oriented programming (SOP) is proposed to support reusing Service oriented programming (SOP) is proposed to support reusing

and enhancing distributed system development. and enhancing distributed system development. SOP originates from the concepts in object-oriented and component-SOP originates from the concepts in object-oriented and component-

based development. It also expands these with distributed computing based development. It also expands these with distributed computing mechanisms (Momentum, 2003). mechanisms (Momentum, 2003).

Object-oriented programming as a paradigm is highly abstract. Even Object-oriented programming as a paradigm is highly abstract. Even though object-oriented programming languages provide syntax though object-oriented programming languages provide syntax restrictions to programmers, this programming paradigm leaves too restrictions to programmers, this programming paradigm leaves too much practical flexibility for programmers to work according to their much practical flexibility for programmers to work according to their own familiar styles.own familiar styles.

From the point of view of engineering, specifications that are too From the point of view of engineering, specifications that are too abstract without rigorous restrictions may lead to various unpractical abstract without rigorous restrictions may lead to various unpractical productions. Therefore, more concrete disciplines are required to productions. Therefore, more concrete disciplines are required to improve OOP.improve OOP.

Separation of concerns is welcome in programming and modeling Separation of concerns is welcome in programming and modeling fields. That SOP supports separation of concerns is also an asset for fields. That SOP supports separation of concerns is also an asset for application development.application development.

Page 4: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 44

The Development of Program The Development of Program ParadigmsParadigms

A good program is considered normally by its A good program is considered normally by its correctness, efficiency, readability, and user-correctness, efficiency, readability, and user-friendly interface:friendly interface:– It should run correctly to solve its intended problem; It should run correctly to solve its intended problem; – It should run efficiently to avoid wasting time and It should run efficiently to avoid wasting time and

memory space; memory space; – It should be readable to allow other programmers to It should be readable to allow other programmers to

understand, modify and improve it easily;understand, modify and improve it easily;– It should have a user-friendly interface that is intuitively It should have a user-friendly interface that is intuitively

easy to learn and use.easy to learn and use. Programming in the large =Programming in the large =

– Programming in the large + Programming in the smallProgramming in the large + Programming in the small Program = data structures + algorithmsProgram = data structures + algorithms

Page 5: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 55

The Development of Program The Development of Program Paradigms (2)Paradigms (2)

People work hard to improve programming with People work hard to improve programming with different concentrations on data structures, different concentrations on data structures, algorithms or both. Procedural or structured algorithms or both. Procedural or structured programming concentrates on algorithms, i.e., how programming concentrates on algorithms, i.e., how to process. OOP concentrates on data structures, to process. OOP concentrates on data structures, i.e., objects are considered at first and algorithms i.e., objects are considered at first and algorithms are subordinate to data structures. SOP are subordinate to data structures. SOP concentrates again on algorithms (how to concentrates again on algorithms (how to process), but at a higher level of consideration. process), but at a higher level of consideration.

Page 6: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 66

The Development of Program The Development of Program Paradigms (3)Paradigms (3)

Procedures

Objects (data + procedures)

Services (new kind of procedures)

Paradigm Development

Page 7: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 77

The Development of Program The Development of Program Paradigms (4)Paradigms (4)

All the mathematical models for complex systems, people All the mathematical models for complex systems, people try to simulate the major processes in the systems. That try to simulate the major processes in the systems. That was why the pioneers of programming tried to make was why the pioneers of programming tried to make programs with procedures. A procedure is the first step of programs with procedures. A procedure is the first step of abstraction of process simulation. When people mention abstraction of process simulation. When people mention software engineering, they are mainly concerned with the software engineering, they are mainly concerned with the processes of developing software. processes of developing software.

“ “How we should process” is the major concern of software How we should process” is the major concern of software engineering.engineering. – structured programming deals with processes by procedures and structured programming deals with processes by procedures and

controlling structures such as sequential statements, branch controlling structures such as sequential statements, branch statements, and circulate statements; statements, and circulate statements;

– object-oriented programming deals with processes by objects, object-oriented programming deals with processes by objects, classes, classification, inheritances and polymorphisms; classes, classification, inheritances and polymorphisms;

– service-oriented programming deals with processes by more service-oriented programming deals with processes by more advanced elements such as contracts, connectors, services, advanced elements such as contracts, connectors, services, containers and contexts.containers and contexts.

Page 8: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 88

The Development of Program The Development of Program Paradigms (5)Paradigms (5)

SOP makes a new balance between flexibility and efficiency. Different SOP makes a new balance between flexibility and efficiency. Different services can be selected by the server consumers based on their services can be selected by the server consumers based on their requirements on efficiency or flexibility. These selections will be reflected requirements on efficiency or flexibility. These selections will be reflected in the applications provided by the service consumers.in the applications provided by the service consumers.

Object-oriented methodology has not reached its goal in software Object-oriented methodology has not reached its goal in software development with the promise of high productivity. This situation is due development with the promise of high productivity. This situation is due to its high level of abstraction. We need more concrete guidelines for to its high level of abstraction. We need more concrete guidelines for programmers to make program development easier to control and programmers to make program development easier to control and maintain. SOP improves productivity by providing easily reusable maintain. SOP improves productivity by providing easily reusable components, i.e., services. components, i.e., services.

Considering the software development life cycle (SDLC), OOP Considering the software development life cycle (SDLC), OOP introduces managerial thoughts into developing large programs. In introduces managerial thoughts into developing large programs. In management, there is a concern of management unit grains, i.e., the management, there is a concern of management unit grains, i.e., the size of the unit. However, because everything is an object in OOP, the size of the unit. However, because everything is an object in OOP, the advantages of management in object-oriented programming become advantages of management in object-oriented programming become less competitive because a programmer would like to mange their own less competitive because a programmer would like to mange their own program components in their own way and at any level of grains. In other program components in their own way and at any level of grains. In other words, there are no restricted management disciplines in OOP.words, there are no restricted management disciplines in OOP.

Page 9: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 99

The Development of Program The Development of Program Paradigms (6)Paradigms (6)

SOP incorporates services as larger grains of program SOP incorporates services as larger grains of program components to help manage the development more efficiently.components to help manage the development more efficiently.

Loose coupling is a good rule in OOP. SOP supports loose Loose coupling is a good rule in OOP. SOP supports loose coupling among interacting software components with two coupling among interacting software components with two architectural constraints :architectural constraints :– Simple and general interfaces to all the involved software Simple and general interfaces to all the involved software

components. The interfaces state only generic semantics. components. The interfaces state only generic semantics. They should be universally available for all providers and They should be universally available for all providers and consumers. consumers.

– Descriptive messages. System behaviors are prescribed by Descriptive messages. System behaviors are prescribed by messages determined by the contracts. A contract allows messages determined by the contracts. A contract allows new versions of services to be introduced without bothering new versions of services to be introduced without bothering old services.old services.

OOP is a superclass of SOP and SOP will do more concrete OOP is a superclass of SOP and SOP will do more concrete jobs than OOP. jobs than OOP.

Page 10: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1010

The Development of Program The Development of Program Paradigms (7)Paradigms (7)

Comparing SOP with OOP, OOP concentrates on creating Comparing SOP with OOP, OOP concentrates on creating objects that contain both states and operations (sometimes objects that contain both states and operations (sometimes called services). SOP stands on OOP. It implements called services). SOP stands on OOP. It implements services by using OOP techniques. These services services by using OOP techniques. These services themselves provide more reusability of business logic and themselves provide more reusability of business logic and can be used in various applications. can be used in various applications.

OOP focuses on what objects an application consists of, OOP focuses on what objects an application consists of, while a SOP approach focuses on the application's while a SOP approach focuses on the application's functionality, or in other words, what the application does.functionality, or in other words, what the application does.

The advantages of SOP compared with OOP can be listed The advantages of SOP compared with OOP can be listed – as separation of concerns, as separation of concerns, – large grains of processing units,large grains of processing units,– loose coupling, and loose coupling, and – descriptive messages.descriptive messages.

Page 11: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1111

Principles of OOPPrinciples of OOP Everything in the world is an object (Kay, 1993);Everything in the world is an object (Kay, 1993); Every system is composed of objects, and certainly a Every system is composed of objects, and certainly a

system is also an object; system is also an object; The evolution and development of a system is caused by The evolution and development of a system is caused by

the interactions among the objects inside or outside the the interactions among the objects inside or outside the system;system;

A message is a way to activate a method of an object;A message is a way to activate a method of an object; The interactions among objects are expressed by sending The interactions among objects are expressed by sending

messages that are requests to invoke objects’ actions;messages that are requests to invoke objects’ actions; Each object is an instance of a class which shows the Each object is an instance of a class which shows the

commonality of a group of objects; andcommonality of a group of objects; and Each class might inherit another class which is called a Each class might inherit another class which is called a

superclass while it is called a subclass. superclass while it is called a subclass.

Page 12: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1212

Principles of SOPPrinciples of SOP Every system is composed of services and service requests;Every system is composed of services and service requests; Services are implemented and provided by service providers;Services are implemented and provided by service providers; Services are managed by service registers;Services are managed by service registers; Service consumers could issue requests to proxies of service Service consumers could issue requests to proxies of service

providers;providers; Proxies find and build connections with service providers.Proxies find and build connections with service providers. Requests should bring all the data to be processed by the services; Requests should bring all the data to be processed by the services;

and and Service consumers finally provide users or clients with services. Service consumers finally provide users or clients with services. ““Services are used to divide larger applications into smaller discrete Services are used to divide larger applications into smaller discrete

modules (Momentum, 2003).” modules (Momentum, 2003).” ““Services are integrated via service composition mechanisms to create Services are integrated via service composition mechanisms to create

larger applications (Momentum, 2003).”larger applications (Momentum, 2003).”

Page 13: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1313

Key components(1)Key components(1)

ProceduresProcedures (Structural Programming)(Structural Programming)

Procedure 1 Procedure 2 . . . . . . Procedure N

Procedure calls

Statements or procedure calls

Statements or procedure calls

Statements or procedure calls

Data

Page 14: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1414

Key components (2)Key components (2) Methods and messagesMethods and messages (OOP)(OOP)

Method 1 Method 2 . . . . . . Method N

Messages

A class An object

(Data)

Object

Object

Object

Messages

Messages

Messages

Objects (Data)

Page 15: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1515

Key components (3)Key components (3) Services (SOP)Services (SOP)

Service 1 Service 2 . . . . . . Service N

Object

Object

Object

Object

Object

Object

Object

Object

Object

Requests

Data (a copy)

Data

Page 16: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1616

Key components (4)Key components (4) SOP’s contract is a specification of the syntax and semantics of a service. SOP’s contract is a specification of the syntax and semantics of a service.

Compared with the message patterns of OOP (applied in Smalltalk), it explicitly Compared with the message patterns of OOP (applied in Smalltalk), it explicitly defines the request syntax and semantics. It improves the message patterns of defines the request syntax and semantics. It improves the message patterns of Smalltalk or the function specifications in C++ and Java in that it incorporates Smalltalk or the function specifications in C++ and Java in that it incorporates preconditions and post conditions.preconditions and post conditions.

SOP’s service is a reusable computing element. It is independent of platforms, SOP’s service is a reusable computing element. It is independent of platforms, protocols, and deployment environments. These services will not be restricted protocols, and deployment environments. These services will not be restricted by programming languages. Compared with OOP’s classes as reusable by programming languages. Compared with OOP’s classes as reusable components, they could only be used within one OOP language such as components, they could only be used within one OOP language such as Smalltalk, C++, or Java.Smalltalk, C++, or Java.

SOP’s connector is an encapsulation of transport-specific details for a specified SOP’s connector is an encapsulation of transport-specific details for a specified contract. It is an individually deployable element. This element makes SOP very contract. It is an individually deployable element. This element makes SOP very powerful to develop distributed systems. In OOP, there is no such concrete powerful to develop distributed systems. In OOP, there is no such concrete facility to accommodate distributed computing, even though objects facility to accommodate distributed computing, even though objects conceptually are distributed. conceptually are distributed.

SOP’s container is an environment for executing services that manage SOP’s container is an environment for executing services that manage availability and code security. There is no such facility to support this availability and code security. There is no such facility to support this requirement imposed by distributed computing. requirement imposed by distributed computing.

SOP’s context is an environment for deploying plug and play services. It SOP’s context is an environment for deploying plug and play services. It imposes the details of installation, security, discovery, and lookup. There is no imposes the details of installation, security, discovery, and lookup. There is no such facility in OOP that specially support the requirement of developing such facility in OOP that specially support the requirement of developing distributed applications.distributed applications.

Page 17: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1717

The Difficulties of Software ReuseThe Difficulties of Software Reuse

The initial idea of component-based development The initial idea of component-based development is learning from the hardware industry to reuse is learning from the hardware industry to reuse hardware components such as integrated circuits hardware components such as integrated circuits (IC), large-scale integrated circuit (LSI), very large (IC), large-scale integrated circuit (LSI), very large scale integrated circuits (VLSI), chips, chip-sets, scale integrated circuits (VLSI), chips, chip-sets, boards, etc boards, etc

Reusing hardware components is well accepted, Reusing hardware components is well accepted, because in hardware engineering, to understand a because in hardware engineering, to understand a component is much easier than to make it. component is much easier than to make it.

It is impossible for application developers to It is impossible for application developers to develop hardware components such as chips and develop hardware components such as chips and boards.boards.

Page 18: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1818

The Difficulties of Software ReuseThe Difficulties of Software Reuse

Build a frame with roles to support applications that Build a frame with roles to support applications that require roles.require roles.

It is possible for application developers to develop It is possible for application developers to develop software components such as a program segment, a software components such as a program segment, a function, or even a class.function, or even a class.

In the software industry, a software component either is In the software industry, a software component either is too simple or has too complicated specifications. too simple or has too complicated specifications. – If it is too simple, the programmers believe that they can make it If it is too simple, the programmers believe that they can make it

by themselves. by themselves. – If the specifications are too complex, the situation is that, after If the specifications are too complex, the situation is that, after

understanding the component’s specification, the programmers understanding the component’s specification, the programmers believe that they can make a better one by themselves.believe that they can make a better one by themselves.

Page 19: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 1919

The Difficulties of Software ReuseThe Difficulties of Software Reuse

The key difficulty is to make specifications The key difficulty is to make specifications much simpler than the implementation logic.much simpler than the implementation logic.

Service-oriented architectures brought about Service-oriented architectures brought about new light to the research and practice of new light to the research and practice of reusable components, because the reusable components, because the “register, find, bind and execute” paradigm “register, find, bind and execute” paradigm is a good style for software development. is a good style for software development.

Page 20: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 2020

Make services more reusableMake services more reusable One is that we must provide the services that are One is that we must provide the services that are

difficult to develop and we should have an difficult to develop and we should have an advanced development environment that is difficult advanced development environment that is difficult or expensive for application developers to build or or expensive for application developers to build or purchase. purchase.

The other one is that we should make the services The other one is that we should make the services easy to apply and we should provide cheap easy to apply and we should provide cheap service application tools that are easy and cheap service application tools that are easy and cheap to install. to install.

That is why the “register, find, bind and execute” That is why the “register, find, bind and execute” paradigm is a possible way to make more paradigm is a possible way to make more reusable components.reusable components.

Page 21: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 2121

ConclusionConclusion SOP is improving OOP in the following aspects:SOP is improving OOP in the following aspects: Readability: OOP applies some programming tricks such as “.h” files and “.cpp” Readability: OOP applies some programming tricks such as “.h” files and “.cpp”

files to separate specifications with implementations in C++ and message files to separate specifications with implementations in C++ and message patterns in Smalltalk. SOP’ contract provides more facilities for readability, i.e., patterns in Smalltalk. SOP’ contract provides more facilities for readability, i.e., the service consumers only need to understand the contracts.the service consumers only need to understand the contracts.

Efficiency: OOP’s efficiency is lowered than structured programming in general. Efficiency: OOP’s efficiency is lowered than structured programming in general. SOP could improve the efficiency of a component by the service provider with SOP could improve the efficiency of a component by the service provider with special consideration. special consideration.

Maintainability: polymorphism and subclassing are normally used to support Maintainability: polymorphism and subclassing are normally used to support maintainability for OOP, but there are still some problems to change a class that maintainability for OOP, but there are still some problems to change a class that have subclasses. The application may concentrate on their business logic have subclasses. The application may concentrate on their business logic because they do not care and they can not care about the service providers.because they do not care and they can not care about the service providers.

Flexibility: subclasssing is the major method to support flexibility of OOP, Flexibility: subclasssing is the major method to support flexibility of OOP, overloading, overriding and polymorphisms are concepts to support flexibilities overloading, overriding and polymorphisms are concepts to support flexibilities of subclassing. However, many programmers do not like too much of subclassing. However, many programmers do not like too much polymorphism because of its low readability and low efficiency. By SOP, service polymorphism because of its low readability and low efficiency. By SOP, service consumers could ask for different services even though their functions are consumers could ask for different services even though their functions are similar in order to meet the special requirements.similar in order to meet the special requirements.

Productivity: a too high-level abstraction leads to too much flexibility in program Productivity: a too high-level abstraction leads to too much flexibility in program development. The result is that there is not a significant productivity development. The result is that there is not a significant productivity enhancement by OOP. In SOP, with services as easily reusable components in enhancement by OOP. In SOP, with services as easily reusable components in applications, application development is definitely improved.applications, application development is definitely improved.

Page 22: Nipissing University, North Bay, Ontario, Canada 1 Challenges to Reusable Services - IBM Eclipse Innovation Grant - IBM Eclipse Innovation Grant - IBM

Nipissing University, North Bay, Ontario, CanadaNipissing University, North Bay, Ontario, Canada 2222

Question and Comments ?Question and Comments ?Forwarded to Haibin Zhu Forwarded to Haibin Zhu

[email protected]@nipissingu.ca