Under professionell aktivitet måste en programmerare hantera många situationer som kräver komplex analys av stora fragment av källkod eller till och med hela applikationer. Att undersöka framgångsrika lösningar och metoder, analysera redan implementerade algoritmer eller helt enkelt överföra ett annat projekt till ett team gör det ofta nödvändigt att ta isär ett program skrivet av någon annan.
Nödvändig
- - program för visning av källkoden;
- - möjligen reverse engineering och case-verktyg.
Instruktioner
Steg 1
Undersök flödet av kontrollöverföring av det program som analyseras Identifiera ingångspunkten. Det är till exempel huvudfunktionen i C och C ++, början på ett namnlöst strukturnivå på första nivån, som slutar med END-nyckelordet med en punkt, i pascal. Från startpunkten spårar du alla rutter samtal till funktioner, procedurer, klasser. Rita upp ett flödesdiagram på hög nivå. För att förenkla denna process kan du använda olika verktyg för omvänd teknik. Analysera källkoden för de strukturella elementen i det analyserade programmet mer detaljerat. Rita kontrollflödesdiagram eller flödesdiagram för individuella funktioner och metoder.
Steg 2
Analysera dataströmmarna för det program som analyseras. Identifiera strukturerna som används för att lagra information och överföra den mellan programmets funktionella element. Identifiera kodavsnitten som konverterar data från en form till en annan. Gör en lista över platser i programmet där information tas emot från den externa miljön, liksom dess utdata någonstans. Omarbetning av verktyg och fallverktyg (till exempel för att bygga ett arvsdiagram och ett beroendediagram) kommer också att hjälpa till med denna typ av analys.
Steg 3
Demontera programmet och ha en fullständig förståelse för principerna för dess funktion. På grundval av kunskap om flödet av överföring av kontroll mellan strukturella element, såväl som inom dem, kunskap om flöden och typer av datatransformationer, identifiera de viktigaste algoritmerna för arbetet. Separera algoritmerna för databehandling och gränssnittskontroll. Välj typiska bearbetningsalgoritmer och klassificera dem. Identifiera algoritmer baserat på interaktionen mellan olika komponenter (till exempel kan sökning användas både oberoende och som en del av ett slag). Rita upp flödesscheman med varierande detaljeringsgrad för att illustrera hur programmet fungerar.