Softwarová archeologie - Software archaeology
Softwarová archeologie nebo softwarová archeologie je studium špatně zdokumentovaných nebo nezdokumentovaných starší software implementace, jako součást údržba softwaru.[1][2] Softwarová archeologie, pojmenovaná analogicky s archeologie,[3] zahrnuje reverzní inženýrství softwarových modulů a aplikace různých nástrojů a procesů pro extrakci a porozumění struktuře programu a obnovení návrhových informací.[1][4] Softwarová archeologie může odhalit nefunkční týmové procesy, které přinesly špatně navržené nebo dokonce nepoužívané softwarové moduly.[5] Tento termín se používá po celá desetiletí,[6] a odráží docela přirozenou metaforu: programátorské čtení starší kód může mít pocit, že je ve stejné situaci jako archeolog zkoumající trosky starověké civilizace.[7]
Techniky
Workshop o softwarové archeologii v roce 2001 OOPSLA Konference (Objektově orientované programování, systémy, jazyky a aplikace) identifikovala následující techniky softwarové archeologie, z nichž některé jsou specifické pro objektově orientované programování:[7]
- Skriptovací jazyky vytvářet statické zprávy a filtrovat diagnostický výstup
- Probíhající dokumentace na stránkách HTML nebo Wikis
- Synoptická analýza podpisu, statistická analýza a softwarová vizualizace nástroje
- Nástroje pro reverzní inženýrství
- Trasování na úrovni operačního systému pomocí krov nebo strace
- Vyhledávače a nástroje pro vyhledávání klíčových slov ve zdrojových souborech
- IDE procházení souborů
- Testování jednotky rámce jako JUnit a CppUnit
- Generování dokumentace API pomocí nástrojů, jako je Javadoc a doxygen
- Debuggery
Obecněji, Andy Hunt a Dave Thomas všimněte si důležitosti ovládání verze, řízení závislostí, nástroje pro indexování textu, jako např ZÁBLESK a SWISH-E a „[kreslení] mapy, když začnete zkoumat.“[7]
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ů.[7] Na workshopu OOPSLA Ward Cunningham navrhl techniku analýzy synoptické signatury, která dala programu celkový „cit“ tím, že zobrazovala pouze interpunkci, například středníky a složené závorky.[8] Ve stejném duchu Cunningham navrhl prohlížení programů ve dvoubodovém písmu, aby pochopil celkovou strukturu.[9] Další technikou identifikovanou na semináři bylo použití aspektově orientované programování nástroje jako AspectJ systematicky zavádět sledování kód bez přímé úpravy staršího programu.[7]
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ů.[10]
Michael Rozlog z 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?“[11] Tyto kroky, podobné těm, které identifikoval workshop OOPSLA, zahrnují použití vizualizace k získání vizuální reprezentace designu programu pomocí softwarové metriky hledat porušení designu a stylu pomocí testování jednotky a profilování hledat chyby a úzká místa výkonu a shromažďování informací o návrhu obnovených procesem.[11] Softwarová archeologie může být také služba poskytovaná programátorům externími konzultanty.[12]
Tvrdí Mitch Rosenberg ze společnosti InfoVentions.net, Inc.[Citace je zapotřebí ] ž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:
- Muselo to tam být, ale už to tak není
- Nikdy to tam nemělo být a osoba, která kód napsala, neměla ponětí
- 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í.[13]
Povolání programátor – archeolog funkce prominentně v Vernor Vinge je Hloubka na obloze. [14]
Viz také
- Obnova softwarové architektury
- Refaktorování kódu
- Zpětný výpočet
- Křehkost softwaru
- Hniloba softwaru
- Softwarová entropie
- Abandonware
Reference
- ^ A b Robles, Gregorio; Gonzalez-Barahona, Jesus M .; Herraiz, Izrael (2005). „Empirický přístup k softwarové archeologii“ (PDF). Sborník příspěvků z mezinárodní konference o údržbě softwaru.
- ^ Ambler, Scott W. „Agile Legacy System Analysis and Integration Modeling“. agilemodeling.com. Citováno 2010-08-20.
Bez přesné dokumentace nebo přístupu k dobře informovaným lidem může být vaší poslední možností analyzovat zdrojový kód staršího systému ... Toto úsilí se často označuje jako softwarová archeologie.
- ^ Moyer, Bryon (4. března 2009). „Softwarová archeologie: modernizace starých systémů“ (PDF). Vestavěný technologický deník.
- ^ Hopkins, Richard; Jenkins, Kevin (2008). "5. Mýtický metaman". Jíst slona IT: Přechod od vývoje na zelené louce k brownfieldům. Addison-Wesley. str. 93. ISBN 978-0-13-713012-2.
- ^ Spinellis, Diomidis; Gousios, Georgios (2009). "2. Příběh dvou systémů § nedostatek soudržnosti". Krásná architektura. O'Reilly. str. 29. ISBN 978-0-596-51798-4.
- ^ Časná diskuse je Grass, Judith E. (zima 1992). „Objektově orientovaná designová archeologie s CIA ++“ (PDF). Výpočetní systémy. 5 (1).
- ^ A b C d E Lov, Andy; Thomas, Dave (Březen – duben 2002). "Softwarová archeologie" (PDF). Software IEEE. 19 (2): 20–22. doi:10.1109/52.991327.
- ^ Cunningham, Ward (2001). „Průzkum podpisu: metoda procházení neznámého kódu“. Prohlášení o poloze workshopu, softwarová archeologie: Porozumění velkým systémům, OOPSLA 2001.
- ^ Cook, John D. (10. listopadu 2009). "Softwarová archeologie". Snaha.
- ^ de Souza, Cleidson; Froehlich, Jon; Dourish, Paul (2005). „Hledání zdroje: Softwarový zdrojový kód jako sociální a technický artefakt“ (PDF). Sborník mezinárodní konference ACM SIGGROUP z roku 2005 o podpoře skupinové práce. 197–206. doi:10.1145/1099203.1099239. ISBN 1595932232.
- ^ A b Rozlog, Michael (28. ledna 2008). „Softwarová archeologie: Co to je a proč by se měli vývojáři Java starat?“. java.sys-con.com.
- ^ Sharwood, Simon (3. listopadu 2004). „Dobyvatelé ztraceného kódu“. ZDNet.
- ^ Například „32. konference ACM / IEEE o softwarovém inženýrství“. Květen 2010..
- ^ Rees, Gareth (06.06.2013). „Softwarová archeologie a technický dluh“.
externí odkazy
- "Poziční papíry". Workshop OOPSLA 2001 o softwarové archeologii: Porozumění velkým systémům. Archivovány od originál dne 12.6.2010.
- „Psaní kódu, čtení kódu a softwarová archeologie“. Ještě jednou do Kodexu. Computerworld. 23. září 2009. Archivovány od originál dne 29.01.2011.
- Rozlog, Michael (13. března 2008). „Jak aplikovat softwarovou archeologii na váš vývojový proces“ (PDF).
- „Podcast OOPSLA 2008 s Grady Boochem o softwarové archeologii a souvisejících tématech“ (Podcast). 2008. Archivovány od originál dne 26. 9. 2011.