Architektury, komponenty i uparty Polak

Taką abstrakcją średniego poziomu jest komponent. Wizja promowana przez wiele firm, np. IBM, Sun czy Microsoft jest taka, że nie będzie już aplikacji, czyli ciężkich, monolitycznych programów działających na konkretnej maszynie. Zamiast tego będziemy, przy użyciu usług sieciowych i rozproszonych agentów on-line, komponować odpowiednie dla nas rozwiązanie. Czy ta wizja jest pana zdaniem realna? W jakiej perspektywie?

Ta wizja jest realna od długiego czasu i nie ma w niej nic nowego. Jak zwykle, stare rozwiązania opakowywane są na nowo, nadawane im są chwytliwe nazwy i sprzedawane przez firmy jako nowe odkrycia. Tak samo jest w przypadku usług sieciowych. Komponent (nawiasem mówiąc, słowo tak samo nadużyte jak "architektura" i "system") i idea budowania systemów z komponentów nie mają nic wspólnego z tym czy innym narzędziem, a z tym, jak system jest zaprojektowany, jaka jest jego architektura. Jeżeli ktoś zaprojektuje system tak, że będzie się składał z autonomicznych elementów o dobrze określonej odpowiedzialności i opisze zależności między nimi, to będzie potrafił również te elementy indywidualnie zbudować, przetestować a potem skomponować je w system. Jeżeli dam komuś garść komponentów i powiemy: "zbuduj z tego system", to jedyna szansa, że będzie to możliwe, to ze były one budowane od początku z myślą o wzajemnej kompozycji.

Nie wierzę jednak w to, że będzie istnieć uniwersalna biblioteka komponentów, z której wszyscy będą korzystać. Proszę dać dwóm ludziom to samo zadanie i te same komponenty, a jeden z nich zaprojektuje system, w którym rzeczywiście elementy można dowolnie wymieniać, bo dobrze zaprojektowana jest jego architektura, a drugi zrobi system jak spaghetti - jeżeli wyciągnie się jeden element, to wszystkie inne też trzeba będzie wymienić.

Jednak by budować systemy oparte o komponenty potrzeba jeszcze standardów. Pierwszym takim standardem była CORBA, ale dziś "na fali" są XML, SOAP, UDDI, itd. Do tego są dobre narzędzia - a to przecież bardzo ważna rzecz. Pamiętam, próbowałem kiedyś pisać aplikacje używające standardu CORBA, ale to po prostu nie nadawało się do użytku.

Przez parę lat byłem członkiem OMG i należałem do różnych grup zadaniowych, więc akurat o standardzie CORBA mogę sporo powiedzieć. Jeżeli na niego spojrzeć, to ważne są tak naprawdę protokół komunikacji oraz system typów. CORBA mówi tylko o tym, jak komponenty muszą się komunikować, żeby się dogadać.

SOAP powstał z innego powodu. Microsoft po prostu nie mógł rozwiązać problemu komunikacji po porcie 80, obsługującym HTTP. Wymyślili więc, że będą wszystko przesyłać jako łańcuchy znakowe zapisane w XML. I nagle okazało się, że to można także wykorzystać do celów podobnych do tych, dla których powstała CORBA. Owszem, jest to prostsze i wiele firm szybko zrobiło do tego narzędzia, ale jest wolniejsze.

OMG popełniło wiele błędów, ale nie w technologii. Całe narzędzie WebSphere działa w oparciu o standard CORBA. Gdyby parę lat temu były równie dobre narzędzia do CORBA'y, które są dziś, to nikt by nigdy nie usłyszał o SOAP.

Mówiliśmy o technologii, czas na zarządzanie. Tom DeMarco mówi, że większość problemów projektów informatycznych nie jest pochodną technologii, a zespołów. Czy widzi Pan w środowisku, że ludzie zaczynają to rozumieć? Jak sobie z tym radzą?

W pełni zgadzam się z Tomem DeMarco. Wdaliśmy się kiedyś w dyskusję o narzędziach i mój przyjaciel z firmy Rational Philippe Kruchten, twórca RUP, powiedział: "Jakie narzędzia? Przecież to nie narzędzia robią systemy, a ludzie!"

Budowa systemów to gra zarówno zespołowa i indywidualna. Im bardziej skomplikowany i im większy system, tym bardziej skomplikowana gra. Ci od gry indywidualnej i ci od zespołowej grają z innych pobudek. Pierwsi, indywidualni programiści i projektanci, po prostu dobrze się bawią i samo robienie ciekawego software'u daje im satysfakcję. Ci drudzy, nazwijmy ich menedżerami, grają w tę grę dla pieniędzy - oni chcą robić biznes - i próbują wstawić tych indywidualnych graczy w ustalone szablony, spoza których nie idzie się wychylić. Tę sprzeczność interesów często widać na dużych projektach biznesowych.

Niepokojący wydaje mi się fakt, że to środowisko produkuje nowy gatunek ludzi. To typowi introwertycy, ludzie, którzy są nieomal społecznie upośledzeni. Siedzą w swoich kubikach sam na sam ze swoimi zabawkami, ale gdyby ich wyrwać z tego środowiska, to często są zagubieni.


TOP 200