1 WHAT’S HAPPENING TO SOFTWARE DEVELOPMENT?
The shift from business-to-consumer (B2C) applications to business-to-business (B2B) integration applications has posed new requirements on software development. To address these requirements many new development paradigms have emerged. Real developers are faced with a wide array of technologies, tools, methods, and techniques, and have to decide which ones are important. The primary indicators point to “specifications” and (web) “services” as the new wave of approaches that need to be the foundation of every developer along with the well established Object Oriented approach. This article discusses these new requirements, and provides real developers guidance on making Specifications, Objects and Services part of their skill repertoire.
The first wave of e-business was all about B2C applications. This wave was characterized by a move from heavy GUI client applications to the “thin-client” model, and the move of application and business logic from the client to the server. Object Oriented principles (including encapsulation, polymorphism, and inheritance), programming model (especially the separation of interface from implementation), best practices (incuding design patterns and Model-View-Controller framework), and methods (use case driven and agile methods) provided the foundation for developing these applications. In addition, many “standards” were born during this time to support the need for portability, interoperability, and maintainability. Many touted e-business as being driven by these “standards”, including TCP/IP for sharing resources across a network, HTML and HTTP for standard presentation and communication over the internet, XML for portable structured documents and data on the web, and Java for “write once, run everywhere” portable code.
The maturity of the OO approach along with this “specification” movement is best embodied in the Java2 Enterprise Edition (J2EE) component model which defines a set of specifications (http://java.sun.com/j2ee) for implementing and deploying enterprise applications. J2EE defines both client side (applets, application clients) and server side (servlets, Java Server Pages (JSPs) and Enterprise Java Beans (EJBs)) components as Java objects. It defines common distributed services include naming and directory (JNDI), connecting to data stores (JDBC), security, and transactions (JTA and JTS), along with remote communication between components (RMI/IIOP) and messaging (JMS.) Finally, J2EE facilitates its components to be used in the MVC framework where EJBs embody the business logic (model), JSPs deal with the presentation (view), and servlets handle the interaction (controller). Note however that this J2EE model is very oriented towards developing B2C applications focusing on interfaces, tight client-server “conversation” coupling, and using a mostly synchronous communication.
The bursting of the “dot com” bubble has led us to the “second wave” of e-business. The basic realization in this second wave is that e-business is all about integration integrating applications in the distributed enterprise, and business to business integration. The requirements of these integration applications include:
Are distributed OO technologies and principles capable of handling these requirements? The handling of integration requirements through another set of specifications on top of the distributed OO technologies (e.g. J2C and JMS) and the focus on extending B2C applications is not sufficient. What is needed is a completely different approach, that tackles the need in an integral fashion. Enter web services and the service oriented architecture for integrating applications.
Web Services: Web Services are self-describing, self-contained, modular applications that have to be described, published, found, bound, invoked and composed. Web services conform to a service oriented architecture as summarized in Figure 1.
Fig. 1: The Service Oriented Architecture
As shown in the figure, service providers create application functions that are available on disparate implementation platforms as web services and describe them using a standard definition language. These services are published in a service registry. Service requestors who need a particular type of service search the service registry and find the desired service. Once a service is found the requestor and the provider of the service negotiate to access and invoke the service.
The underlying technologies supporting web services need to be platform and implementation neutral, and are therefore specified in XML. The core technologies include
What kind of applications will be built using web services? Primarily, the focus will be on integration starting from integrating applications within the enterprise (happening now), moving to integrating the entire supply chain (in the next 6 months to a year), to a complete dynamic e-business (in 2-3 years.) However, with web services several new opportunities emerge, including the “pay as you go” subscription based pricing model (e.g. IBM’s e-business on demand e-utility model http://www-1.ibm.com/services/ondemand/index_flash.html) and the emerging area of grid computing (http://www.globalgridforum.org/).
It is important to note that web services are at their infancy specifications are still evolving, (competing) standards are being defined, critical enterprise issues (including scalability, performance, security, etc.) have to be defined and implemented, and best practices, frameworks, and design patterns have to be developed and used. Follow their evolution through the standards bodies involved including W3C (http://www.w3.org/2002/ws/), OASIS (http://www.oasis-open.org/committees/wsia/), WS-I (http://www.ws-i.org/), and the community portal http://www.webservices.org/
2 SKILLS IN THE BRAVE NEW WORLD
What skills are needed in this brave new world? Here is a summary of the core skills needed for each participant in the service oriented architecture:
For the Service Provider:
For the Service Requestor:
For the Service Broker:
3 SO HOW DO YOU GET S.O.S?
Almost all of the training organizations (both academic and industrial) are still focused in the distributed OO “camp”, and very few have started to address SOS skills. Most training organizations do provide orthogonal tracks in developing XML skills, and some even have made the connection in combining XML and Java skills. However, the focus of the XML skills is primarily at addressing “presentation”, i.e. the use of XML to represent information and using XSL to transform the information so it can be presented in a style that is appropriate to the device (e.g. web browsers, wireless phones, and voice.) There exists training targeted at message oriented middleware, which usually cover XML as the basis for the messages that need to be transported. So, how do you get SOS? Well, the answer depends on where you are as shown below.
Distributed Object Developers: You should have solid object skills, and need to concentrate on strengthening your specification skills and building your services skills. You should have a good foundation in specification skills as you are required to use well defined interfaces to build distributed applications. The skill that you need to build on top of this foundation is the ability to design a (document based) specification, and then build an implementation for the defined interface. The first step in developing these skills is to get a solid foundation in XML and its related technologies, and programming using XML and Java (or your language of choice.) After acquiring these core skills, you can move to building your web services skills. The primary focus of your skills will be on understanding the underlying technologies (SOAP, WSDL, and UDDI) and using these technologies in the context of the tasks that you need to perform (as defined above). Note that building the programming skills will be very dependent on the development environment (including language, component model, and tools) that you choose to build your skills on. For example, a J2EE based development environment would require that you understand how to use the Java API for XML (JAX) based specifications for integrating web services with J2EE applications (http://www.jcp.org/aboutJava/communityprocess/review/jsr109). The main problem that you will face in building up your skills will be on how to design distributed objects so that they can be used as or in conjunction with web services. The main concern is that web services are not “objects”, so an initial approach of simply mapping a distributed object into a web service will not lead to a well-designed web service. Furthermore, the current OO methods and best practices (patterns, frameworks, etc.) do not apply very well to building web services. Unfortunately, since web service technology is still in its infancy, a lot of the work in building appropriate methods and best practices is ongoing and not well established yet. Note, however, that distributed objects and web services are complementary. So, you need to develop a good understanding of both worlds, and know how to use them in conjunction with each other. So, for example, when you have designed a web service, you will implement it using distributed objects.
Document-Oriented or Message-Oriented Developers: You should have solid skills in designing and manipulating documents, messages, and specifications primarily using XML and its related technologies. You can start building your web services skills by mastering the underlying technologies (SOAP, WSDL, and UDDI) and using these technologies in the context of the tasks that you need to perform (as defined above.) Most likely, you will rely on your core XML skills to build interfaces to and wrap existing applications so that they can be used as web services. The main problem you will face is in composing and integrating various applications together into a web service. You will need to get very good support from the underlying tools to help you in the “wrappering” and integration process, e.g. develop skills in using the technologies and tools for supporting web service development from http://www.alphaworks.ibm.com/webservices which includes support for wrappering and integration of web services.
Academic Institutions: The most recent computer science curriculum proposal from IEEE and ACM http://www.computer.org/education/cc2001/final/index.htm paves the way for finally establishing an OO based curriculum. The key for academic institutions adopting SOS is to evolve the proposed model to incorporate “document-oriented” XML based concepts and skills at the same introductory core level as “object-oriented” Java based concepts and skills are handled. The next step is to extend the coverage within each of the applicable intermediary courses (especially in the compressed and web-based approach) from component-based distributed object applications to service-based distributed integration applications, and from B2C to B2B applications. The advanced courses can support coverage of handling dynamic e-businesses, managed business processes, and the standards/specification process.
About the author
Cite this column as follows: Mahesh Dodani: "Objects are for Wimps: Real Developers Need S.O.S.", in Journal of Object Technology, vol. 1, no. 2, July-August 02, pp. 55-61. http://www.jot.fm/issues/issue_2002_07/column5