Jakie narzędzia użyć do tworzenia dokumentacji ?
niedziela, kwiecień 30th, 2006 by Paweł RutkowskiDokumentacja ? Po co ?
Każdy projekt IT trzeba w jakiś sposób dokumentować. Czasem jest to tylko dokumentacja dla użytkownika końcowego, czasem tylko dokumentacja API. Niestety większość osób wogóle nie dokumentuje swoich produktów (mówie to głównie o freelancerach, ponieważ firmy zazwyczaj podchodzą do tego znacznie poważniej). Wszystko jest wporządku dopóki Klient, który posługuje się danym programem, pamięta jak się go obsługuje. Problem pojawia się jak zapomni - zamiast wcześniej przygotować mu dokumentacje, będziemy musieli co chwila odpowiadać na jego pytania.
Rodzaje dokumentacji
Zanim opisze narzędzia wspomagające proces tworzenia dokumentacji, wyróżnię kilka typów dokumentacji:
- dla użytkownika końcowego
- Przeznaczona jest tylko dla użytkownika, który będzie korzystał z oprogramowania. Musi być zrozumiała dla typowego użytkownika i nie powinna wychodzić poza jego dziedzinę. Nie opisuj swojego cudownego modułu komunikacji z bazą danych - zwykłemu użytkownikowi taka wiedza nie jest potrzebna.
- dla administratora systemu (zwana także maintenance manual)
- Zawiera informacje istotne z puktu widzenia administratora, który będzie zajmował się bierzącą obsługą systemu od strony technicznej. Powinny się tu znaleźć informacje o konfiguracji oprogramowania, wymaganiach sprzętowych, czynnościach konserwacyjnych.
- opis zewnętrznego API
- Zawiera opis funkcji używanych przez zewnętrzne programy do komunikacji z systemem. Jest głównie tworzona w przypadku systemów które będą integrowane z zewnętrznym oprogramowaniem.
- wewnętrzna
- Zawiera dokumentację opisującą wnętrze systemu. Zarówno jego funkcje, jak i data-flow czyli przepływ informacji pomiędzy poszczególnymi modułami. W niej także powinny się znaleźć opisy, wyjaśniające dlaczego dane rozwiązanie programistyczne zostało wykorzytsane. W przypadku skomplikowanych funkcji powinno się je opisać w sposób zrozumiały dla więszości zespołu. Ten typ dokumentacji zazwyczaj nie opuszcza deweloperów (pewnie ze względu na dużą ilość słów niecenzuralnych:)
Narzędzia
Postaram się przybliżyć kilka metod czy narzędzi ułatwiających tworzenie dokumentacji. Niektóre mają dość specyficzne zastosowanie, inne są wmiare ogólne. Konkretny wybór pozostawiam Wam.
Oto dwa założenia którymi się kierowałem przy wyborze narzędzi:
- Musi pozwalać na edycję przez wielu użytkowników
- Musi pozwalać na wyświetlenie różnic pomiędzy wersjami
- Musi obsługiwać kontrolę wersji
Dlatego też na wstępnie odrzuciłem formaty doc i sxw. Nie pozwalają na szybkie pokazanie zmian w dokumencie.
DocBook
Mój ulubieniec. DocBook jest standardem tworzenia dokumentacji, opisów oraz książek (wykorzystywanym między innymi przez O’reilly). Dokument jest tworzony w standardowym edytorze tekstowym przy pomocy znaczników XMLowych. Z pliku źródłowego DocBooka można wygenerować następujące typy plików: pdf, html, rtf.
Ponieważ plik źródłowy to zwykły plik tekstowy, bez problemu można go umieścić w systemie kontrolii wersji.
Moim zdaniem najlepiej nadaje się do tworzenia dokumentacji dla użytkowników, administratorów i API - czyli generalnie rzeczy które są opisywane pod koniec produkcji systemu.
Wiki
Wszelkie systemy popularnie zwane Wiki (najpopularniejszy z nich to MediaWiki na którym opiera się Wikipedia) pozwalają użytkownikom tworzyć i edytować strony internetowe www z poziomu przeglądarki WWW. Istnieje wiele systemów wiki, napisanych w różnych językach (perl, php). Moim faworytem jest wspomniane wcześniej MediaWiki oraz DokuWiki
Zaletą tego narzędzia jest to że informacje są widoczne na stronie odrazu, bez potrzeby transformacji do jakiegoś formatu (jak to miało miejsce w przypadku DocBooka), oraz brak potrzeby instalacji specjalnego oprogramowania. Większość mechanizmów wiki wspiera wersjonowanie stron.
W przypadku wiki pojawia się jednak jeden problem. Jeżeli nie zaplanujemy sensownej struktury dokumentu/dokumentów, znalezienie interesujących informacji może być bardzo trudne.
Moim zdaniem ten typ dokumentacji najbardziej nadaje się do API i dokumentacji wewnętrznej.
Nieśmiertelne komentarze
Są chyba najstarszym i jednym z najlepszych narzędzi dokumetacji. Dzięki nim można dokumentować pliki konfiguracyjne oraz kody programów. Łatwo je umieścić w miejscu do którego się odnoszą, przez co nie trzeba szukać w zewnętrznych dokumentach.
Niektóre języki programowania (Python, Ruby - RDoc ) wspierają tworzenie dokumentacji w formacie HTML na podstawie komentarzy. Łączy to zalety Wiki oraz komentarzy ponieważ mamy zarówno dokumentacje na stronie www jak i w kodzie.
Moim zdaniem najlepiej sprawują się przy tworzeniu dokumentacji API i dokumentacji wewnętrznej.
Podsumowanie
Wybrałem tylko te narzędzia ponieważ w mojej ocenie stanowią one komplet tego co może być potrzene. Oczywiście można wszystko udokumentować w komentarzach czy pliku Worda - ale przecież chodziło o narzędzia ułatwiające tworzenie dokumentacji.
Jeżeli znacie jakieś inne narzędzia, chętnie sie z nimi zapoznam.