Effektiv fejlfinding

Posted on 15.11.2007 by Kim N. Lesmer.
Denne artikel handler om effektiv fejlfinding. Artiklen er ikke omfattende, men jeg kommer alligevel med praktiske eksempler på effektiv fejlfinding og organisering, eksempler der måske kan virke som inspiration til, at man selv opbygger effektive metoder til fejlfinding.

Det er værd at bemærke, at ikke to mennesker tænker ens, og den metode der virker effektivt på den ene, kan i nogle tilfælde virke helt irrationel og ulogisk for andre. Det er derfor ikke selve metoden i sig selv, der er essentiel, men mere det at man har en effektiv metode at arbejde ud fra. Undtagelsesvis gælder det indenfor områder, hvor det igennem praktisk erfaring har vist sig, at en bestemt metode altid er den bedste, og en af disse metoder er indenfor fejlfinding - udelukkelsesmetoden.

Effektiv fejlfinding bygger generelt på to grundlæggende ting:

  • Udelukkelsesmetoden.
  • Erfaring.

Der findes en masse litteratur om fejlfinding, men emnet er ikke særligt kompliceret, og det er ikke nødvendigt at læse en masse dyre bøger. For at udføre en effektiv fejlfinding skal man først og fremmest brænde for opgaven. Man skal finde det spændende at løse problemer, og så skal man ikke give op før man har fundet fejlen. Og hvis man vil blive virkeligt dygtig, skal man nægte at give op.

Når man får tilstrækkeligt med erfaring inden for sit område, så kan man genkende en fejl blot ved at se på symptomerne, og man behøver ikke længere gøre brug af udelukkelsesmetoden. Udelukkelsesmetoden bliver efterfølgende noget man kun tager i brug, hvis man står overfor et nyt problem, eller hvis fejlen i sin natur kan skyldes flere forskellige ting.

Uanset om man skal fejlfinde på software, hardware, eller mekaniske ting, så er de to nævnte ting de mest fundamentale værktøjer i enhver fejlfindingsopgave, og effektiv fejlfinding handler om effektiv udnyttelse af dem begge.

Udelukkelsesmetoden

Når man ikke har den nødvendige erfaring til at genkende fejl, skal man arbejde analytisk og trinvis bevæge sig ind på fejlen via udelukkelsesmetoden.

Udelukkelsesmetoden kan benyttes på to måder. Den ene måde består i at man "slukker" alt og derefter tænder de forskellige elementer, et efter et, indtil fejlen fremkommer.

Den anden måde består i at man gør det omvendte, man "slukker" et element af gangen indtil fejlen forsvinder.

I dag findes der selvfølgelig også en masse værktøjer, der kan hjælpe med at fejlfinde, og selvom mange af disse værktøjer er effektive, så er det lidt det samme som med en lommeregner. Med en lommeregner kan man udregne komplicerede regnestykker, men lommeregneren lærer dig aldrig at regne.

Uanset om man skal fejlfinde på software eller hardware, gør man sig selv en stor tjeneste ved først at tilegne sig praktisk erfaring. Når man har opnået et vist niveau, og udelukkelsesmetodens brug er blevet "second nature", betaler det sig at bruge fejlfindingsværktøjer.

Software

Når man udvikler software, er den bedste metode at udelukke alt fra starten af. Man udkommenterer de områder af programmet, der ikke virker, og starter med noget der virker. Derefter fjerner man udkommenteringen lidt efter lidt, indtil fejlen opstår. Når fejlen er opstået har man lokaliseret området, hvor fejlen befinder sig.

Hvis man efterfølgende ikke kan finde den specifikke fejl i det lokaliserede område, kan man isolere den enkelte bid software fra resten af programmet, og så forsøge at få den til at virke selvstændigt. På den måde bliver arbejdsområdet afgrænset, og fejlen bliver lettere at spotte.

Hardware

Hvis man f.eks. skal fejlfinde på en PC, er den mest effektive metode den samme som med software, selvom man også kan bruge den omvendte metode.

Man kan godt starte med at fjerne de forskellige komponenter, en efter en, indtil fejlen forsvinder, eller indtil at man konstaterer, at fejlen ligger på bundkortet, men det er ikke den mest hensigtsmæssige metode med hardware. Hvis den defekte komponent er tilstrækkelig defekt, kan man risikere at den ødelægger andre dele i maskinen. Det mest hensigtsmæssige, omend lidt mere tidskrævende, er at fjerne alt unødvendigt hardware først. Man afmonterer alle indstikskort, og fjerner samtlige ramkredse, indtil der kun er én tilbage. For at kunne fejlfinde på et skærmkort, er det naturligvis nødvendigt enten at have et ekstra skærmkort som man ved virker, eller en anden PC hvor man kan teste det skærmkort som man tager ud.

De fleste mennesker der arbejder med support, forsøger at gætte fejlen ved at opstille de forskellige muligheder, men det er ikke en effektive metode. En sort skærm behøver nemlig ikke at have relation til skærmkortet, det kan sagtens være en defekt ramkreds, det kan også være en forkert monteret ramkreds (en der f.eks. ikke sidder helt nede i soklen). Igen kan det også være CPU'en der enten er gået i stykker, eller som sidder lidt forkert. I nogle tilfælde vil bundkortet komme med advarsler i form af forskellige sekvenser af bib lyde, hver sekvens har sin egen kode, og man kan som regel slå koden op.

En maskine der pludseligt slukker eller fryser kan også have flere forskellige fejl. Der kan være et problem med køling, og det kan også være et problem med en defekt ramkreds. I sådanne tilfælde er det ikke kun nødvendigt, men også effektivt at bruge udelukkelsesmetoden fra starten af. Med årene får man erfaringen til at kunne se forskel på hvordan en maskine opfører sig når den bliver for varm, og på hvordan den opfører sig ved defekte ramkredse, men alligevel er symptomerne ofte så ens at man ender på med at skulle bruge udelukkelsesmetoden alligevel.

Det mest effektive er at bruge udelukkelsesmetoden fra starten af og fjerne alle komponenter, så man arbejder med det absolut minimale. Hvis fejlen er væk, har man allerede konstateret at fejlen ligger i en af de afmonterede komponenter.

Mekanik

Hvis f.eks. en bil ikke kan starte, er det også udelukkelsesmetoden der er den mest effektive. Der findes dog nyere biler, der er konstrueret på en sådan måde at det kræver specielt udstyr for at kunne fejlfinde effektivt på dem. Nyere biler indeholder ofte elektronik til styring af selv små mekaniske dele, hvorfor det nærmest er umuligt at fejlfinde effektivt uden en computer. Man kan med andre ord ikke se, om det er mekanikken eller elektronikken, der fejler.

På ældre biler, og på en del nye biler, kan man dog fejlfinde meget effektivt. Hvis en bil f.eks. ikke vil starte, bruges udelukkelsesmetoden mest effektivt ved at man udelukker en ting af gangen. Det er den omvendte metode i forhold til software udvikling, og selvom man også kan bruge denne metode til at finde fejl i software, så er det ikke så effektivt. Omvendt kan man heller ikke afmontere samtlige dele på bilen, der har relation til at starte, for derefter at monterer en ting af gangen.

I eksemplet med bilen er det mest nærliggende at se på, hvorvidt bilen har tilstrækkelig med strøm på batteriet, og hvorvidt bilen har benzin i tanken. Man starter med det mest grundlæggende. Hvis din vaskemaskine pludseligt ikke virker, så start med at undersøge det mest grundlæggende - stikkontakten.

Hvis man har konstateret, at der er benzin på bilen og tilstrækkeligt med strøm, tager man derefter fat om de næste dele. Man udelukker at benzinpumpen er defekt, ved at afmonterer benzinslangen og se, om der kommer benzin ud, når man forsøger at starte. Man undersøger startmotoren, og man undersøger bilens forskellige stelkabler, og checker efter, at de er i god stand. Et slidt stelkabel er meget ofte årsagen til startproblemer. Når alle de grundlæggende ting er undersøgt, kommer man til styreboksen (hvis bilen har en sådan). Styreboksen er den indbyggede "computer" der i en mere moderne bil bl.a. styrer blandingen af luft og benzin (og hundrede andre ting).

Erfaring

Hvis man arbejder med fejlfinding ofte, og hvis man ikke afviger fra en effektiv og fast brug af udelukkelsesmetoden, vil man relativt hurtigt få opbygget en erfaring der gør, at man kan genkende fejl lynhurtigt. Ofte kræver det så blot at man får beskrevet symptomerne. Og det er når man har opbygget en sådan erfaring, at man begynder at adskille sig fra andre i sit fag. Det handler i bund og grund om genkendelse, og jo mere man udsættes for de samme fejl, desto lettere bliver det at genkende dem.

Der findes den slags mekanikere (selvom de godt nok begynder at høre til fortiden) der alene ved at lytte til en motor, kan diagnosticere en fejl. En sådan egenskab er ikke medfødt, men er derimod indøvet. Mekanikeren har set mange forskellige fejl mange gange, og kan adskille dem alene på de lyde som de laver.

Hvis man ikke har adgang til arbejde med fejl ofte, er det svært at få opbygget den nødvendige erfaring til at blive rigtig god, men man kan hjælpe erfaringen på vej ved at holde en slags dagbog over fejl. Når man har været ude og fejlfinde, skriver man de forskellige symptomer ned i detaljer samt de ting man gjorde for at forsøge at finde fejlen. Inden man går i gang med den næste fejlfindingsopgave læser man lidt om de forskellige symptomer og deres løsninger i dagbogen, og man holder dermed oplysningerne friske i hukommelsen.

Metoden er universal

Den beskrevne metode til effektiv fejlfinding er universal, hvilket betyder at man kan bruge den indenfor alle områder, hvor fysisk fejlfinding gør sig gældende.

Når man arbejder med fejlfinding til dagligt, som jeg har gjort en hel del år af mit liv, ser man at der findes den slags mennesker, der aldrig blive gode til at fejlfinde uanset hvor meget de arbejder med det. Ofte skyldes det mangel på tålmodighed, men mest af alt skyldes det manglende fastholdelse af bestemte fremgangsmåder i arbejdet. Mange håndterer de samme opgaver forskelligt fra gang til gang, og resultatet bliver at der ikke bliver opbygget et fast erfaringsmønster.

Fejlfinding er en gren indenfor organisering, og med alt effektiv organisering gælder det, at man har et funktionsdygtigt system. En effektiv fremgangsmåde.