Żywe procesy

W kolejnym artykule cyklu dochodzimy do, chyba najważniejszego i najbardziej praktycznego aspektu prac Alexandera, teorii procesów mówiącej jak budować dobre systemy. W informatyce widać wyraźny zwrot w kierunku opisywanych przez niego procesów, zwłaszcza w metodykach zwinnych.

W kolejnym artykule cyklu dochodzimy do, chyba najważniejszego i najbardziej praktycznego aspektu prac Alexandera, teorii procesów mówiącej jak budować dobre systemy. W informatyce widać wyraźny zwrot w kierunku opisywanych przez niego procesów, zwłaszcza w metodykach zwinnych.

U Alexandera proces odgrywa fundamentalną rolę, wynik końcowy jest tylko pochodną procesu. Nawet więcej, tym co istnieje są procesy, natomiast to co określamy jako stan końcowy jest tylko migawką stanu procesu. Stąd podejście dominujące w architekturze współczesnej - w dużej mierze odnosi się to też do informatyki - skupiające się na celach jest błędne i z zasady nie może doprowadzić do powstania dobrych struktur. W przypadku systemów złożonych, takich jak budynki czy systemy informatyczne, nie jest możliwe dokładne określenie, jakie będzie środowisko i jakie będą wymagania w przyszłości. Ponadto ani użytkownicy, ani osoby podejmujące decyzje nie są w stanie przewidzieć, jaki będzie wpływ wprowadzenia nowego systemu (nierzadkie są projekty informatyczne, w których po wdrożeniu okazuje się, że system nie spełnia wymagań użytkownika, ponieważ w trakcie tworzenia systemu zmieniły się lub nie przewidziano skutków wprowadzenia systemu w środowisku klienta). Wyimaginowany stan końcowy narzuca ograniczenia często niemające związku z rzeczywistym problemem. W rezultacie nierzeczywiste ograniczenia często dominują rzeczywiste potrzeby.

W projekcie informatycznym specyfikację wymagań często traktuje się jako ostateczny opis tworzonego systemu, zapominając, że jest to tylko bardzo niedoskonały model rzeczywistych wymagań. Nie chodzi o to, że opis sytemu jest niepotrzebny, musimy wiedzieć, co robimy, jednak tworzenie dokładnej specyfikacji wymagań na początku projektu wymusza podejmowanie wielu decyzji na zbyt wczesnym etapie, kiedy nie mamy jeszcze wystarczająco dużo informacji, decyzje takie z konieczności są arbitralne. Nawet jeżeli mamy dobry proces zarządzania zmianami, decyzje takie narzucają ograniczenia, również w sposobie myślenia o systemie, które później bardzo trudno usunąć.

Istotą znaczenia procesów opisywanych przez Alexandera jest to, że prowadzą one do powstania systemów, które zawierają minimalną liczbę błędów, są procesami maksymalnie bliskimi rzeczywistości, wykorzystującymi jak najwięcej informacji zwrotnych.

Uniwersalność

Według Alexandera istnieje tylko wąska klasa procesów, nazywanych procesami żywymi, prowadzących do dobrych systemów, zarówno systemów naturalnych, jak i tworzonych przez człowieka. Istnienie jednego uniwersalnego rodzaju procesów, które mogą być stosowane do budowy domu, wyrobu krzesła, tworzenia systemu informatycznego, formacji galaktyk czy rozwoju zarodka, jest dużym zaskoczeniem (nie znaczy to, że istnieje tylko jeden idealny proces, lecz że proces, jeżeli ma się zakończyć sukcesem, musi spełniać wiele warunków niezależnych od dziedziny, w której jest stosowany). Podobnie jak w przypadku opisywanych w poprzednim artykule cech podstawowych, procesy takie są rozpowszechnione w naturze.

Adaptacja krok po kroku i nieprzewidywalność

Jedną z najbardziej podstawowych właściwości procesu żywego jest to, że posuwa się do przodu stopniowo, krok po kroku - przy ciągłym sprzężeniu zwrotnym - w kierunku większej całości, spójności i adaptacji. Jednak jeżeli sprzężenie zwrotne i adaptacje mają być istotne, rezultat musi być nieprzewidywalny. Z definicji nie jest możliwe przewidzenie, jaką drogą podąży proces, ponieważ informacje potrzebne do wykonania danego kroku w procesie nie są znane, dopóki nie nadejdzie jego kolej. Kolejny krok zależy zarówno od wewnętrznego stanu wyłaniającej się całości, jak i zewnętrznego, zmieniającego się kontekstu. Ewolucja systemów złożonych z natury jest bardzo wrażliwa na drobne nawet zmiany, czego przykładem jest choćby słynny efekt motyla. Przy takim podejściu świat statyczny, w którym przyszłość jest planowana, musi zostać zastąpiony światem dynamicznym, otwartym, zmiennym, nieprzewidywalnym, lecz też światem znacznie lepszych systemów.

Sekwencje generatywne

Inną ważną cechą procesów żywych jest generatywność, tzn. nie opierają się one na planach, projektach gotowego systemu, lecz raczej na opisie, krok po kroku, działania, które trzeba wykonać, żeby wygenerować system. Innymi słowy, ważny jest opis nie jak gotowy system wygląda, lecz jak go zrobić. W taki sposób działa np. DNA. Lewis Wolpert w książce Principles of Development wyjaśnia to na przykładzie origami: "Składając kartkę papieru w różnych kierunkach, łatwo zrobić kapelusz lub ptaka. Szczegółowe opisanie końcowej formy ze złożonymi relacjami pomiędzy częściami jest bardzo trudne i niezbyt przydatne w wyjaśnieniu, jak taką formę osiągnąć. Znacznie bardziej użyteczne i prostsze do sformułowania są instrukcje mówiące jak zginać, krok po kroku, kartkę papieru". Według Alexandera, dobre systemy złożone zawsze są strukturami generowanymi w ten sposób.

Kolejne kroki procesu żywego Alexander nazywa sekwencją generatywną. Ideę sekwencji można odnaleźć w pierwszych pracach o wzorcach - sekwencje wzorców - w takiej postaci są one też wykorzystywane np. przez Copleina i Harrisa w książce Organizational Patterns for Agile Development (Wzorce organizacyjne dla metodyk zwinnych). Jest to również temat, nad którym teraz Alexander intensywnie pracuje.

Struktura procesu żywego

Alexander przyznaje, że stworzona przez niego teoria procesów żywych, choć ma ogromy potencjał, jest tylko przybliżeniem idei, która musi być jeszcze przez dziesięciolecia rozwijana. Jednak niezależnie od tego, jak rozwinie się dalej zrozumienie żywych procesów, już na tym etapie można zdefiniować konieczne cechy takich procesów. Adaptacja krok po kroku i sekwencje generatywne to tylko dwie z dziesięciu opisywanych przez Alexandera takich cech.

Proces podstawowy

Każdy proces żywy jest kombinacją lub kombinacją kombinacji jednego uniwersalnego procesu, nazwanego przez Alexandera procesem podstawowym. Procesowi temu będzie poświęcony kolejny artykuł.

<hr>W Polsce związkami prac Alexandera z informatyką zajmuje się projekt Humanistyczna Inżynieria Oprogramowania (http://www.projekt-hio.info ).

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200