Silumine ontarkvaraarenduse protsess, mille käigus leitakse ja parandatakse vigu koodis, mis takistavadprogrammi või süsteemi korrektset toimimist.
Silumist tuleb eristada silurist, mis on tarkvaraprogramm või -moodul, mida kasutatakse silumiseks. Silumist võib kasutada ka koodi ridahaaval läbimiseks, et seda paremini mõista.[1]
Silumisel on erinevaid tehnikaid ja lähenemisi, millest tuntuimad on interaktiivne silumine, juhtimisvoo analüüs, komponenditestimine,integratsioonitestimine, logifailianalüüs, rakenduse- või süsteemitasemel programmi seisu jälgimine erinevatel ajahetkedel, mälutõmmis ja profileerimine.
Silumise keerukus võib erineda suuresti sõltuvalt programmist või süsteemist. Tegemist võib olla lihtsate vigade parandamisega, aga ka aeganõudvate ja väsitavate andmete kogumise, analüüsi ja uuenduste planeerimisega.Programmeerija silumisoskus võib suuresti mõjutada silumisedukust, kuid tarkvara silumise raskusaste varieerub suuresti sõltuvalt süsteemi keerukusest. Mingil määral sõltub see ka kasutatudprogrammeerimiskeelest ja saadaval olevatest siluritest. Silurid on tarkvaratööriistad, millega on võimalik jälgida programmi täitmist, seda peatada, uuesti alustada, vaatluspunkte seada jamälus olevateandmete väärtusi muuta.[2]
Üldiselt on parim siluda kõrgema taseme programmeerimiskeeltes naguJava, mida lihtsustavad selliste keelte mitmed omadused, näiteks erindite käsitlemine ja tüübikontroll. Programmeerimiskeeltes naguC jaassembler võib juhtuda, et tekkinud vead on peidetud, näiteks mälusaaste puhul. Seetõttu on keeruline leida, kust algne probleem tekkis. Neil juhtudel võib olla vaja kasutada mäluspetsiifilist silurit.[3]
Keelespetsiifilisi tööriistu nimetatakse staatilise koodianalüüsi tööriistadeks ja teatud olukordades on nad väga kasulikud. Staatilise koodianalüüsi tööriistade või vahendite eesmärk on otsida spetsiifilisi probleeme koodist, mis võivad olla nii levinud kui haruldased. Selliseid probleemekompilaator võiinterpretaator üldiselt ei leia. Staatilise koodianalüüsi vahendid ei kontrolli süntaksit vaid semantilisi aspekte.[4]
Antisilumise eesmärgiks on kasutada koodis tehnikaid, mis takistavad pöördprojekteerimist (inglise keelesreverse engineering) ja teatud protsesside silumist.[5] Antisilumist saab kasutada koopiakaitsetehnikana kirjastajate poolt, aga kapahavaras, et pahavara leidmist ja eemaldamist keerulisemaks teha.[6] Mõned antisilumise tehnikad:
Üks varaseid näiteid antisilumisest oliMicrosoft Wordi esimestes versioonides. Kui programmiga tuvastati silur, väljastas programm ingliskeelse teate "The tree of evil bears bitter fruit. Now trashing program disk." (Tõlge: Kurjuse puul on mõrud viljad. Nüüd aeglustan programmiketast.) Seejärel hakkas programm arvutidisketiseadmes tekitama valjusid helisid eesmärgiga hirmutada kasutajat, et ta ei üritaks edaspidi silurit kasutada.[7][8]