poniedziałek, 16 czerwca 2008

OOA/OOD i Air Traffic Control

Metoda obiektowa projektowania i analizy software'u ma w opinii zwolenników wprowadzić dyscyplinę i porządek do procesu tworzenia oprogramowania. W rzeczywistości wydaje się być jednak za mało ścisła. W klasycznych książkach Coada i Yourdona i na wykładach w uczelniach technicznych, które opierają się na tej obiektowej tradycji proponuje się poszukiwanie klas i obiektów w fizycznej rzeczywistości i odwzorowanie ich w projekcie. Zawsze mnie to dziwiło, jakim cudem struktura rzeczywistości ma się tak prosto przenieść na strukturę programu. Ma to sens, owszem, ale tylko w symulacji komputerowej. Należy zawsze pamiętać o tym, że obiekty w programie to odwzorowanie naszej wiedzy, a nie stanu rzeczywistego obiektu. I tak, na przykład, w programie używanym w aptece, owszem, mamy obiekt klasy "pacjent" a także "lekarstwo", ale nie będzie metody "pacjent.zażyj( lekarstwo )", bo to tylko w rzeczywistości pacjenci zażywają lekarstwa. W komputerze nie.

W książce Coada i Yourdona autorzy posługują się przykładem wziętym z życia: systemem kontroli ruchu powietrznego. Pełno tam tras, radarów i samolotów. Kiedy to czytałem, nie wiedziałem, dlaczego akurat te radary są takie ważne. Potem, parę lat później, przypadkowo natrafiłem na klasyczną unixową grę tekstową atc. Był to prosty symulator konsoli radaru kontrolera ruchu powietrznego. Na ekranie powyżej widzimy, jak to działa. Właśnie w mój obszar wleciały dwa samoloty: b7 i A7. A7 zmierza w stronę wyjścia E1, a b7 w stronę E4 (widzimy ten "plan lotu" w tabelce po prawej). Oba znajdują się na wysokości 7 tys. stóp (oznacza to siódemka w symbolu samolotu). Należy, wydając odpowiednie komendy dotyczące kierunku ruchu i wysokości lotu doprowadzić wszystkie samoloty do ich przeznaczenia i nie dopuścić do zderzenia. Po kilkunastu minutach konsola radaru zawiera kilka lub kilkanaście samolotów, a człowiek jest znużony z powodu ciągłego napięcia. Ponieważ sterowanie wyimaginowanymi samolotami jest bardzo zajmujące, postarałem się o zdobycie bardziej rozbudowanych, graficznych programów, w końcu zacząłem używać darmowego symulatora firmy Xavius. Prawdę mówiąc ze wszystkich gier komputerowych, jakie miałem w życiu poznać (cóż poznałem ich niewiele w porównaniu z moimi kolegami) ten rodzaj wciągnął mnie najbardziej. I siedząc godzinami w najwyższym napięciu nad sektorem powietrznym Chicago lub Los Angeles powoli uzyskiwałem wgląd w hierarchię klas Coada i Yourdona dotyczącą dziedziny ruchu powietrznego. Jedno jest pewne: aby zobaczyć te klasy, trzeba choć trochę poznać tematykę, której dotyczy dany projekt. Prymitywna gra atc(6) okazała się bardzo zbliżona w charakterze do tych złożonych. Najwidoczniej jej autor wykonał kawał dobrej analizy obiektowej ...

Brak komentarzy: