Przez hobby na światowe rynki

Gdy słuchamy historii o komputerach budowanych w garażu czy systemach operacyjnych powstających w ramach szkolnych zajęć, zastanawiamy się, czy możliwe jest obecnie powtórzenie podobnego sukcesu w czasach rozwiniętej pracy zespołowej, skomplikowanych narzędzi i kosztownych komputerów. Rozmowa z Andre Kruetzfeldt z Informixa pokazuje, jak przeszedł on nie tak dawno drogę od hobby, realizowanego w soboty i niedziele, do produktu oferowanego na cały świat przez wielką korporację.

Gdy słuchamy historii o komputerach budowanych w garażu czy systemach operacyjnych powstających w ramach szkolnych zajęć, zastanawiamy się, czy możliwe jest obecnie powtórzenie podobnego sukcesu w czasach rozwiniętej pracy zespołowej, skomplikowanych narzędzi i kosztownych komputerów. Rozmowa z Andre Kruetzfeldt z Informixa pokazuje, jak przeszedł on nie tak dawno drogę od hobby, realizowanego w soboty i niedziele, do produktu oferowanego na cały świat przez wielką korporację.

Jak to się stało, że stworzył Pan zapewne pierwszy na świecie program do przekształcania aplikacji napisanej w języku 4GL na kod środowiska obiektowego Informix NewEra?

Mijają już prawie dwa lata od momentu, gdy siedząc w domu przy komputerze stwierdziłem, że przez kilka lat napisałem wiele programów w Informix 4GL. Nie pociągała mnie perspektywa pisania wszystkiego na nowo dla środowiska NewEra 1.0, które właśnie się pojawiło. Jak przenieść aplikacje z jednego środowiska do drugiego? Na dodatek, gdybym przeniósł je do środowiska obiektowego NewEra, mógłbym użyć powtórnie wielu już opracowanych części.

Zacząłem zastanawiać się, co jest potrzebne. Okazało się, że prosty translator z języka na język nie wystarcza. Istnieje możliwość translacji ze składni jednego języka do składni drugiego, ale pomija się przy tym całą zawartość semantyczną programu (np. kiedy są używane poszczególne funkcje). W środowisku obiektowym ważna jest właśnie semantyka, by móc kapsułkować obiekty i ich zachowanie. Musiałem więc stworzyć narzędzie, które pozwoli mi poruszać się swobodnie w kodzie w przód/w tył i podejmować decyzję, jaką część mam włączyć do określonego obiektu.

Muszę powiedzieć, że praca nad tym programem do migracji sprawiała mi naprawdę dużą frajdę. Stało się to moim hobby.

Jednakże opracowane przeze mnie narzędzie nie miało na razie zastosowania, a ja nie byłem nawet pracownikiem Informixa. Gdy dołączyłem do tej firmy, okazało się, że w Londynie już istnieje dział migracji kodu. Nie byli zbyt entuzjastycznie nastawieni, gdy pokazałem, co zrobiłem. Wrócili ponownie do mego pomysłu po prawie 9 miesiącach nieudanych prób migracji. Ja już w tym czasie miałem znacznie ulepszony produkt - wynik mej pracy przez kolejne soboty i niedziele.

Teraz zaś dostałem zadanie wyprodukowania kompletnego produktu. Od tego momentu przy pomocy kilku programistów udało mi się skończyć Compass w ciągu ok. 6 miesięcy. Wiele pomógł mi wiceprezes Informixa Walter Koenigseder.

Jakie największe trudności napotkał Pan w tworzeniu programu do migracji aplikacji?

Główny kłopot polegał na tym, że 4GL jest to język liniowy, nie ma on obiektów, które dałoby się przenieść bezpośrednio do środowiska obiektowego NewEra. Należy więc w tym liniowym kodzie znaleźć te części, z których można stworzyć obiekty. Korzystamy przy tym z wykonywalnej aplikacji 4GL. Uruchamiamy ją i przebiegamy przez kolejne części kodu, odnajdujemy poszczególne zmienne, określamy ich zakres i czas życia, znajdujemy wywołania procedur, a następnie zapisujemy te informacje w repozytorium, działającym pod kontrolą serwera bazy danych Informix 7.12.

Następnie uruchamiamy generator aplikacji NewEra, który na tej podstawie przekształca informacje na obiekty i kod do budowy interfejsu użytkowego aplikacji w Windows (Windows Interchange File).

Dla jakiej wersji NewEra otrzymuje się kod?

Koncentrowaliśmy się na NewEra 1.01 dla Motif oraz NewEra 2.0 i 3.0 dla Windows. Jeśli zaś chodzi o język na wejściu, system działa także dla opracowanego w Niemczech systemu do tworzenia aplikacji Rosi SQL. Obecnie rozglądamy się za innymi językami 4GL, które moglibyśmy włączyć do naszego narzędzia do migracji Compass. Myślimy w szczególności o takich językach, jak Xbase czy Clipper.

Czy można porównywać z takimi narzędziami, jak Access (FoxPro) Upsizing Tool Microsoftu, przenoszących aplikację z języka Xbase do SQL?

Compass działa nie tylko w kierunku przeniesienia aplikacji do środowiska graficznego, ma także połączenie z repozytorium, może więc być używane do wykonania operacji odtworzenia (reengineering) istniejącej aplikacji, ma więc znacznie większe możliwości.

Compass jest potężnym narzędziem. Co trzeba mieć do jego uruchomienia?

Istotnie, jest to duży program wymagający do uruchamiania dużego komputera. Jeżeli duża aplikacja ma ok. 300 tys. linii kodu, zajmujących 25-30 MB na dysku, to trzeba przynajmniej 128 MB pamięci w SUN SPARcenter i wymaga prawie 15 h czysto obliczeniowej pracy komputera.

Jaką część kodu aplikacji przenosi się do nowego środowiska, a jaką część trzeba przekodować ręcznie?

Jeżeli to jest typowa aplikacja napisana w Informix 4GL - przenoszona jest w 100%. Zresztą nie ma innej możliwości - Compass musi przenieść całą działającą aplikację. Jeżeli jednak zawiera ona dynamiczne elementy ekranowe (np. okna tworzone przez użytkownika w trakcie pracy aplikacji, niewidoczne w kodzie) - prace związane z przeniesieniem takich elementów przewidujemy zakończyć jeszcze w tym miesiącu.

W wyniku migracji otrzymujemy kod, który można optymalizować ręcznie. W program jest wbudowany debugger semantyczny pozwalający na śledzenie pracy programu i jakie zachowanie ma wbudowane. Umożliwia on wycięcie części kodu z 4GL i podłożenie jej w NewEra do innego mechanizmu obsługi niż w programie oryginalnym - np. dołożenie zestawu graficznego "pierwszy - poprzedni - następny - ostatni", takich jak w magnetowidzie, zamiast oddzielnych przycisków "następny", "poprzedni"...

Im lepiej przygotuje się proces migracji, tym lepsze wyniki się otrzyma. Dla dużego projektu wymaga to kilku dni pracy programisty, który wielokrotnie uruchamia program, aby zrozumieć co jego twórca chciał osiągnąć, po co są tworzone okna, na jaki typ zamienić po migracji itd.

Compass jest to narzędzie do migracji części klienckiej aplikacji do NewEra. Co z częścią działającą na serwerze?

Z bazami Informixa mogą współpracować zarówno aplikacje napisane w 4GL, jak w NewEra. Można więc przenosić po kolei, jedna po drugiej, aplikacje działające z jedną bazą, bez potrzeby ruszania czegokolwiek w serwerze.

Czy za pomocą Compass można dokonać partycjonowania aplikacji, wydzielając część wykonywaną na specjalnym serwerze aplikacji?

Tak. W trakcie migracji można podać, że jakaś część kodu, np. wymagająca wykonania długotrwałych obliczeń, ma być wykonana na oddzielnym serwerze aplikacji.

A co z dokumentacją programu?

Zdecydowaliśmy wykonywać pełną dokumentację procesu - przed jego rozpoczęciem otrzymamy wynik, łącznie z pełnym kodem programu. Okazało się, że udokumentowanie programu złożonego z 2 tys. linii kodu wymagałoby 800 stron tekstu. Nie jest to dobry pomysł. Zdecydowaliśmy więc wykonać dokumentację w postaci stron HTML, dostępnych za pomocą przeglądarki Netscape. Pozwala to swobodnie poruszać się między dawnym kodem, nowym kodem, klasami, obiektami itd.

Ale jest to chyba poważne odejście od typowej dokumentacji...

Moja grupa w Informixie ma dość dużą swobodę... Nie należymy do głównej grupy programistów firmy, zlokalizowanej w Menlo Park w Kalifornii. Jesteśmy w europejskiej grupie Engineering. Uznaliśmy, że z punktu widzenia programisty - a Compass jest narzędziem dla programisty - najlepsza jest taka forma dokumentacji. Netscape jest znakomitą przeglądarką klas, z pełną dokumentacją, dostępną przez kliknięcie myszą. W typowych przeglądarkach klas wielkość dokumentacji dla każdej klasy jest ograniczona do 255 znaków. W Netscape nie ma praktycznie żadnych ograniczeń.


TOP 200