Program régészet

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2017. október 2-án áttekintett verziótól ; az ellenőrzések 22 szerkesztést igényelnek .

A szoftverrégészet  az a diszciplína, amely a rosszul dokumentált vagy nem dokumentált örökölt szoftvereket tanulmányozza karbantartása céljából [1] [2] . A szoftverrégészet magában foglalja az alkalmazások visszafejtését , speciális eszközök és munkafolyamatok használatát a kód szerkezetének kinyerésére és megértésére, valamint a fejlesztői szándék visszaállítására [1] [3] . A szoftverarcheológia segít feltárni a rossz alkalmazásarchitektúrával és a halott (nem használt) kóddal kapcsolatos problémákat [4] . A kifejezést több évtizede használják [5] , és a következő metaforát tükrözi: a régebbi szoftverek kódját olvasó fejlesztő ugyanúgy érzi magát, mint egy régész, aki egy ősi civilizáció műemlékeit kutatja [6] .

Eszközök és technikák

2001-ben az OOPSLA konferencián a szoftverrégészeti szekció a következő szoftverrégészeti eszközöket és technikákat határozta meg, amelyek közül néhány az objektum-orientált programozáshoz kapcsolódik [6] :

A függvényhívások szisztematikus nyomon követése érdekében a vizsgált alkalmazás kódbázisának kiterjedt szerkesztése nélkül, a szempont-orientált programozás (például AspectJ [6] Java-hoz, MrAdvice C # .NET-hez) sikeresen használható szempontosztályok fejlesztésével. a hívásverem állapotáról reflektáló eszközökkel információt szerezni, kiszűrve belőle a szükséges információkat és beírva az alkalmazás naplófájljába vagy a műveleti protokoll ablakába (ún. log).

Egy szakértői rendszer fenntartása során fontos információforrást jelentenek a munka logikájával kapcsolatban a magyarázatok alrendszerének üzenetei [7] .

Andy Hunt és Dave Thomas rámutat a verziókezelő rendszer , a függőségkezelő tároló, a szöveges indexelő eszközök (GLIMPSE, SWISH-E) és a „tanulmány leképezése” [6] használatának fontosságára .

A valódi régészethez hasonlóan a programrégészet is kutatási munkát foglal magában, hogy megértsék az elődök gondolkodási folyamatait [6] . Az OOPSLA szekciónál Ward Cunningham az úgynevezett "szinoptikus aláírás-elemzést" javasolta, amely a program szellemének első közelítését adja azáltal, hogy a fejlesztőnek csak a kód írásjeleit (kettőspontok, operátori zárójelek ) mutatja [8]. . Cunningham azt is javasolta, hogy fontolja meg a lehető legkisebb betűtípussal nyomtatott programokat, hogy megértse a program általános szerkezetét [9] .

A hálózati és időbeli elemzési technikák, a Microsoft Visual Studio Git Archaeology bővítménye segíthet feltárni az örökölt szoftverfejlesztői együttműködési mintákat, amelyek viszont rávilágíthatnak az eredményül kapott kód erősségeire és gyengeségeire [10] .

Michael Rozlog, az Embarcadero Technologies munkatársa úgy írta le a szoftverrégészetet, mint egy hat lépésből álló folyamatot, amely lehetővé teszi a fejlesztők számára, hogy válaszoljanak olyan kérdésekre, mint például: "Mit örököltem?" és "Hol szörnyű ez a kód?" [11] Ezek a lépések, az OOPSLA szakasz által felfedezettekhez hasonlóan, beleértve az alkalmazásarchitektúra megértését célzó kódvizualizációt, szoftvermetrikákat használnak a tervezési elvek és a programozási stílus megsértésének felderítésére, az egységtesztelést és a profilalkotást a szoftverhibák (úgynevezett hibák) feltárására , és szűk keresztmetszetek .helyek a teljesítményben, valamint a program-régészeti feltárások során helyreállított információgyűjtés az alkalmazás szerkezetéről [11] . A szoftverrégészet külső tanácsadók által belső fejlesztők számára nyújtott szolgáltatás is lehet [12] .

Mitch Rosenberg (InfoVentions.net) kijelenti, hogy a "szoftverrégészet első törvénye" a következő:

Oka van itt, és az ok lehet a három közül:

  1. Itt kellett volna lennie, de már nem szabadna .
  2. Nem kellett itt lennie, és a programozó, aki ezt írta, nem tudta, mit csinál .
  3. Még mindig itt kell lennie, és te vagy az, aki nem tudja, mit csinál .

Ennek a "törvénynek" a következménye: amíg az ok nem ismert, nem szabad megváltoztatni a kódot (vagy adatot) [13]

.

Lásd még

Jegyzetek

  1. 1 2 Gregorio Robles, Jesus M. Gonzalez-Barahona és Israel Herraiz, " An Empirical Approach to Software Archaeology , archiválva 2020. január 20-án a Wayback Machine -nél " , A Szoftverkarbantartás Nemzetközi Konferenciájának posztere , 2005.
  2. Agilis örökölt rendszerelemzés és integrációs modellezés archiválva 2021. március 23-án a Wayback Machine -nél ” Scott W. Ambler, az agilemodeling.com oldalon az örökölt rendszer forráskódjának elemzésére.
  3. Richard Hopkins és Kevin Jenkins, Eating the IT Elephant: Moving from greenfield development to brownfield Archiválva : 2015. március 23., the Wayback Machine , Addison-Wesley, 2008, ISBN 0-13-713012-0 , p. 93.
  4. Diomidis Spinellis és Georgios Gousios, Beautiful Architecture Archiválva : 2015. március 22., a Wayback Machine , O'Reilly, 2009, ISBN 0-596-51798-X , p. 29.
  5. Egy korai vita Judith E. Grass, " Object-Oriented Design Archaeology with CIA++ ", " Computing Systems " , 20. évf. 5, sz. 1, 1992 tél.
  6. 1 2 3 4 5 Andy Hunt és Dave Thomas, " Szoftverarcheológia archiválva 2020. november 9-én a Wayback Machine -nél ", IEEE Software , vol. 19, sz. 2, pp. március 20-22.
  7. Gavrilova T. A., Khoroshevsky V. F. Intelligens rendszerek tudásbázisai. - Szentpétervár. : Péter, 2000..
  8. Ward Cunningham , " Signature Survey: A Method for Browsing Unfamiliar Code Archivált 2010. augusztus 22-én a Wayback Machine -nél , "Műhelypozíció nyilatkozat, Szoftverrégészet: A nagy rendszerek megértése, OOPSLA 2001.
  9. Software Archaeology archiválva 2012. március 6-án a Wayback Machine -nél ” John D. Cook The Endeavour blogjában , 2009. november 10-én.
  10. Cleidson de Souza, Jon Froehlich és Paul Dourish, " Forrás keresése: Szoftverforráskód mint társadalmi és műszaki termék archiválva 2015. szeptember 23-án a Wayback Machine -nál ", "A csoportmunka támogatásáról szóló 2005-ös nemzetközi ACM SIGGROUP konferencia anyaga, pp. 197-206.
  11. 1 2 Michael Rozlog, " Szoftverrégészet: mi ez, és miért kell törődnie a Java fejlesztőkkel? Archiválva : 2015. július 13., a Wayback Machine ", cikk a java.sys-con.com webhelyen, 2008. január 28.
  12. Simon Sharwood, Raiders of the Lost Code Archiválva : 2012. március 14., a Wayback Machine , ZDNet , 2004. november 3.
  13. Például a 32. ACM/IEEE Nemzetközi Szoftverfejlesztési Konferencia Fokvárosban, Dél-Afrikában 2010 májusában