Softverska krtost
Softverska krtost je pojam kojim se označuje povećane teškoće koje se javljaju kad se popravlja stari softver koji je naizgled pouzdan, ali je nestabilan kada se suoči sa neuobičajenim podatcima ili ako ga se uvedu neke manje promjene. Izraz dolazi iz kovinoprerade kad se govori o krtosti kovina.
Uzroci
Kad je softver nov, lako ga se dade oblikovati prema željama onih koji ga primjenjuju. No, poslje mnogih prepravki i dodavanja ovaj prepravljani softver počinje rasti tako da kasnije preraste zamisli inicijalnog projeta, i poslje neke kritične točke u tom procesu svaki novi dodatak ili osobina koja je nadodata u softveru počinje djelovati na samu stabilnost produkta. Tako da novi dodatci i prepravke je sve teže i teže oblikovati ("kovati"). Kao kovina koja je otvrdnula radom, softver postaje naslijeđeni stari sustav, koji je krt i nije ga moguće jednostavno održavati, a da se pri tom ne slomi cijeli sustav.
Krtost mogu prouzročiti algoritmi koji ne rade kako treba za potpuni raspon unesenih podataka. Dobar primjer je algoritam koji dopušta mogućnost da se može pojaviti dijeljenje nulom ili jednadžbu poravnavanja krivulje koju se rabi radi ekstrapolacije izvan raspona podataka za koje je izračunata. Drugi uzrok krtosti je uporaba podatkovnih struktura koje ograničavaju vrijednosti. Ovo je bio najčešći slučaj krajem 1990-ih kad se shvatilo da njihov softver može promijeniti samo dvije znamenke; sve je to dovelo do iznenadna ažuriranja ogromnih količina krta softvera prije 2000. godine. Drugi, češći oblik krtosti je grafičko korisničko sučelje koje pravi netočne pretpostavke. Primjerice, korisnik može raditi na zaslonu niske razlučivosti, a softver otvara prozor znatno veći od zaslona, tako da korisnik ne vidi cijelu sliku. Još jedan česti problem je kad korisnik rabi šemu boja koja nije ista kao početna (defaultna), što za ima posljedicu da je tekst iste boje kao pozadina. Sličan slučaj je ako korisnik rabi font koji je drukčiji od defaultnog, pa se događa da tekst ne može stati u predviđeni prostor i na kraju su naredbe "odsječene".
Čest je slučaj da se napusti staru bazu kodova i da se jednostavno uvede sasvim nov sustav, sustav kojeg se napravilo od korijena. Namjera ovakvih poteza je da novo rješenje bude bez brojnih mana iz starog sustava, no s druge strane, ovo može biti skup proces koji oduzme dosta vremena.
Neki primjeri i razlozi softverske krtosti:
- Korisnici očekuju relativno postojano korisničko sučelje; jednom kad se neki izgled primijeni i prikaže korisnicima, vrlo ih je teško uvjeriti prihvatiti velike primjene tog izgleda, čak i ako sučelje prvotno nije bilo dobro dizajnirano ili ako postojanje takva sučelja zaustavlja daljnji progres.
- Veliki udio dokumentacije dobro opisuje trenutačno ponašanje i bilo bi skupo išta mijenjati. Osim toga, zapravo je nemoguće opozvati sve kopije postojeće dokumentacije, tako da su korisnici skloniji služiti se zastarjelim priručnicima.
- Osobe koje su izvorno primjenjivale softver odnosno koje su znale kako stvari rade otišle su i za sobom nisu ostavile dostatnu dokumentaciju o tome kako softver djeluje. Brojni sitni detaljići koji su objašnjavali stvari nisu zapisani, nego su ih dizajneri prenosili usmeno te se je time tako nepovratno izgubilo brojne korisne potankosti, iako bi se neke moglo ponovno otkriti putem umješna, ali vrlo skupa primjenjivanja softverske arheologije.
- Sustavi mogu biti krti ako su sastavnice dependencija pretvrde. Primjer toga se susreće pri teškoćama koje se javljaju kad se prelazi na nove inačice dependencija. Kad jedna komponenta očekuje od druge dati samo određeni raspon vrijednosti, a taj se raspon promijeni, onda se mogu dogoditi pogrješke koje će pomrješkati sustav.
Vidi
- Edward Yourdon
- Fred Brooks
- softverska entropija
- softverska erozija
- sustav dimnjačne cijevi
- refaktoriranje koda
- trunjenje bitova
- softversko trunjenje
- kodni smrad
- bug (softver)
- špageti kod
Izvori
- Robert E. Filman; Tzilla Elrad; Siobhán Clarke; Mehmet Aksit (2004). Aspect-Oriented Dependency Management. Addison Wesley Professional. ISBN 0-321-21976-7.
- Anastasios Manessis, Adrian Hilton, Phil McLauchlan and Phil Palmer (2000). "A Statistical Geometric Framework for Reconstruction of Scene Models". British Machine Vision Conference.
- Virginia Postrel (1999). "Power fantasies: the strange appeal of the Y2K bug - Year 2000 transition problem". Reason.