Jaki rodzaj narzędzi wybrać?

Przewodnik po labiryncie oprogramowania wspomagającego tworzenie aplikacji w środowisku klient/serwer

Przewodnik po labiryncie oprogramowania wspomagającego tworzenie aplikacji w środowisku klient/serwer

Damian Rodriquez, zmęczony już rozwiązywaniem tych samych starych problemów, przy użyciu tych samych starych metod, zdecydował się wprowadzić firmę Polaroid Corp. w szalony świat technologii klient/serwer.

Infrastruktura firmy zdawała się odpowiadać temu zamiarowi: kilkaset komputerów osobistych (głównie Macintosh i komputery PC pracujące pod kontrolą systemu Windows) oraz kilka unixowych stacji roboczych. Wszystkie stanowiska były podłączone do komputera VAX poprzez sieć Pathworks (Digital Equipment Corp.) i TCP/IP. W firmie przygotowywano się właśnie do uruchomienia nowego systemu produkcji filmów, toteż nadarzała się więc doskonała okazja do wdrożenia technologii informatycznej klient/serwer.

Brakującym elementem w infrastrukturze firmy było oprogramowanie wspomagające, które można by uruchamiać w środowisku pracy składającym się z komputerów Macintosh i Windows. Służyłoby ono do tworzenia w pełni skalowalnych, rozszerzalnych aplikacji typu klient/serwer. D. Rodriquez, który pełni w firmie funkcję analityka systemów, był przekonany, że najwłaściwszą metodą do osiągnięcia celu, jakim jest możliwość wielokrotnego używania kodu aplikacji, jest zastosowanie technologii zorientowanych obiektowo. Chciał on jednak dostać do ręki takie narzędzie (z wbudowanymi mechanizmami zarządzania obiektami), które nie zmieniałoby raz już utworzonego obiektu w stopniu na tyle gruntownym, że różniłby się on zasadniczo od zamierzeń tworzącego go programisty.

Mając na uwadze te wszystkie uwarunkowania Rodriquez wybrał produkt firmy Blyth Software Inc. - system Omnis 7. Opinia w firmie po wprowadzeniu nowego systemu była jednomyślna: aplikacja pracuje doskonale, a wybór był bezsprzecznie trafny. Jak mówi Rodriquez "użytkownicy pieją wręcz z zachwytu i z chęcią stosują nowy system".

Przedstawiony powyżej przykład pokazuje, że na liście elementów umożliwiających zbudowanie środowiska pracy klient/serwer znajduje się zwodniczo mało pozycji: serwer, klient i środowisko oprogramowania wspomagającego.

Podczas gdy pierwsze dwie pozycje na tej liście dostrzegane są przez większość w należytym stopniu, to pozycja trzecia, czyli oprogramowanie wspomagające, jest powodem sporego zamieszania w środowisku specjalistów zajmujących się systemami informatycznymi. Narzędzia umożliwiające tworzenie aplikacji dla środowiska klient/serwer różnią się między sobą znacznie: od prostych do skomplikowanych, od małych i ograniczonych do dużych oraz wszechstronnych.

Inaczej niż w przypadku dwóch pierwszych elementów wchodzących w skład środowiska pracy klient/serwer (serwer i klient), użytkownik nie dysponuje żadnymi wzorcowymi testami, które pozwoliłyby mu ocenić różne rodzaje oprogramowania wspomagającego, ani też nie ma w tej dziedzine wystarczającego doświadczenia, które podpowiadałoby mu właściwy wybór.

Na rynku spotkać można wiele nowych produktów opartych na technologiach i rozwiązaniach, które potrafią zamienić potrzeby i oczekiwania końcowego użytkownika w rzeczywistość, dając mu do ręki zestaw pracujących niezawodnie narzędzi.

Można wymienić wiele firm czy produktów, które są gotowe wspomóc użytkownika przy dokonywaniu wyboru. Na rynek ten próbują nawet wejść producenci piszący w Fortranie i Cobolu, gotowi dostarczyć narzędzi dla środowiska pracy klient/serwer, które są pisane w tych cokolwiek już przestarzałych językach.

Jakie więc narzędzia pracujące w tym środowisku można by polecić użytkownikowi? Zależy to od tego czy szuka on narzędzi umożliwiających szybkie tworzenie elastycznych programów (które nie są doskonałe, ale potrzebne są natychmiast), czy też takich, które pozwalają pisać absolutnie pewne i niezawodnie działające programy obsługujące w firmie szczególnie krytyczne aplikacje. Zależy to też od tego, jak dalece aplikacje te wspierają proces kierowania i zarządzania firmą. Dużą rolę odgrywa tu czynnik ludzki, a mówiąc konkretnie gotowość przestawienia się pracowników na nowy sposób pisania i uruchamiania aplikacji.

Chociaż nie ma jasnych reguł, które umożliwiałyby podzielenie szerokiego spektrum oprogramowania wspomagającego pisanie aplikacji w środowisku klient/serwer na poszczególne rodzaje, to można jednak wymienić cztery podstawowe grupy tych narzędzi: języki trzeciej generacji (3GL), zestawy narzędzi pracujących pod systemem Windows, narzędzia typu CASE i narzędzia oparte na repozytoriach oraz narzędzia wykorzystujące technologię obiektową.

Każdy rodzaj wymienionych powyżej narzędzi ma swoje wady i zalety (patrz tabela). Ich użyteczność zależy głównie od tego, jak oferowane przez nie możliwości spełniają wymagania stawiane przez dane środowisko pracy.

Należy przy tym pamiętać, że wybór konkretnego narzędzia określa też metodykę czy filozofię tworzenia aplikacji. Jeśli metoda nie przystaje do pracy danego systemu informatycznego, konieczne może być poczynienie w nim istotnych zmian. Możliwe jest też, że użytkownik popełnił po prostu błąd wybierając ten rodzaj narzędzia.

Najlepszym tego przykładem (chodzi o wspomnianą powyżej metodykę) mogą być tradycyjne narzędzia typu CASE, np. oferowane przez Texas Instruments i Andersen Consulting. System CASE "był produktem pisanym z myślą o komputerach typu mainframe", mówi Judith Hurwitz, prezydent firmy Hurtwitz Company (Watertown, Mass.). Jednak "obecnie mamy do czynienia z okresem przejściowym", gdy narzędzia CASE dostosowywane są do wymagań stawianych przez środowiska klient/serwer. Zaletą narzędzi CASE jest to, dodaje J. Hurwitz, że przy pisaniu aplikacji zmuszają one programistę do ścisłego przestrzegania kolejnych faz tworzenia aplikacji. Jest to "dużo ważniejsze, niż wydawało się to wcześniej wielu osobom".

Użytkownicy nie są zawsze zachwyceni tymi wymaganiami, ponieważ pisanie aplikacji trwa wtedy dłużej, a posługując się pojedynczym zestawem narzędzi zmuszeni są stosować w stosunku do wszystkich systemów w środowisku tę samą metodologię tworzenia aplikacji.

"Jeżeli chodzi o CASE to muszę powiedzieć, że nie wierzę w to, aby to tradycyjne narzędzie sprawdzało się w każdym środowisku pracy", mówi Daryl Plummer, dyrektor działu systemów informatycznych (pracownik urzędu stanowego Floryda). I dodaje: "konkretne narzędzie powinno się stosować do rozwiązywania konkretnych problemów". Zasadzie tej hołduje Bank of Montreal w Kanadzie, który używa kombinacji dwóch narzędzi Windows (Visual Basic - Microsoft Corp. i PowerBuilder - Powersoft Corp.) oraz jednego narzędzia zorientowanego obiektowo (Visual Age - IBM), które generuje kod w języku Cobol. C. F. Wong, administrator bazy danych w tym banku mówi: "przy użyciu tradycyjnego narzędzia mielibyśmy do czynienia z dwoma tysiącami linii kodu; Visual Age generuje dziesięć linii kodu".

W porównaniu z narzędziami Windows narzędzia 3GL pozwalają użytkownikom tworzyć aplikacje w sposób bardziej elastyczny i stabilny. Wybór przyjętej metodyki zależy tu w dużej mierze od samego użytkownika. Może on też przywoływać do pracy całą gamę dodatkowych narzędzi, które pomagają mu pisać i testować aplikacje.

Ponieważ narzędzia 3GL stosowane są głównie w środowiskach jednorodnych, dlatego oferują dobrą stabilność przy pisaniu aplikacji i charakteryzują się największą chyba funkcjonalnością, mówi Rich Finkelstein, prezydent Performance Computing Inc. (Chicago). W jego opinii prostsze narzędzia stwarzają mniej problemów, a jeśli postępujemy uważnie stworzone przez nie aplikacje pracują bardzo niezawodnie.

Do wad narzędzi 3GL zaliczyć należy to, że tworzenie za ich pomocą aplikacji dla środowisk pracy klient/serwer jest bardzo skomplikowane. Chociaż samo narzędzie jest proste, to tworzenie aplikacji jest procesem dość złożonym.

Plumer twierdzi, że gdyby tylko mógł, to zastosowałby u siebie właśnie 3GL. "Spotkałem może trzech programistów, którzy zdolni są stworzyć system używając języka C++. Niestety, nie mieszkają oni na Florydzie.

Narzędzia pracujące pod systemem Windows

Narzędzia pracujące pod systemem Windows, takie jak PowerBuilder, mają tę zaletę, że pozwalają programiście budować bardzo szybko graficzne interfejsy użytkownika dla środowiska klient/serwer.

"PowerBuilder jest bardzo dobrym narzędziem" - mówi C.F. Wong. "Z jego pomocą można bardzo szybko budować nieduże aplikacje obsługujące poszczególne oddziały w firmie".

I chociaż PowerBuider jest odpowiednim narzędziem do tworzenia niewielkich aplikacji oddziałowych, "to jest to produkt mało skalowalny". "Używając go nie ma możliwości modelowania aplikacji i dopasowywania ich do potrzeb firmy" - dodaje Wong.

Chociaż nie wszyscy podzielają tę opinię, to panuje tu ogólny konsensus co do zdania, że obiektowe oferuje wiele istotnych zalet, predysponujących tego rodzaju narzędzia do tworzenia rozbudowanych projektów informatycznych dla środowisk klient/serwer.

"Jeśli użytkownik zamierza zbudować środowisko przetwarzania rozproszonego z prawdziwego zdarzenia, to potrzebuje narzędzia, które zatrze różnice między platformami poszczególnych systemów komputerowych" - jest to podstawowy powód, dla którego wybrać należy obiektowe - mówi J. Hurwitz. "Zadaniem infrastruktur zorientowanych obiektowo jest takie usytuowanie własnego systemu operacyjnego (na samym szczycie), aby był on nakładką zakrywającą właściwe systemy operacyjne związane organicznie z warstwą sprzętową komputera. Jest to bardzo pożądane w środowiskach pracy klient/serwer, w których występuje tyle sprzecznych wymagań" - dodaje J. Hurwitz.

Przyczyna, dla której narzędzia zorientowane obiektowo nadają się do budowania dużych projektów jest oczywista: możliwość wielokrotnego używania kodu aplikacji. "Przy projektowaniu dużych, skomplikowanych systemów narzędzia tego rodzaju sprawują się bardzo dobrze" - mówi Robert Jen, pracownik firmy konsultingowej Cambridge Technologies Partners (Cambridge, Mass). "Największe korzyści widoczne są przy projektowaniu dużego systemu czy kilku systemów jednocześnie".

"W grupie aplikacji zorientowanych obiektowo znajduje się wiele narzędzi, od takich jak Smalltalk (3GL) do tak rozbudowanych produktów jak Galaxy (Visix Software Inc.). Niestety, niewiele z nich nadaje się do tworzenia systemów informatycznych od podstaw. Narzędzia te nie są na tyle mocne, aby nadawały się do budowania silnych, przemysłowych aplikacji" - mówi Peggy Ledvina (Medvina Group Inc.).

D. Rodriquez (Polaroid Corp.) na pewno nie zgodziłby się z tą opinią. Mówi on, że używając systemu Omnis (Blyth Software Inc.) "...kontroluję każdy obiekt i piksel... Mogę inicjować dowolny proces przemieszczając znacznik myszy na odpowiedni piksel", mówi. I dodaje "to jest dopiero kontrola".

Omnis sięga dużo dalej. Pozwala nie tylko wydawać polecenia, ale kontroluje też zachowanie się całych aplikacji. Używając wbudowanych w Omnis narzędzi do zarządzania systemami, Rodriquez sprawuje pieczę nad całością systemu informatycznego. Może on więc sobie pozwolić na budowanie krytycznych aplikacji, które pracują na tyle stabilnie, że mogą być używane do obsługiwania głównych dla funkcjonowania firmy operacji.

Liczy się elastyczność

Wybierając dla swojego środowiska pracy narzędzia do tworzenia aplikacji pamiętać też należy o takim czynniku jak elastyczność, zauważa Brian Salzman, programista pracujący w biurze maklerskim na Wall Street, który zdecydował się na system Galaxy (Visix Software Inc.) Wybrał on ten produkt nie dlatego, że korzysta on z repozytorium czy zarządza nieźle pracą systemu informatycznego, ale dlatego, że można go doskonale przystosować do zarządzania pracą (eksploatowanej w tym biurze maklerskim) bazy danych firmy Sybase.

"Sybase dba o należytą współpracę wszystkich elementów w sieci" - dodaje B. Salzman. "Back end jest tym miejscem, gdzie odbywa się rzeczywiste przetwarzanie danych. To w jaki sposób są one później wyświetlane na ekranie jest sprawą drugorzędną".

Elastyczność i metodyka pozwalająca tworzyć w krótkim czasie aplikacje są tymi czynnikami, które zadecydowały o wybraniu przez Plummera (urząd stanowy we Florydzie) zestawu narzędzi LBMS oferowanego przez firmę LBMS Inc.

Używając systemu LBMS zmieniać można, poprzez zmianę platform czy funkcji, wewnętrzną budowę aplikacji. A wszystko to stosując tę samą metodykę pracy. Programista ma przy tym cały czas dostęp do tych elementów, które są mu aktualnie niezbędne i używa ich w sposób adekwatny do potrzeb. W dynamicznym środowisku przetwarzania danych w trybie klient/serwer rozwiązania takie mogą być prostym kluczem do osiągnięcia sukcesu.

Pracownik kluczem do sukcesu

Gdy Daryl Plummer objął dwa lata temu funkcję dyrektora systemu informatycznego w jego dziale (urząd stanowy Floryda) pracowało 97 osób. Jego centrum informatyczne (jedno z trzech największych w tym stanie) dysponowało tylko pięcioma komputerami PC. Nie było ani sieci LAN, ani serwerów systemu Unix.

Pierwszym zadaniem D. Plummera było dokupienie pewnej liczby komputerów PC, serwerów systemu Unix i zbudowanie sieci LAN. Kolejne zadanie, które wiązało się z wprowadzeniem do urzędu technologii przetwarzania danych typu klient/serwer i przekonaniem do niej pracowników, było przedsięwzięciem dużo trudniejszym i kosztowniejszym.

"Dostaliśmy w spuściźnie nie tylko przestarzały system imformatyczny, ale też eksploatujących go ludzi" - mówi D. Plummer. Aby wdrożyć do użytku technologię klient/serwer, "...należy też w odpowiedni sposób przygotować do tego pracowników".

Przede wszystkim należy zmienić ich przyzwyczajenia związane ze sposobem eksploatowania systemu informatycznego. Okazuje się, że na rynku pracy nie jest wcale tak łatwo znaleźć ludzi, którzy obeznani są z tą nową technologią. Dlatego większość firm staje przed trudnym zadaniem prowadzenia szkoleń, które przygotują pracowników do przejścia na nową technologię.

D. Plummer mówi, że wydał bardzo dużo pieniędzy na szkolenia pracowników, które wprowadzały ich krok po kroku w nieznany im, nowy świat przetwarzania rozproszonego. Zaznajamiali się oni z narzędziami i metodologią postępowania przy pisaniu aplikacji w nowym środowisku pracy.

Dobrze jest też uzupełnić kadrę pracowników o takie osoby, które są już obeznane z nową technologią i mogą ją propagować czy pomagać swoim kolegom w ewentualnych kłopotach.

Ale szkolenie pracowników to tylko połowa całej batalii. "Kolejnym zadaniem jest stworzenie na tyle atrakcyjnych warunków pracy, aby zatrzymać pracowników w firmie. W przeciwnym wypadku można się liczyć z tym, że zmienią pracodawcę" - mówi F. P. Earley, wiceprezydent firmy konsultingowej Cambridge Technology Partners (Cambridge, Mass.).

"Mamy już do czynienia u siebie z tym problemem" - zauważa D. Plummer. "Na tych pracowników, którzy mają już pewną wiedzę w tym temacie, czyhają od razu inne firmy".

Na szczęście problem nie sprowadza się tylko do pieniędzy, czyli zagwarantowania pracownikom odpowiednio wysokich uposażeń. Oferując pracownikowi atrakcyjne miejsce pracy i możliwość ciągłego rozwijania swoich kwalifikacji, można uchronić się w dużym stopniu przed przejęciem go przez inne firmy.

"Środowiska pracy klient/serwer są na tyle ciekawe i ekscytujące, że potrafią zainteresować i zatrzymać niejednego pracownika" - dodaje F.P. Earley.