Miks on tarkvarade liidestamine alati keeruline?

Enamiku tülide põhjuseks on üksteise mittemõistmine. Üks ütleb üht, teine saab sellest omamoodi aru ja hoidku taevas, et sellest veel kolmandale räägitakse. Selline mõte ei ole küll teab mis eriliselt põhjapanev filosoofia, pigem tuntud lastemängu “Telefon” tasemel, aga kõlbab hästi iseloomustama, mis toimub tarkvaradevahelisel suhtlemisel.

Kui inimesed suhtlevad, siis saab ju alati üle küsida ja täpsustada, parandada oma arusaamu. Niisuguste inimestega, kes ei taha või ei oska suhelda, ongi alati probleeme. Tarkvarad aga ei oska hästi suhelda tagasiside mõttes. Vaatleme olukorda, kus üks inimene annab teisele näiteks arve.

A: Palun, siin on arve nr 34123.

B: Tänan. Oot-oot, sellise numbriga arve on mul juba olemas!

A: Jah, see on kordusarve. Eelmine arve tuleb tühistada.

B: Aga miks Sa kreeditarvet ei tee?

A: Mul on raamatupidajaga nii kokku lepitud, ei hakka jändama kreeditarvega.

B: Selge, kustutan olemasoleva arve 34123 ja lisan uue.

Kaks tarkvara sellise dialoogiga küll hakkama ei saa. Halvimal juhul võib arve üleandmine lõppeda vastuvõtva poole veateatega “Viga: sellise numbriga arve on juba olemas.” Vastuvõttev tarkvara peab olema programmeeritud nii, et ta saaks aru: kui selline arve on olemas, kirjuta üle; kui sellist arvet pole, lisa ta. Tegelikult peavad kõik variandid, kõik võimalused olema eelnevalt kokku lepitud. Kui saatja kirjutab arve kuupäevaks näiteks 3. Detsember 11, siis inimese puhul pole probleemi, saab aru küll. Tarkvara puhul peab aga olema täpselt kokku lepitud, kuidas kuupäeva kujutada. Näiteks 20111203 puhul ei hakka ükski tarkvara üle küsima, et “ahoi sõber, mis see kuupäev ikka oli, kas tõesti 20. november 1203 ?!?”

Tarkvarade liidestamise muudab keeruliseks just asjaolu, et kõiges tuleb kokku leppida: kas arve number tohib sisaldada ainult numbreid või on ka tähed lubatud, kui pikk tohib number maksimaalselt olla, kas number võib ka puududa (saaja paneb ise), kas tohib esineda korduvaid arveid, kas summade ja hindade komakohtade eraldaja on punkt või koma või on mõlemad lubatud või on summa hoopis sentides jne jne jne.

Andmete saatmine on alati lihtsam andmete vastuvõtmisest nagu rääkimine on alati lihtsam räägitust arusaamisest. Pole mingi probleem öelda mõni mõttetu lause nagu “Gümnaasiumihariduse tavatähenduslik kuvand on huvitav ja erandlik selles mõttes, et täna oleme me harituselt just eikellegimaal”. Kuidas peab kuulaja ehk vastuvõttev pool sellisest jamast aru saama? Saatev tarkvara paneb andmed kokku ja saadab ära ning tema töö on sellega tehtud. Vastuvõtvat tarkvara tuleb aga õpetada, kuidas saadetisest aru saada, kus on seal kuupäev, kuidas on ta kirjeldatud, kus on arve number jne. Seega tuleb saatjaga kokku leppida, kuidas andmeliidest kirjeldada. Kokkuleppeid aga ei sõlmi mitte tarkvarad ise, vaid inimesed ja sellega oleme tagasi antud kirjatüki esimese lause juures.

Sven Uusväli
November 2011

Tagasi