Introduction

My internship at IBM was a very rewarding experience. Not only I had opportunities to exercise and expand my classroom knowledge, but I was also trained on some of the most leading- edge technologies in the computer industry today. In this report, I will outline my activities at IBM and describe in detail the project that I was working on.

My internship began in late May 2000 through August 2000. I worked in the VisualAge Generator organization of the Software Solutions Group. My main responsibility was to write scenario which included sample applications and documentation to show customers what they can do with VisualAge Generator (VA Generator)  which is one of the software that come with the upcoming release of S/390 Application Development Solution (S/390 ADS).

Activities

Upon my arrival at IBM, my manager assigned me a mentor who helped me get started and answered any questions I had during my internship. My mentor, another NIU graduate, was very helpful because he was familiar with the courses and knowledge I have from attending NIU. For the first 3 weeks, I spent most of my time learning more about IBM and its products. I was also trained on how to use VA Generator to create e-business applications.

IBM co-op/internship program provided many training opportunities to improve the overall experience for students. Besides practical work experience gaining from challenging projects, my manager allowed me to take or to participate in any in-house training and seminars that I was interested in. Those classes were taught by professional consultants who have years of experience with the subject. Therefore, even though those classes only were held for 4 or 5 days, they were very good in terms of providing in-depth concepts along with real world examples that the instructors used to working on. I was very satisfied about the amount of training I got while I was at IBM. Although I only worked for 12 weeks, I was able to take five courses that are the newest technologies in the industry such as Java, XML, EJBs, e-business models, and databases...

In addition to individual skill development, IBM also held a lot of educational and recreational group activities for all co-ops. One of those activities was the Brown Bag Lunch series where all co-ops were invited to bring their lunch to a conference room and listened to the talented engineers and scientists who came to talk about their jobs at various IBM organizations. Executives also took time out of their busy schedule to talk to the interns and answered any questions we had about regular employment and benefits of working for IBM. The series not only gave the students a better picture of all IBM businesses, but also served as a bridge for co-ops to meet other fellow co-ops and find out what other students are doing. Besides the Brown Bag Lunch series which focused on the educational aspect, IBM also provided recreational activities such as pool parties, a trip to amusement park, baseball games...

Scenario for S/390 ADS Project

My main responsibility during the internship was to develop work scenario for the upcoming release of S/390 Application Development Solution. S/390 ADS is an integrated development environment providing the hardware and software to help customers solve today's application development challenges. S/390 ADS comes with a full function S/390 server pre-configured for team application development and testing. The server is preloaded with the following Application Development enterprise productivity tools: CICS Transaction Server, WebSphere Application Server, DB2 database...  The S/390 workstation development software for Windows NT include a comprehensive set of development tools for e-business such as DB2 Personal Edition, VisualAge Generator, VisualAge for Java Enterprise Edition and WebSphere Studio. The idea behind S/390 ADS scenario is to show the customers how to create modern applications with VA Generator without having to spend a lot of money training their developers new technologies such as Java, OO design and communications that involve in developing client/server programs. By using VisualAge for Java and VA Generator, I wrote a number of small sample programs to demonstrate why VA Generator is the development platform of choice for businesses. Once the programs were done, I was to write all the documentation to show the users step-by-step how to develop, test and deploy their application on specific platforms.

By attending a one-day class on how to use VA Generator and reading the manuals of the products, I was able to create some sample programs that augment from classroom materials.  The sample programs I used was an employee maintenance program that allows the end users to add, search, update and delete an employee from a database. The overall architecture of the application are as follows:

Server Programs

Two COBOL server programs were created using VA Generator. The EMMAINT program allows the end users to insert, select, update, delete an employee from an employee database. The EMLIST program will allow the end users search for a employee based on last name. The two server programs were batch programs running on a MVS CICS server and accessing DB2 relational database. The server programs were written in 4GL (Fourth Generation Language) and then were generated into COBOL or C++ depending on the runtime platform. I chose COBOL because S/390 ADS runs on CICS/MVS platform.

VisualAge Generator provides an excellent testing and debugging tool called Interactive Test Facility (ITF). Once the 4GL code has been written, the developers can use the ITF to test run the programs inside the VA Generator environment.  They can set break points, watch points, trace log and dynamically manipulate input data during testing for easy debugging.

One of the client/server application advantage is the reusability of the server code because the same business logic can be used by different client programs (presentation logic). For this project, I was to demonstrate to the customers how they can use those same two server programs (MNTT and LIST) for 3 different types of user interface on the client machine: the traditional Text User Interface (TUI - 3270 text screen), Graphical User Interface ( Java GUI), and Web-enable interface ( JSPs and Java servlets on WebSphere application server).

Text User Interface (TUI) Client

For TUI programs, VA Gen provides a tool to quickly define the user interface called a Map Editor. Maps are used to define screen I/O data. The Map Editor provides a visual development window where the developers can visually design how the interface looks and link the I/O data to each fields on the text screen. The TUI was designed so that when the user hits a PF key, the appropriate server program will be called. The server program will then respond to the request, access the DB2 database if necessary and return the result to the TUI. The TUI then displays the result in the appropriate map fields. Prior to deployment, I used ITF to test the server programs and the TUI programs. After running successfully inside ITF,  the client (TUI) and server programs were deployed on the S/390 ADS server.  The users would access the TUI programs by using CICS Client to log on the S/390 server and call the appropriate transaction program.

Java Graphical User Interface (GUI) Client

For the GUI programs, I used VisualAge for Java to create Java GUI that run on Windows NT workstation. VA for Java use JavaBeans to allow developers visually compose the user interface and tie them with the record definitions and server programs. After designing the user interface, VisualAge for Java generated the Java run-time code for my programs. Again, I used ITF to test and debug the generated run-time code prior to deployment. After my GUI programs ran successfully in ITF, I then exported my code to a Windows NT workstation and executed the Java code. Yet there was one more step before I could run my GUI application on my workstation: setting up the environment. Every workstation must satisfy the following requirements to run generated GUI:

The good thing about VA Gen is that all the communications services are hidden from the developers. The developers do not have to acquire a deep knowledge of TCP/IP or any complicated networking/messaging protocols. All they have to do is at generation time to specify what kind of middleware they will be using and VA Gen will generate code to help the client communicate with the server programs.

Web-based Client

Apparently, there were a lot of works involved in develop GUI programs.  The biggest problem I saw with the GUI programs was in the deployment phase.  It took a lot of time to configure and install the GUI programs for all the workstations. An attractive alternative to stand-alone Java GUI programs is to Web enable these programs so all a user need to run them is the Web browser and network connection. The Web mode simplifies the deployment process, but brings in new development challenges. In order to successfully build robust, scalable Web applications, developers must learn a whole new set of Java technologies such as Java Server Pages(JSP), Java Servlets and Enterprise Java Bean(EJB)...Fortunately, VisualAge Generator supports all these new technologies and make the developers' life easier.

There are several steps involved in developing Web-based programs. First, I used VA Gen to write a Web transaction program. VA Gen employs a new record definition call UI record (user interface record). It is like any other record, but UI record includes actions as part of its property to create Web Page interface. UI record consists of labels, text fields, buttons...Second, I used ITF to test the Web transaction program I just wrote. The ITF invoked a Web browser to display the default JSP to test run the web application. Finally, I generated the web transaction program to the target execution environment, CICS/MVS in this case. VA Gen generated default JSPs and Java Servlets.

Web-based programs are typically 3-tiered programs (Figure 3). The first tier is the presentation tier which includes browsers, Java applets or dynamic HTML pages. The second tier is the business logic tier which consists of  Java Servlets and JSPs running on application server such as IBM WebSphere Application Server. And the third tier is the data access tier which is home to relational databases or legacy enterprise data system. The 3-tiered configuration can be either logical or physical computing tiers. In my scenario, the partition was logical because the second (Web application server) and the third (DB2 database) reside on the same S/390 ADS server.

One way to better understand the application architecture is to examine the flow of the program.  For the Web transaction program, the following occur:

On Client Web browser:

On Web Application server:
On Client Web browser:
On Web application server:
On Client Web browser:
One of the advantage of using JSP and Servlet over Java applets is that with JSPs and Java Servlet architecture, the client is ultra thin. This minimizes the communications between the client and the server and have all the processing done on more powerful server machines which improve performance significantly and minimize network traffic.

Another advantage of JSPs is the separation between business logic and presentation which makes code maintenance easier. In a web application development environment, there are typically two development teams. One is the Java development team who are responsible for creating Java programs (Servlets and JSPs). The other team are web design team who are responsible for creating "pretty" web pages from the default JSPs. This arrangement makes sense because two different teams require different skillsets and development tools. The programmers can use VA Gen and VisualAge for Java to create Java Servlets and JSPs ( HTML files with embedded Java code) and then give those JSPs to web designers. The web designers who have no knowledge of Java programming then can use any Web design tools such as WebSphere Studio to enhance the look of the default JSPs by adding images and arts to make the web page look professional and easy to understand. The enhanced JSPs and Java servlets will then be stored on Web application server and anyone who has access to the Internet can run the application at anywhere, anytime. Of course if the application is for internal use, the programmers can design to check for user authentication or deploy them on the intranet.

Conclusion

My internship experience at IBM is invaluable.  I gained significant practical experience and acquired a much better undstanding of where the computer industry is going today. Knowledge of Java, JSP, XML and EJB along with a rich set of IBM development tools helps me prepare for entering the workforce.