Piętnaście cech podstawowych

W poprzednim artykule przyglądaliśmy się pojęciu centrów i całości - kluczowym elementom teorii Alexandera. W niniejszym zajmiemy się jakością systemów.

W poprzednim artykule przyglądaliśmy się pojęciu centrów i całości - kluczowym elementom teorii Alexandera. W niniejszym zajmiemy się jakością systemów.

Co odróżnia dobry system od złego? Alexander próbował odpowiedzieć na pytanie, czy można znaleźć cechy strukturalne, które zazwyczaj pojawiają się w dobrych systemach, a których brakuje w złych? Innymi słowy, czy można znaleźć cechy strukturalne, których występowanie jest skorelowane z jakością systemów? Przez dwadzieścia lat, przez 2, 3 godziny dziennie porównywał budynki, kafelki, okna, ganki, ulice, przedmioty codziennego użytku i zadawał sobie pytanie, jakie są wspólne cechy tych rzeczy, które mają więcej życia (są lepsze, bardziej funkcjonalne i przyjazne dla człowieka).

Udało mu się zidentyfikować piętnaście cech strukturalnych - nazwanych cechami podstawowymi - pojawiających się regularnie w systemach, które można uznać za dobre (co to jest dobry system to oddzielna sprawa, której też poświęcił dużo miejsca).

Cechy podstawowe okazały się bardzo uniwersalne, są normą w naturze, można je spotkać w fizyce, chemii, biologii, geologii. Wydaje się, że pojawianie się ich jest jednym z najbardziej uniwersalnych praw natury. Szczególnie widoczne są w systemach o dużym stopniu złożoności, na przykład organizmach żywych. Istnieje też ścisły związek cech z symetriami i procesem łamania symetrii znanymi z fizyki. Podejście od tej strony do wzorców i nowszych teorii Alexandera na gruncie informatyki prezentują na przykład nowe prace Jamesa Copliena i Lipinga Zhao.

Piętnaście cech podstawowych

Przykłady cech podstawowych to: Poziomy skali, Gradient, Lokalne symetrie, Kontrast. Na przykład cecha Poziomy skali mówi, że w systemie powinny być elementy (centra) w różnych skalach, a różnica między skalami nie powinna być zbyt duża. Wiele struktur w informatyce służy właśnie zachowaniu tej cechy. Na początku program komputerowy składał się z instrukcji (czyli był jeden poziom skali), następnie zaczęto stosować podprogramy (wprowadzenie dodatkowego poziomu skali), moduły (kolejny poziom skali), później podsystemy, klasy, pakiety itd. Powstawało coraz więcej struktur pozwalających tworzyć lepsze poziomy skali. Wiele zasad projektowania prowadzi również do powstania dobrej hierarchii skal. Co ciekawe, motywacja dla powstania tych struktur i zasad często nie dotyczy bezpośrednio tworzenia hierarchii w systemie - może to być efekt uboczny dbałości o takie cechy systemu, jak łatwość ponownego użycia, zrozumiałość kodu czy testowalność. Jest to ogólna, bardzo zastanawiająca własność cech podstawowych. Choć są one formalne i abstrakcyjne, to pojawiają się jako rezultat dbałości o cele funkcjonalne.

Inną cechą - uważaną przez Alexandera za jedną z najważniejszych - jest Nierozłączność (Not-Separateness) - dobry system (całość) jest połączony ze swoim środowiskiem, nie jest oddzielony, wyizolowany, innymi słowy powinien harmonijnie współgrać z większą całością. Jeżeli piękną góralską chatę postawimy wśród nowoczesnych apartamentowców, będzie to równie "od czapy" jak postawienie apartamentowca w górach. Jeżeli klasa jest świetnie zaimplementowana, bezbłędna, wydajna, napisana w przejrzysty sposób itd., ale stosuje inną konwencję nazewniczą, inną kolejność argumentów w metodach (np. kontekst w metodach innych klas przekazywany jest jako ostatni argument, a w tej jako pierwszy), powoduje to, że system jest trudniejszy w zrozumieniu, utrzymaniu, łatwiej powstają w nim błędy (w takich sytuacjach, jeżeli zmiana klasy nie jest możliwa, często dostosowuje się interfejs klasy za pomocą wzorca Fasada). Jeżeli wdrażamy system informatyczny w organizacji, to może on nie przyjąć się nie ze względu na braki w funkcjonalności, lecz na skutek niedostosowania do stylu pracy w organizacji.

Wszystkie cechy to: Poziomy skali, Silne centra, Granice, Naprzemienne powtórzenia, Pozytywna przestrzeń, Dobry kształt, Lokalne symetrie, Silne splecenie i niejednoznaczność, Kontrast, Gradienty, Nierówność, Echa, Pustka, Prostota i wewnętrzna cisza, Nierozłączność.

Piętnaście cech w informatyce

Systemy badane przez Alexandera są systemami materialnymi i przestrzennymi; na ile określone przez niego cechy podstawowe stosują się także do systemów informatycznych jest jeszcze kwestią dalszych badań. Jednak dokładne przyjrzenie się programom od strony cech pokazuje, że wiele z nich rzeczywiście jest skorelowanych z jakością programów, wiele dobrych praktyk programistycznych prowadzi do pojawiania się tych cech.

Być może katalog cech dla systemów informatycznych będzie inny (np. Alexander stworzył też teorię kolorów w malarstwie, gdzie uzyskał trochę odmienny zestaw cech), jednak nawet stosowanie oryginalnych cech wydaje się bardzo obiecujące, dające uniwersalny punkt odniesienia zarówno do oceny jakości, jak i podejmowania decyzji projektowych.

Piętnaście cech i centra

Cechy podstawowe nie są jednak pojęciami pierwotnymi w teorii Alexandera, są to podstawowe sposoby wzmacniania centrów (o centrach i całości dokładniej pisałem w poprzednim artykule).

To co jest naprawdę ważne to całość i centra, natomiast cechy podstawowe z jednej strony mogą być używane jako wyrocznia mówiąca o jakości systemu, z drugiej zaś stanowią przygotowanie do pracy z centrami. Według Alexandera nauczenie się tworzenia centrów zajmuje trzy, pięć, może dziesięć lat, w tym czasie cechy stanowią bardzo użyteczne narzędzie ułatwiające skupienie się na centrach.

Proces

Prace Alexandera byłyby niekompletne, gdyby nie próbowały odpowiedzieć na pytanie, jak tworzyć dobre systemy, w których występuje piętnaście cech. Jest to chyba najważniejsza i najbardziej praktyczna część teorii Alexandera - teoria procesów żywych. Napiszę o nich w kolejnym artykule.

<hr>W Polsce związkami prac Alexandra 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