Rozwój oprogramowania zazwyczaj ma na celu dopasowanie specyfikacji do implementacji.
Z tego powodu projektujemy oprogramowanie tak, aby spełniało specyfikacje, a następnie implementujemy je na podstawie tego projektu. Następnie używamy testów, aby potwierdzić, że implementacja spełnia specyfikacje, korygując implementację w przypadku rozbieżności lub wyjaśniając specyfikacje, jeśli są niejednoznaczne.
Można to nazwać inżynierią opartą na specyfikacjach i implementacji.
W przeciwieństwie do tego, w dzisiejszych dyskusjach o oprogramowaniu, doświadczenie użytkownika staje się coraz ważniejsze.
Co więcej, to zachowanie oprogramowania, a nie jego implementacja, faktycznie kształtuje doświadczenie użytkownika.
Dlatego poza ramami specyfikacji i implementacji istnieją doświadczenie i zachowanie.
W konsekwencji uważam, że warto zbadać koncepcję inżynierii doświadczenia i zachowania (Experience & Behavior Engineering), która opiera się na doświadczeniu i zachowaniu.
Oprogramowanie Płynne (Liquidware)
Inżynieria Doświadczenia i Zachowania jest nierealistycznym podejściem przy tradycyjnych metodach tworzenia oprogramowania.
Dzieje się tak, ponieważ wymaga ona poprawy doświadczenia użytkownika bez ścisłych granic czy podziałów funkcjonalnych w specyfikacjach. Niewinne życzenie użytkownika dotyczące poprawy jego doświadczenia może nawet wymagać odrzucenia całego wcześniej opracowanego oprogramowania.
Z drugiej strony, jeśli nadejdzie czas, gdy automatyzacja tworzenia oprogramowania oparta na agentach z wykorzystaniem generatywnej sztucznej inteligencji stanie się powszechna, odbudowa całych systemów oprogramowania będzie akceptowalna.
Co więcej, w takiej erze, wyposażając wydane oprogramowanie w chatbota-inżyniera AI, można sobie wyobrazić, że wejdziemy w erę „liquidware” (oprogramowania płynnego), gdzie interfejs użytkownika (UI) może być modyfikowany w celu dopasowania do preferencji każdego użytkownika.
Liquidware oznacza coś bardziej elastycznego niż tradycyjne oprogramowanie, idealnie dopasowującego się do każdego indywidualnego użytkownika.
Kiedy nadejdzie ta era zautomatyzowanego rozwoju i liquidware, paradygmat inżynierii oparty na specyfikacjach i implementacji stanie się przestarzały.
Zamiast tego przejdziemy do paradygmatu Inżynierii Doświadczenia i Zachowania.
Czym jest Zachowanie?
Mówiąc najprościej, zachowanie to stan, który zmienia się w czasie.
A testowanie zachowania to nic innego, jak testowanie tego zmiennego w czasie stanu.
Co więcej, testowanie zachowania nie polega na potwierdzaniu zgodności ze specyfikacją, która definiuje, jak stany przechodzą. Zamiast tego, zachowanie jest testowane na podstawie jakości doświadczenia użytkownika.
Oczywiście, jeśli istnieją błędy, które powodują, że system wykonuje niezamierzone operacje przez użytkownika lub dewelopera, to one również znacząco pogarszają doświadczenie użytkownika. Dlatego testowanie zachowania obejmuje weryfikację zgodności funkcjonalnej i poprawności funkcjonalnej.
Po spełnieniu tych podstawowych wymagań funkcjonalnych, uwaga przesuwa się na testowanie wysokiej jakości zachowania z perspektywy doświadczenia użytkownika.
Ostateczne Doświadczenie
Dla ludzi, ostateczne doświadczenie użytkownika to kontrola własnego ciała w dobrym zdrowiu.
Zastanówmy się: każdego dnia kontrolujemy złożone, a jednocześnie bardzo ograniczone ciało ważące dziesiątki kilogramów, używając go do celowych działań.
Gdyby ktoś próbował kontrolować tak ciężki, złożony i bardzo ograniczony system, aby wykonywać pożądane czynności, doświadczenie byłoby zazwyczaj dość słabe.
Jednakże, o ile nie czujemy się źle, poruszamy tym ciężkim, złożonym i bardzo ograniczonym ciałem tak, jakby było nieważkie, manipulujemy nim bez wysiłku, jak prostym mechanizmem, i nie zwracamy uwagi na jego ograniczenia i obostrzenia, jakby ich nie było.
To jest ostateczne doświadczenie.
Dążąc do wysokiej jakości zachowania, może stać się możliwe zapewnienie doświadczenia na równi z kontrolowaniem własnego ciała.
Innymi słowy, nawet jeśli system jest wolny w przetwarzaniu, złożony funkcjonalnie i ma wiele ograniczeń i obostrzeń, można by zrealizować całkowicie bezstresowe doświadczenie z oprogramowaniem płynnym (liquidware).
Podsumowując
Ostateczne oprogramowanie płynne (liquidware) zapewni doświadczenie podobne do doświadczenia naszego własnego ciała.
Takie oprogramowanie stanie się dla nas czymś w rodzaju ciała.
Za każdym razem, gdy ostateczne oprogramowanie płynne będzie się rozpowszechniać lub jego funkcje będą ulepszane, będziemy odczuwać, jakby nasze własne ciała się rozszerzały.