3 sierpnia 2010

Podział na tych co robią i tych co wymagają

Bardzo dobrze jest, gdy osoba która określa w jaki sposób wykonać pewną pracę i osoba która tę pracę wykonuje, to są różne osoby. Bardzo dobrze dla jakości ostatecznego produktu, niezależnie od tego co tym produktem jest.

Człowiek ma tendencję do chodzenia na skróty. Nawet najambitniejsi z czasem zaczną zniżać swe loty, jeśli to oni sami będą decydowali o tym jak zrobić to co robią i jeśli nikt nie będzie kontrolował jakości ich pracy. Najłatwiejsza do pokonania ścieżka nigdy nie prowadzi na najwyższy szczyt.

Przekładając powyższe na język projektów IT - Analityk, który określi jak to co powstaje ma działać, Architekt, który zadecyduje jak to coś należy zaimplementować i Programista, który to implementować będzie to powinny być różne osoby. Tester, który przetestuje finalne rozwiązanie to w żadnym razie nie może być Programista, który to rozwiązanie implementował. Ważną rolą w procesie projektowym jest także Kierownik Projektu i także ta rola nie powinna być łączona z pozostałymi.

Idealnie jest, gdy każda z ról obsadzona jest przez inną osobę, ale jeśli to nie jest możliwe, to powinniśmy starać się co najmniej o to, aby nikt nie robił w dalszej fazie projektowej tego, co sobie sam w poprzedniej fazie zdefiniował. Najważniejsze jest więc, żeby nie byli tą samą osobą Analityk i Architekt, Architekt i Programista, Programista i Tester. Kierownik projektu nie powinien być w żadnym razie Architektem. Kierownikowi zależy przecież głównie na tym, żeby było szybko. Zadaniem architekta jest zadbać o to, żeby było dobrze. Te dwa cele często niestety kłócą się ze sobą. Patrząc długofalowo jest może nawet wprost przeciwnie, ale w rzeczywistości rzadko się tak niestety patrzy, a już na pewno nie patrzą tak kierownicy projektów, których głównym celem jest przecież wykonać dany projekt.

9 czerwca 2010

Co to jest EA na przykładzie metody TOGAF

Jakiś czas temu moim światem zawodowym zawładnął trzyliterowy skrót SOA. Najbliższy czas upłynie mi zdaje się nad zgłębianiem sensu akronimu EA (akr. Enterprise Architecture). Kolejny akronim, o którym zaczyna się robić głośno… a może i było o nim głośno już od dawna, tyle że ja nie słyszałem, jako że stoję teraz nieco z boku, tj. w firmie która wdrożenia nowinek IT raczej kupuje a nie sprzedaje, w związku z czym nowinki te docierają do niej troszkę wolniej. W każdym razie wygląda na to, że potrzebuje rozeznać się nieco lepiej w temacie, co niniejszym wspólnie z wami czynię.

No więc cóż kryje się pod pojęciem Enterprise Architecture? Co to jest architektura IT wszyscy my – a więc profesjonaliści IT – dobrze rozumiemy. Architektura IT to sposób zorganizowania IT, tj.: komponenty IT, relacje między tymi komponentami oraz relacje komponentów z otoczeniem.

Architektura jest to – w ogólności – podział całości na części, ze zrozumieniem funkcji każdej z tych części i wzajemnych relacji poszczególnych części oraz relacji tych części ze światem zewnętrznym, a więc z tym co jest poza naszą całością.

A co to jest Enterprise? Enterprise to jest zbiór jednostek (firm, działów jednej firmy, oddziałów, agencji, itd.) mających wspólne cele i funkcjonujących jako pewnego rodzaju całość.

Enterprise Architecture jest więc podziałem na części korporacji. Próbą zrozumienia jak funkcjonuje korporacja i próbą planowego i celowego zarządzania zmianami w tejże korporacji, włączając w to, ale nie ograniczając się do IT.

Enterprise Architecture jest pomysłem na to, aby zanim przystąpi się do jakichkolwiek działań w obrębie IT, zastanowić się poważnie nad tym, po co te działania w IT miałyby być robione i jak to co ostatecznie będzie zrobione ma wyglądać.

Oczywistym jest, że rolą IT jest wspieranie funkcjonowania firmy w tym sensie, że powinno ono wytwarzać narzędzia ułatwiające to funkcjonowanie. Zanim przystąpimy do zastanawiania się, jak powinno wyglądać nasze IT, a więc zanim przystąpimy do rozważań nad Architekturą IT, powinniśmy zastanowić się, jak chcemy aby wyglądał nasz biznes, tj. nad architekturą biznesu, przedsiębiorstwa jako takiego. To jest właśnie sens EA. W sumie rzecz zdaje się dość oczywista, tyle że jak zwykle diabeł tkwi w szczegółach. Ważne jest, aby robić to w sposób systematyczny i planowy a co za tym idzie rozumny i celowy.

Dobrym zobrazowaniem idei EA jest pobieżne choćby przyjrzenie się metodzie TOGAF (The Open Group Architecture Framework). Po pierwsze, mówi się tam, że Architektura Przedsiębiorstwa to Architektura Biznesowa, Architektura Danych, Architektura Aplikacji i Architektura Infrastruktury IT.

Architektura Biznesowa to sposób funkcjonowania korporacji, a więc struktura organizacyjna, strategia biznesowa i kluczowe procesy biznesowe.

Architektura Danych to typy i źródła oraz cykl życia danych niezbędnych do funkcjonowania korporacji. Zauważmy, że to właśnie dane są najważniejsze. Aplikacje mają za zadanie jedynie wspomagać zbieranie i przetwarzanie oraz przeszukiwanie tych danych. To jakie to są dane i w jaki sposób są przetwarzane w dużym stopniu determinuje sposób konstrukcji oprogramowania, które te dane ma za zadanie przetwarzać. Architektura Danych jest łącznikiem pomiędzy Architekturą Biznesu i Architekturą IT.

Architektura Aplikacji to znaczna część tego co można rozumieć pod pojęciem Architektury IT. Jest to sposób organizacji oprogramowania, tj. podział na poszczególne aplikacje i integracja tych aplikacji tak aby wspólnie zapewniały zaplanowane przetwarzanie danych i wspierały istniejące procesy biznesowe.

Architektura Infrastruktury IT to rozwiązania techniczne zapewniające funkcjonowanie oprogramowania zgodne z przyjętymi założeniami i istniejącymi możliwościami.

TOGAF opisuje także metodę rozwoju architektury, tj. Architecture Development Method (ADM). Metoda ta złożona jest z kilku kroków kojarzących się z cyklem rozwoju oprogramowania, tyle że tylko część etapów związana jest bezpośrednio z oprogramowaniem.

Pierwsza faza metody ADM to w wielkim skrócie ustalenie kontekstu biznesowego i konsolidacja wokół inicjatywy wszystkich kluczowych interesariuszy.

W fazie drugiej tworzona jest wizja korporacji do której dążymy. Jest to kluczowy krok z punktu widzenia celowości pracy. W końcu każda praca rozwojowa powinna być nakierowana na osiągnięcie jakiegoś konkretnego celu mającego znaczenie z perspektywy korporacji jako całości. Jeśli miało by się na tym etapie okazać, że tak naprawdę nikt nie wie do czego omawiana inicjatywa dąży, to jest to bardzo dobra przesłanka, aby tej inicjatywy szybko zaprzestać.

Kolejny etap to opisanie istniejącej Architektury Biznesowej oraz Architektury Biznesowej docelowej, a więc tej do której dążymy. To na tym etapie zaczyna być widoczne, co trzeba będzie zrobić. Są to zmiany na poziomie procesów biznesowych, a więc trzeba to będzie jeszcze przełożyć na zmiany w IT, ale wstępny zakres tych zmian zaczyna być już widoczny. Nie zapominajmy też, że projekt IT to tylko część całego projektu, który może zawierać także takie elementy jak reorganizacja. Po tym etapie ma być wiadomym co trzeba zmienić w firmie, nie tylko w IT.

Dalsze etapy to właśnie rzutowanie zmian w biznesie na zmiany w IT, a więc opracowanie niezbędnego zakresu zmian Architektury Danych, Architektury Aplikacji i Architektury Infrastruktury IT oraz implementacja i wdrożenie tych zmian. Ten fragment pracy związany jest już stricte z rozwojem oprogramowania.

Już dawno zorientowałem się, że użyte technologie mają – paradoksalnie – najmniej decydujący wpływ na ostateczny rezultat projektu IT. Jeśli to nie technologia decyduje o powodzeniu lub porażce projektów technologicznych to w takim razie co? Właśnie sprawność zarządzania architekturą korporacji, bo takie zarządzanie i taka architektura w każdej korporacji istnieje, tyle że nader często jest to architektura niekontrolowana, powstała i zarządzana samorzutnie. Jeśli kogoś interesuje rozwój IT, to w pierwszym rzędzie powinien zająć się rozwojem architektury. Im szerzej pojęta architektura to będzie, tym lepiej.

6 maja 2010

SOA to tylko element architektury IT

SOA to tylko jeden z elementów architektury – jeden z wielu drogowskazów, uczących nas jak należy organizować systemy informatyczne przedsiębiorstwa, by były takie jakimi chcielibyśmy je widzieć. Może to się wydawać stwierdzeniem dość banalnym, ale wynika z niego jedna fundamentalna prawda, bez zrozumienia której nie mamy co myśleć o wdrożeniu SOA. Nie da się wdrożyć SOA, jeśli nie wdrożymy wpierw – albo co najmniej równolegle – procesów zarządzania globalnego architekturą IT!

SOA nie może się rozwijać w oderwaniu od rozwoju poszczególnych systemów dziedzinowych, które udostępniają usługi będące fundamentem SOA. Jeśli systemy dziedzinowe będą budowane bez myślenia o uniwersalności i re-używalności, to nie wiele re-używalności i uniwersalności uda nam się osiągnąć na poziomie usług.

Jeśli współpracujące systemy będą ze sobą powiązane w sposób logiczny, tj. jeden będzie budowany ściśle pod kątem drugiego, to zupełnie niewiele pomoże nam, że komunikację pomiędzy tymi systemami zaimplementujemy jako wywoływanie usług. Może to dobrze wyglądać z lotu ptaka, ale to nie jest SOA!

9 marca 2010

Mam SCWCD

W zeszły piątek zdobyłem nowe trofeum - certyfikat SCWCD, EE 5. Kolekcja rośnie. Wynik egzaminu bardzo dobry, aż 94 %. Trochę nawet ponad to czego bym się spodziewał.

Jakie wrażenia? W sumie było dosyć podobnie jak na egzaminie do SCJP. Uprzedzając pytania - uczyłem się z książki "Head First Servlets & JSP". Dodatkowo przerobiłem testy z pakietu WGS-PREX-J083C od SUNa. Testy kupiłem w promocji - pisał o niej Jacek w artykule "Pakiety certyfikacyjne od Suna za 600 PLN (...)" - razem z Voucherem w pakiecie za 600 zł. BTW - dzięki Jacek. Nie dość że dzięki tobie miałem dostęp do dobrych testów przygotowujących to jeszcze zaoszczędziłem 150 zł na Voucherze. Kolejny dowód na to, że warto czytać blogi o Javie :)

Poniżej raport z egzaminu. Co trochę mnie zaskoczyło błędy popełniłem w częściach z których czuję się dosyć mocny - może to właśnie ta pewność siebie mnie zgubiła? Może troszkę za mało się zastanawiałem nad odpowiedziami?