Since its inception in 1988, the AS/400 family of business computers has been recognised as an easy-to-use traditional commercial computer and is now acknowledged by leading industry analysts as a leading server. Not content to rest on its laurels, the AS/400 development team is on a mission to make AS/400 a premier object-oriented server as well. IBM recognises object-oriented as the software technology of the future which will significantly improve the way software is developed, modified, and distributed. As a result, it is investing heavily in the architecture and products that will provide the benefits of object-oriented technology to its customers and business partners. In fact, IBM is practising what it preaches and is already exploiting object-oriented internally to provide a competitive advantage in the midrange market. The impetus for the use of object-oriented technology stems from the fact that AS/400 hardware is currently undergoing revolutionary change.

Major rewrite

The system’s unique complex instruction set processors are being replaced with 64-bit PowerPC RISC processors in 1995. Since AS/400’s Technology Independent Machine Interface or TIMI insulates the OS/400 operating system and user applications from any changes in hardware technology, RISC chips can be introduced into existing AS/400 systems without affecting either the operating system or user applications. However, a major rewrite of Licensed Internal Code, the code that provides the function to support the TIMI, was essential to support the RISC processors. The team at Rochester, Minnesota, home of the AS/400, recognised that it would make sense to do the massive rewrite using object-oriented technology, resulting in better productivity and ensuring easier maintenance in the long term. As a result, a team of over 250 developers has re-engineered AS/400’s Licensed Internal Code using object-oriented technology. AS/400’s Licensed Internal Code has traditionally consisted of Vertical and Horizontal Licensed Internal Code, VLIC and HLIC. This is now being replaced by System Licensed Internal Code or SLIC, containing over one million lines of code and 6,000 classes developed in C++. Not only is the project extraordinarily large, but the developers have had to take into consideration that the code interacts heavily with existing code. In addition, the System Licensed Internal Code is a critical component of the operating system, the code is run frequently, and it is therefore very performance-sensitive.

Right at the beginning of the 1980s, when Intel Corp was making waves among tecchies with its ill-fated iAPX-432 chip set, perceptive computer journalists began to become intrigued by talk flying around about object-oriented architectures, and news that the System/38, predecessor of the AS/400 was internally an object-oriented machine generated great excitement, soon dashed by IBM, which answered every question with a quick we never talk about that. At last, 15 years later, IBM is talking, and here Randall Munson, from the AS/400 Division at IBM, makes the pitch for object orientation for which we have been waiting for so many years, and explains how the technology has been applied to make the transition to the PowerPC RISC derivative in the machine as painless and as seamless as possible.

Some of the findings of this project followed conventional object-oriented wisdom, others are not as intuitive. Here are a few insights that we have gleaned from the project: Performance. Most of the C++ code in SLIC is low level, executed heavily, and therefore performance-sensitive. Key components of SLIC include input-output support, Storage Management, and Service Code, all of which were formally components of the Vertical Licensed Internal Code, as well as those components that were formerly part of the Horiziontal Code (tasking, queuing, and locking support). Performance challenges occurred during development stage, as expected, but C++ provided the mechanisms required to tune the code. Naturally, the distinct advantag

e of using object-oriented programming was the ability to change the implementation within an object while not affecting the interface, saving valuable time. Iteration. We proved that iteration works. Start coding, then iterate, iterate and iterate some more. By developing de fined functions that combine a set of objects, the IBM development team was able to verify the functions, gauge the progress, and learn. Teamwork. The teams on the System Licensed Internal Code project consisted of those who understood AS/400, paired with those knowledgeable in C (or C++) and object-orientation, with representatives from each major component meeting weekly to make broad policy and direction decisions. This structure helped the development team keep the big picture in perspective. Scope. Most ‘experts’ advise starting with a small object-oriented project, show that it works and then try something bigger. The problem with this approach is that it doesn’t negate the fear that object-orientation will only be successful on small projects. With System Licensed Internal Code, IBM was committed to make the huge object-oriented project work for AS/400 – and it succeeded. In the AS/400 Division, IBM has demonstrated the viability of deploying object-oriented technology in performance-cr itical real-world projects. We expected it to be more productive than traditional programming methods and have been pleasantly surprised as it exceeded our expectations.