Z notesem w ręku

Subskrybuj RSS A A A
26 sierpnia 2002
Tomasz Marcinek

Na pytanie o optymalny zakres i stopień szczegółowości dokumentacji systemu informatycznego nie ma gotowej odpowiedzi. Skąpa dokumentacja stwarza ryzyko, zbyt rozbudowana - stratę czasu i pieniędzy. Czynnikami, które pomagają określić wymagania odnośnie do dokumentacji, są rodzaj projektu i jego skala. Najlepszym drogowskazem jest jednak określenie, kto i w jakim celu będzie jej w przyszłości używać.

Dorobek tradycji...

Tradycyjne metodyki tworzenia oprogramowania kładą nacisk na stronę formalną dokumentowania kodu. Wymagają zachowania kolejności etapów: analizy, projektowania, kodowania i testowania, a także precyzyjnego opisywania poszczególnych partii kodu: czego dotyczą, jakie mają parametry oraz jak wyglądają ich powiązania z pozostałymi częściami składowymi projektu. Nie można nie zauważyć, że wiele z tych założeń wyrosło na gruncie programowania proceduralnego, w którym struktura kodu i zależności między jego fragmentami często nie były widoczne od razu.

Przejrzystość kodu - czasem wręcz w znaczeniu dosłownym - zależała prawie wyłącznie od dobrej woli programisty. A zatem, ponieważ do nasilenia tej ostatniej można śmiało zastosować rozkład statystyczny opisany krzywą Gaussa-Laplace'a, wprowadzenie dobrej praktyki w postaci projektu formalnego oraz szczegółowych komentarzy było koniecznością. Wypada też dodać, że zręby wymogów dotyczących dokumentowania powstawały w czasach, kiedy programowanie było zajęciem elitarnym, zarezerwowanym dla ludzi ze środowisk uniwersyteckich. Pragmatyzm biznesowy nie był wtedy głównym wyznacznikiem sposobu pracy programisty.

Wypracowany przez wiele lat dorobek intelektualny projektantów i programistów, a także nauczycieli ery proceduralnej został przez nich przeniesiony na grunt programowania zorientowanego obiektowo. W tym właśnie należy upatrywać zarodka większości obecnych sporów o dokumentowanie.

... kontra nowe wyzwania

Koronnym argumentem przeciwników szczegółowego dokumentowania jest stwierdzenie, że z dokumentacji tworzonej według zasad tradycyjnych w praktyce rzadko się dziś korzysta. W dużej mierze dlatego że większość informacji zawartych niegdyś w komentarzach wynika dziś wprost ze struktury kodu. Wystarczy więc zerknąć i wszystko jest jasne. Kod obiektowy rzeczywiście ma stosunkowo prostą, łatwą do zrozumienia strukturę i znalezienie współzależności między jego poszczególnymi partiami nie stanowi większego problemu. Odnajdowaniu współzależności w kodzie obiektowym służy też mechanizm dziedziczenia cech obiektów nadrzędnych przez obiekty podrzędne.

Kolejny powód, dla którego tradycyjne dokumentowanie straciło na znaczeniu, to zasadnicze zmiany w warsztacie pracy programisty. Kod pisany "odręcznie" to dzisiaj tylko pewien fragment. Większość kodu - w odniesieniu do typowych aplikacji - jest generowana automatycznie. Daleko idąca automatyzacja pozwala nadawać funkcjom, atrybutom i zmiennym zrozumiałe nazwy, a wzrost mocy obliczeniowej komputerów sprawił, że objętość pliku z kodem nie ma dziś - tak jak niegdyś - większego znaczenia. Współczesne narzędzia prowadzą programistę za rękę. Automatycznie formatują kod, proponują listy atrybutów i samoczynnie dokańczają wyrażenia, o wskazywaniu czy nawet samoczynnym poprawianiu błędów składni nie wspominając. Co więcej, wystarczy kilka kliknięć myszą, aby na podstawie analizy kodu narzędzia stworzyły szkielet dokumentacji według określonych standardów. Na życzenie przedstawią nawet strukturę i zależności projektu w formie graficznej.

Jako że oprogramowanie stało się towarem powszechnego użytku, istotne zmiany zaszły w metodach jego projektowania. Sytuacja, w której analiza, projektowanie, kodowanie i testowanie następują kolejno po sobie, zdarza się w praktyce bardzo rzadko. Znakiem czasu jest zachodzenie etapów na siebie, a nawet ich zrównoleglenie. Od rozpoczęcia negocjacji do oddania systemu do użytku wstępny projekt systemu podlega tak wielu zmianom, że jego formalizacja - zwłaszcza zbyt wczesna - jest bardziej utrudnieniem niż pomocą. Aby tego uniknąć, we wczesnym okresie projektowania tworzy się prototypy. Z konieczności rozszerzono więc zakres i częstotliwość testowania - trwa ono praktycznie przez cały czas tworzenia systemu, a także po oddaniu go do użytku.

Wraz z rozwojem Internetu pojawiło się sporo projektów o jednorazowym, niepowtarzalnym charakterze. Przykładem mogą być wydarzenia medialne, np. olimpiada, lub reklamowe - witryna promująca nowy model produktu. W takich przypadkach dodatkowe zabiegi dokumentacyjne po prostu trudno usprawiedliwić. W projektach internetowych relatywnie częściej niż w przypadku aplikacji klient/serwer zmieniają się duże fragmenty kodu. Ponadto w projektach tych prawie zawsze używa się równocześnie kilku technologii. Stąd, nawet w projektach o przewidywanym dłuższym czasie użytkowania, częstokroć łatwiej jest stworzyć nowy kod, niż "wgryzać" się w zawiłości toku myślenia innego autora, a nawet własnego dzieła, np. sprzed pół roku.

Przyłożyć się warto

Dylematy dotyczące dokumentowania są, a w każdym razie powinny być, udziałem wszystkich potencjalnych uczestników projektu. Poleganie na jednostronnych zapewnieniach dostawcy jest tak samo błędne, jak żądanie od niego, aby pedantycznie wszystko dokumentował. Zakres i szczegółowość dokumentacji powinny być kompromisem opartym na zdrowym rozsądku: ważącym ryzyko, ale i nakłady.

Nie wolno też zapominać, że dokumentacja zawsze jest dziełem zbiorowym, a grono jej potencjalnych odbiorców również jest liczne. Decyzje dotyczące dokumentowania, podjęte bez konsultacji z zainteresowanymi, mogą więc zaowocować marną dokumentacją z jednej strony, a jej bojkotem z drugiej. Przyłożyć się warto.

Zdaniem praktyka
 
#Tadeusz Skrzyszowski#, kierownik działu nowych produktów w Impaq Sp. z o.o.
</td></tr></table></td></tr><tr><td>
 
#Jarosław Deminet#, dyrektor działu rozwoju w sektorze publicznym ComputerLand SA
</td></tr></table></td></tr></table>Podejście do kwestii dokumentowania prac programistycznych zależy od przyjętej perspektywy.

Dla firmy jako całości dokumentowanie jest instrumentem minimalizowania ryzyka związanego z fluktuacją kadr, a także obniżania kosztów przez ponowne wykorzystanie istniejących fragmentów kodu.

Jednakże z punktu widzenia kierownika projektu, wszystko co utrudnia ukończenie projektu o czasie i w ramach budżetu jest przeszkodą. Dotyczy to także tworzenia dokumentacji, która nie przyda się w danej chwili, zwłaszcza przed zakończeniem projektu.

Ilość i szczegółowość dokumentacji należy dopasować do rozmiaru projektu i perspektyw ponownego wykorzystania jego efektów, kierując się zdrowym rozsądkiem. Jednak samo liczenie na zdrowy rozsądek nie wystarczy. Aby zniwelować pojawiające się różnice interesów, warto stworzyć kulturę organizacyjną, w której dokumentowanie, a także korzystanie z dokumentacji tworzonej przez innych, jest nagradzane.

Kij w postaci przymusu działa zdecydowanie gorzej niż marchewka.

Z punku widzenia programisty liczy się dokumentacja projektowa i kod z komentarzem. Jako że znakomita większość aplikacji jest tworzona wokół baz danych, w dokumentacji projektowej powinien znaleźć się opis ich struktur. Dobrze jest zawrzeć w niej także opis dynamiki systemu, np. opis hierarchii funkcji lub opis stanów obiektów. Oprócz tego dokumentacja też powinna zawierać informacje dodatkowe, dzięki którym programista nie będzie musiał eksperymentować czy niepotrzebnie się zastanawiać. Chodzi np. o domyślne ustawienia parametrów bazy danych czy podstawowe zasady nawigacji po interfejsie (najlepiej z przykładami bądź szablonami).

W odniesieniu do dokumentowania kodu, ważne jest zachowanie umiaru. Jeżeli wymagania względem komentowania kodu są sztuczne, np. nie dopasowane do wykorzystywanych narzędzi lub nadmiernie szczegółowe, jej wykonywanie będzie dla programistów katorgą obniżającą wydajność. W efekcie ucierpią terminy i wzrośnie koszt wykonania systemu.

Oceń artykuł

średnio: 0 liczba ocen: 0
« wstecz 1  2 

Komentarze (0)

Najnowsze

e-Sąd z odsieczą sprawiedliwości

Polski wymiar sprawiedliwości postrzegany jest jako skostniały i opieszały. Tymczasem kolejne e-usługi udostępniane przez Ministerstwo Sprawiedliwości ułatwiają życie przedsiębiorcom i usprawniają pracę sądów.

e-Zdrowie w Polsce i na świecie

Projekty informatyzacji służby zdrowia realizowane są na świecie z różnym powodzeniem. Skąd Polska mogłaby czerpać wzorce? A może jesteśmy skazani na własne rozwiązania?

Raport Państwo 2.0, czyli nowa wizja informatyzacji państwa

Michał Boni, minister administracji i cyfryzacji, zaprezentował raport "Polska 2.0. Nowy start dla e-administracji". Przedstawia on informacje na temat stanu realizacji projektów będących w gestii nowo utworzonego ministerstwa oraz prezentuje kierunki dalszych działań związanych z informatyzacją i cyfryzacją administracji publicznej w naszym kraju.

Cyberprzestępcy podążają za użytkownikami

Już dwie na trzy polskie firmy odnotowały ataki lub awarie, które spowodowały spadek produkcji. Co trzecia firma utraciła dane. Liczba takich przypadków będzie rosła, bo hakerzy biorą na cel najbardziej masowe technologie. Szybko reagują też na zmiany w firmowej architekturze.

Jak zaplanować karierę w branży IT

Doświadczenia łączone na różnych stanowiskach w firmach o odmiennych profilach są szczególnie cenione przez pracodawców. Dlatego warto głęboko przeanalizować możliwości rozwoju kariery, które obecnie stwarza rynek IT.

Jakie są różnice między chmurą a wirtualizacją

Wirtualizacja jest obecnie standardową technologią, stosowaną powszechnie w IT. Od środowiska chmury prywatnej dzieli ją jednak długa droga, gdyż wymaga ona uzupełnienia o istotne składniki.

Jakie są różnice między chmurą a wirtualizacją

Wirtualizacja jest obecnie standardową technologią, stosowaną powszechnie w IT. Od środowiska chmury prywatnej dzieli ją jednak długa droga, gdyż wymaga ona uzupełnienia o istotne składniki.

Rekomendacje



Serwisy IDG - Warunki obsługi - Kontakt - Redakcja - Regulamin - O nas - Polityka prywatności - Serwis zgodny z ASME
Reklama - Licencjonowanie treści - Prenumerata: Computerworld, Networld, PC World
Computerworld Polska i Computerworld Polska online są znakami towarowymi IDG Poland SA.
© Copyright 2012 International Data Group Poland S.A. 04-204 Warszawa ul. Jordanowska 12 tel.(+4822)321-78-00 fax(+4822)321-78-88