Strona główna » Blog » Oprogramowanie niedoskonałe

Oprogramowanie niedoskonałe

(X) System Windows nie może odnaleźć pliku "doskonale-oprogramowanie.exe". Upewnij się, że wpisana nazwa jest poprawna i spróbuj ponownie. [ OK. ]Użytkownicy dobrze znają rozmaite niedomagania oprogramowania, które używają na co dzień. Zdają sobie sprawę z mniejszej lub większej zawodności zarówno systemów operacyjnych, pojedynczych aplikacji jak i internetowych serwisów i usług. Niedoskonałości ujawniają się także przy dosyć dobrze zaplanowanych systemach tworzonych na zamówienie. Czy oprogramowanie zawsze musi być niedoskonałe i zawsze prędzej czy później musi wydarzyć się problem? Pytanie jest bardzo sensowne, bo niedoskonałe oprogramowanie może być widziane jako wymuszające rozmaite finansowe wydatki w postaci wsparcia serwisowego czy rozwojowego. Oprócz tego może być to też zniechęcające doświadczenie w skutek którego może pojawić się chęć zaniżania umiejętności autorów oprogramowania czy też posądzanie ich nawet o nierzetelność, niechlujność.

Gorsze jest lepsze?

Oprócz tego, że rzeczywiście mogą się trafić wykonawcy tworzący niechlujnie i nierzetelnie a sam proces tworzenia oprogramowania jest na tyle złożony, że całe zespoły specjalistów pracując (we współpracy z klientem i jego pracownikami) miesiącami potrafią wyprodukować coś, co jest średnio użyteczne i wymaga długiego procesu naprawczego, warto podkreślić, że oprogramowanie jest w pewnym sensie niedoskonałe nieprzypadkowo i jeszcze długo może takie być. Gdybyśmy stworzyli program, którego autorzy przewidzieli obsługę wszelkich możliwych błędów, które mogą w nim wystąpić, byłby on prawdopodobnie ogromnie powolny i w konsekwencji nieużyteczny, a jego dalsza rozbudowa mogłaby być niebywałym wyzwaniem. W dodatku, na niektóre błędy i problemy, na które może natrafić dany program a które są niezależne od niego, nie ma oczywistych i uniwersalnych rozwiązań. Stąd już bardzo dawno temu samoczynnie wyłoniło się podejście, którego nazwa, “gorsze jest lepsze” (worse is better), od razu sugeruje o czym ono jest. Nazwę spopularyzowały eseje Richarda Gabriela, które stawiały je w zestawieniu z podejściem doskonałych zasad zwanym “Właściwym Sposobem” (The Right Thing). “Właściwy Sposób” to w wielkim skrócie ideał tworzenia prostego, poprawnego, spójnego i kompletnego oprogramowania. Wszyscy chcielibyśmy, aby nasze oprogramowanie było wykonane we “właściwy sposób”. I ludzie owszem próbowali tworzyć takie oprogramowanie. Powstawało ono bardzo powoli i zanim jego twórcy zdołali rozwiązać pewne problemy jego działania, na rynku zdążyło się już objawić oprogramowanie niedoskonałe. Nie jakoś bardzo niedoskonałe, ale w pewnych aspektach niedopracowane – za to szybkie, zwięzłe. Trzeba było do niego podchodzić z pewną dozą ryzyka, przygotować się że nie wszystko zadziała, ale jednak ono było i pozwalało wykonać większość prac, co wpływało na popularyzację. Dawniej komputery nie były takie sprawne jak teraz (a i czy teraz sprawne to kwestia postrzegania teraźniejszości), więc też nie każdy mógł uruchomić coś, co musiało poświęcać większość czasu na samokontrolę i było kompletne w każdym calu. Oprogramowanie niedoskonałe było po prostu wystarczające.

Te niedoskonałość w zasadzie może być dostrzegane wszędzie: na poziomie zarówno rozwiązań sprzętowych jak i oprogramowania dawnego i współczesnego. Stąd jej kompletne uniknięcie może być praktycznie niemożliwe – nawet najlepsze starania programisty mogą być zniweczone przez sprzęt lub system operacyjny, na którym jego oprogramowanie będzie uruchomione, przeglądarkę internetową, kompilator. Problemy mogą nawet brać się z języka programowania, którego używa. Wszystkie bowiem te elementy w jakiś sposób mogły powstawać opierając się na pewnych “wystarczających” ale niedoskonałych konceptach, które jednak zapewniały dostępność i popularność (a co za tym idzie – udział w rynku).

Dążenie do ideału

Do ideału należy dążyć i nie jest wykluczone, że pewnego dnia będzie on praktycznie osiągalny – będzie to zależeć być może bardziej od możliwości sprzętowych niż umiejętności programistów. Możemy sobie wyobrazić potężne sztuczne inteligencje same zawiadujące sobą i swoim komputerowym otoczeniem. Wymagać one będą mocnych podzespołów. Póki co możemy jednak określać pewne pożądane przybliżenia, wyznaczać jakieś granice tego, co musi być niezawodne a co może być zawodne w pewnym określonym stopniu. Wokół informatyków-programistów pojawiło się teraz wiele zawodów, stanowisk czy ról, które starają się dookreślić te wymagania – np. analitycy. Pojawiły się stanowiska ludzi specjalizujących się w testowaniu oprogramowania. Niektóre z powstałych stanowisk w ogóle nie wymagają wykształcenia informatycznego. Np. projektant interfejsów może i być może nawet powinien być z wykształcenia psychologiem.

Niestety, przy większych systemach wciąż trzeba się godzić z tym, że konieczna może być stała opieka techniczna i w ogóle wsparcie różnego rodzaju. Wiele mówi to, że są firmy, które oprogramowanie rozdają za darmo lub prawie za darmo, a wysoko cenią właśnie wsparcie. To już nie samo oprogramowanie jest produktem, ale właśnie wsparcie. W Internecie można podejrzeć publiczne systemy zgłoszeń błędów w wielu poważnych systemach i zobaczyć, że tam trwa ciągła praca przez cały rok. I pomimo prac kolejnych zespołów ludzi, oprogramowanie wciąż jest niedoskonałe, chociaż z czasem coraz lepsze.

Dodaj komentarz