Vykdydamas profesinę veiklą, programuotojui tenka susidurti su daugeliu situacijų, kai reikalinga sudėtinga didelių šaltinio kodo fragmentų ar net visų programų analizė. Tiriant sėkmingus sprendimus ir praktiką, analizuojant jau įdiegtus algoritmus ar tiesiog perkėlus kitą projektą į komandą, dažnai reikia išardyti kažkieno parašytą programą.
Būtinas
- - šaltinio kodo peržiūros programa;
- - galbūt atvirkštinės inžinerijos ir bylų įrankiai.
Nurodymai
1 žingsnis
Nagrinėkite analizuojamos programos valdymo perdavimo srautą Nurodykite įėjimo tašką. Pavyzdžiui, tai yra pagrindinė C ir C ++ funkcija, neįvardinto pirmojo lygio struktūros bloko pradžia, baigiant raktiniu žodžiu END su tašku, paskaliu. Pradėdami nuo įvesties taško, atsekite visus iškvietimai į funkcijas, procedūras, užsiėmimų metodus. Parašykite aukšto lygio valdymo srauto schemą. Norėdami supaprastinti šį procesą, galite naudoti įvairius atvirkštinės inžinerijos įrankius. Išnagrinėkite analizuojamos programos struktūrinių elementų šaltinio kodą išsamiau. Nubrėžkite atskirų funkcijų ir metodų valdymo srautų diagramas arba schemas.
2 žingsnis
Išanalizuokite analizuojamos programos duomenų srautus. Nustatykite struktūras, naudojamas informacijai saugoti, ir perkelkite ją tarp funkcinių programos elementų. Nustatykite kodo fragmentus, kurie konvertuoja duomenis iš vienos formos į kitą. Sudarykite sąrašą vietų programoje, kuriose gaunama informacija iš išorinės aplinkos, taip pat jos išvesties kažkur. Tokios analizės metu taip pat padės perprojektavimo įrankiai ir atvejo įrankiai (pavyzdžiui, paveldėjimo schemai ir priklausomybės diagramai sukurti).
3 žingsnis
Išardykite programą, visiškai suprasdami jos veikimo principus. Remiantis žiniomis apie valdymo perdavimo srautą tarp struktūrinių elementų, taip pat jų viduje, žinių apie srautus ir duomenų transformacijų tipus, nustatomi pagrindiniai darbo algoritmai. Atskirkite duomenų apdorojimo ir sąsajos valdymo algoritmus. Pasirinkite tipiškus apdorojimo algoritmus ir juos klasifikuokite. Nustatykite algoritmus, remdamiesi įvairių komponentų sąveika (pavyzdžiui, paiešką galima naudoti tiek savarankiškai, tiek kaip rūšiavimo dalį). Jei reikia, paruoškite įvairaus laipsnio schemas, kad iliustruotumėte programos veikimą.