Softwarová archeologie - Software archaeology

Softwarová archeologie nebo softwarová archeologie je studium špatně zdokumentovaných nebo nezdokumentovaných starších implementací softwaru v rámci údržby softwaru . Softwarová archeologie, pojmenovaná analogicky s archeologií , zahrnuje reverzní inženýrství softwarových modulů a aplikaci různých nástrojů a procesů pro extrakci a pochopení struktury programu a obnovu návrhových informací. Softwarová archeologie může odhalit nefunkční týmové procesy, které přinesly špatně navržené nebo dokonce nepoužité softwarové moduly, a v některých případech lze záměrně najít obfuskační kód. Tento termín se používá po celá desetiletí a odráží docela přirozenou metaforu: programátor, který čte starší kód, může mít pocit, že je ve stejné situaci jako archeolog zkoumající trosky starověké civilizace.

Techniky

Workshop o softwarové archeologii na konferenci OOPSLA (objektově orientované programování, systémy, jazyky a aplikace) v roce 2001 identifikoval následující techniky softwarové archeologie, z nichž některé jsou specifické pro objektově orientované programování :

  • Skriptovací jazyky pro vytváření statických zpráv a pro filtrování diagnostického výstupu
  • Probíhající dokumentace na stránkách HTML nebo Wikis
  • Synoptická analýza podpisu, statistická analýza a softwarové vizualizační nástroje
  • Nástroje pro reverzní inženýrství
  • Operačního systému na úrovni trasování přes krov nebo strace
  • Vyhledávače a nástroje pro vyhledávání klíčových slov ve zdrojových souborech
  • Procházení souborů IDE
  • Jednotkové testovací rámce jako JUnit a CppUnit
  • Generování dokumentace API pomocí nástrojů jako Javadoc a doxygen
  • Debuggery

Obecněji Andy Hunt a Dave Thomas berou na vědomí důležitost správy verzí , správy závislostí , nástrojů pro indexování textu, jako jsou GLIMPSE a SWISH-E , a „[[kreslení] mapy, jak začnete zkoumat“.

Stejně jako skutečná archeologie zahrnuje i softwarová archeologie vyšetřovací práci, jejímž cílem je porozumět myšlenkovým procesům předchůdců. Na workshopu OOPSLA navrhl Ward Cunningham techniku ​​analýzy synoptické signatury, která dala programu celkový „cit“ zobrazením pouze interpunkce, jako jsou středníky a složené závorky . Ve stejném duchu Cunningham navrhl prohlížení programů ve dvoubodovém písmu, aby pochopil celkovou strukturu. Další technikou identifikovanou na semináři bylo použití aspektově orientovaných programovacích nástrojů, jako je AspectJ, k systematickému zavádění trasovacího kódu bez přímé úpravy staršího programu.

Techniky síťové a časové analýzy mohou odhalit vzorce aktivity spolupráce vývojářů staršího softwaru, což může osvětlit silné a slabé stránky produkovaných softwarových artefaktů.

Michael Rozlog ze společnosti Embarcadero Technologies popsal softwarovou archeologii jako šestikrokový proces, který umožňuje programátorům odpovídat na otázky typu „Co jsem právě zdědil?“ a „Kde jsou děsivé části kódu?“ Mezi tyto kroky, podobné těm, které identifikoval workshop OOPSLA, patří použití vizualizace k získání vizuální reprezentace designu programu, použití softwarových metrik k vyhledání porušení designu a stylu, použití testování jednotek a profilování k vyhledání chyb a úzkých míst výkonu a sestavování návrhových informací získaných procesem. Softwarová archeologie může být také služba poskytovaná programátorům externími konzultanty.

Mitch Rosenberg ze společnosti InfoVentions.net, Inc. tvrdí, že první zákon softwarové archeologie (říká mu kódová nebo datová archeologie) je:

Všechno, co tam je, je tam z nějakého důvodu a existují 3 možné důvody:

  1. Muselo to tam být, ale už to tak není
  2. Nikdy to tam nemělo být a osoba, která kód napsala, neměla ponětí
  3. Stále to tam musí být a VY nemáte ponětí

Důsledkem tohoto „zákona“ je, že dokud nevíte, který byl důvod, neměli byste kód (nebo data) upravovat.

Softwarová archeologie je i nadále předmětem diskuse na novějších konferencích o softwarovém inženýrství.

Profese programátora-archeolog rysy prominentně v Vernor Vinge ‚s A hloubku in the Sky .

Viz také

Reference

externí odkazy