Blog (22)
Komentarze (619)
Recenzje (0)

Zmiana paradygmatu, czyli o GUI słów kilka

@alucosoftwareZmiana paradygmatu, czyli o GUI słów kilka13.03.2012 12:29

Mały paradoks oprogramowania

Kiedykolwiek programista pragnie uszczęśliwić stałego użytkownika, oferuje mu bądź ulepszoną funkcjonalność produktu bądź nowy, "ulepszony" a zarazem urzekający interfejs graficzny (ang. GUI, Graphical User Interface). Czasami dochodzi do sytuacji, w której funkcjonalności rozszerzyć się nie da. Czasem też jakakolwiek próba pójścia w tym kierunku mogłaby nawet zostać stanowczo odrzucona przez zagorzałych użytkowników-tradycjonalistów. Coż w takich sytuacjach może zrobić biedny twórca?... Może rok w rok, te same - co do wartości merytorycznej - aplikacje obdarzać coraz to nowymi numerkami, choć z zasady różnić się będą tylko wyglądem. A my to kupujemy, choć (co prawda) nie wszyscy.

Należę do grupy osób skoncentrowanych wyłącznie na funkcjonalności. W swojej pracy zawsze staram się korzystać z jak najbardziej ogólnych wzorców projektowych. Dzięki temu, pod napływem "chwili olśnienia", znaleźć można nowe zastosowanie dla wysłużonych już produktów bądź tych części programu, które - po nieznacznej tylko modyfikacji - mogłyby funkcjonować całkiem udanie na innym polu, w innej gałęzi gospodarki. Programista też człowiek, więc nierzadko zdarza się, że pewne przyjęte przez niego (i przeze mnie) wzorce można zamienić na inne, sprawniejsze, a wszystko to co było dawniej po prostu wyrzucić do kosza.

Z GUI sprawa wygląda nieco inaczej. Choć osobiście nie wykorzystuję tanich chwytów marketingowych z numerkiem lub z nowymi ikonkami to jednak uważam, że interfejs graficzny odgrywa kluczową rolę w procesie przygotowywania oprogramowania. Zawsze uważałem, że interfejsem graficznym powinni się zajmować graficy, tak jak programowanie leży w gestii programistów. Problem jest jednak bardziej złożony i często to na barkach programisty spoczywa obowiązek wykonania "atrakcyjnego interfejsu". Kiedy tak się dzieje, cierpią na tym wszystkie te aspekty oprogramowania, na które nie można było poświęcić więcej czasu (m.in. wydajność i niewłaściwe działanie w wyjątkowych sytuacjach). Katastrofa.

Programista zajmuje się GUI

W dzisiejszym świecie nie ma miejsca dla brzydkich produktów. Wszystko powinno być ładne a priori. Znając tę "najprawdziwszą z prawd" programista często sięga po rozwiązania firm trzecich, które przy pomocy jednego magicznego przycisku (albo jednej linijki kodu) zmieniają standardowe okienka i nieatrakcyjne "kontrolki" w świecące, kolorowe atrakcje. Mowa tu o czymś co nazywamy potocznie skórkami. Niejednokrotnie same skórki nie świecą już wielkim przykładem geniuszu. Wtedy implementujemy nieco inne rozwiązania. W przypadku platformy .NET taką alternatywą dla Windows Forms jest technologia Windows Presentation Foundation wespół z językiem XAML. Zainteresowani bez trudu znajdą informacje na ich temat, więc nie poruszę tu kwestii za i przeciw tym rozwiązaniom.

Obecnie prawie każda pełnoprawna platforma programistyczna wspiera w pewnym zakresie wysiłki programistów mające na celu uatrakcyjnienie wyglądu projektowanych aplikacji. I choć cel jest słuszny - w mojej opinii wiele z nich idzie drogą pełną anachronizmów i sprzeczności.

  • Wygląd kosztem nauki nowego języka opisującego interfejs użytkownika (na przykładzie XAML)?
  • Narzędzia przeznaczone tylko i wyłącznie do budowy GUI eksportujące serię nic nie mówiących (niewtajemniczonym) znaczników?
  • Dwucyfrowy wzrost zużycia cennych zasobów komputera kosztem kilku bajeranckich (jak dla kogo) okienek?

Proszę...

Pewnego razu w Menedżerze zadań

Do czego służy Menedżer zadań wiedzą chyba wszyscy. Poza nim istnieje szereg narzędzi obrazujących i rejestrujących pracę aplikacji w systemie Windows (na przykład wbudowany Monitor wydajności, w skrócie perfmon). Zużycie zasobów nowych wersji oprogramowania z reguły ma tendencję wzrostową i każdy ma możliwość sprawdzenia tego faktu. Dzieje się tak przeważnie tuż po wprowadzeniu widocznych zmian w interfejsie graficznym aplikacji. Inaczej jest natomiast gdy programista swoją uwagę skupia na problemie wydajności. Wtedy prawie każda zmiana pozytywnie wpływa i reguluje zasobożerność oprogramowania. Od powyższego zawsze są wyjątki, ale jak wiadomo nieliczne. Wszyscy znamy przecież aplikacje, które po pewnym czasie obecności na rynku stają się po prostu "bloated".

Do pamiętnego dnia wykorzystywałem zbiór popularnych bibliotek pozytywnie wpływających na wygląd wdrażanych aplikacji .NET. Krzywdzącym byłoby podanie nazwy producenta tego pakietu, więc pominę ją milczeniem. Istotnym jest bowiem fakt, że posiadając deweloperską licencję zawsze mogłem i nadal mogę liczyć na szybkie wsparcie techniczne i miłą obsługę. Niemniej z wersji na wersję, mimo pozytywnego - wizualnie - postępu, zasobożerność (tu zużycie pamięci) wykorzystywanych komponentów wzrastała co najmniej liniowo. Podczas gdy standardowa aplikacja wykorzystująca jedynie wbudowane w .NET komponenty zużywała niewiele ponad 15MB pamięci operacyjnej, to już samo puste, nic nie robiące okienko w technologii "skórek" zużywało jej 40MB. Rozumiem, że postęp technologiczny jest nieunikniony, ale będąc osobą w pewnym sensie ukształtowaną przez system z rodziny AmigaOS i mając na względzie obecne cztero- i pięcioletnie komputery osobiste typu PC i klasy "refurbished", nie mogłem nad taką sytuacją przejść obojętnie. "Bo później Pani Jadzia narzeka, że jej komputer działa wolno...". Skórki poszły do kosza. Bynajmniej w większości przypadków. A dalej było tak...

Stare pomysły w nowym wydaniu

Wykorzystanie WPF i XAML w nowych projektach byłoby ryzykownym przedsięwzięciem, biorąc pod uwagę ówczesną (i obecną) politykę Microsoftu. Poza tym wiązałoby to się z koniecznością współpracy z grafikiem znającym się na "tej dziwnej rzeczy". Kiedy na drodze programisty pojawiają się przeciwności, rozsądek karze uprościć problem i szukać odpowiedzi w oczywistym miejscu. I choć tym razem Microsoft Developer Network nie przyniósł upragnionej odpowiedzi to jednak sama technologia służąca jej poznaniu była strzałem w dziesiątkę.

Trident (czyt. Internet Explorer), jakiżby inny komponent systemu, czy to wbudowany czy doinstalowany lepiej miałby spełniać rolę ze wszechmiar modyfikowalnego GUI dowolnej aplikacji. I choć użyłem tu konkretnej nazwy nie bez powodu Ty sam możesz przywołać zupełnie inną np. Webkit (czyt. Chrome, Safari) lub Gecko (Firefox) oraz wiele innych.

Przeglądarka internetowa to podstawowe narzędzie pracy interauty i zawiera (to prawda!) doskonale zoptymalizowany silnik wyświetlający interaktywne (dynamiczne) treści. Mając za sobą wyczekiwany od dawna upadek IE6 powoli nastaje czas spokoju i "wspólnych standardów". Akceleracja sprzętowa zaimplementowana w silnikach popularnych przeglądarek a co za tym idzie coraz szybsza obsługa JavaScript, ale także obsługa SVG czy HTML5 - to wszystko sprawia, że powtórne wykorzystanie komponentów umożliwiających osadzanie odpowiednio spreparowanych stron internetowych, pełniących tu rolę wyłącznie interfejsu użytkownika w aplikacjach windowsowych (ale także i linuksowych), to czysta przyjemność. Co więcej, separując interfejs graficzny aplikacji (wykonany chociażby w HTML'u z domieszką jQuery) od właściwego kodu źródłowego przy użyciu specjalnie skonstruowanych klas opakowujących zyskujemy naprawdę dużą swobodę. Zmiany interfejsu graficznego mogą być wtedy dowolne i jedynie w znikomym stopniu wpływają właściwą część tworzonego przez nas programu. Komunikacja pomiędzy typowym kodem a stroną (GUI) przebiega w niezwykle prosty i klarowny sposób a samą oprawę wizualną jest w stanie przygotować każdy porządny grafik internetowy znający podstawy HTML i JavaScript. A takich osób na rynku wiele, więc można skoncentrować się na jakości a nie dostępności wykształconych jednostek. Zużycie zasobów tak przygotowanego GUI w porównaniu do tradycyjnych skórek jest niewielkie a możliwości rozbudowy niczym nieograniczone.

Oczywiście to od producenta danego komponentu zależy czy sprawnie będzie zachowywał się w środowisku produkcyjnym, ale nie oszukujmy się: przeglądarki internetowe (ich silniki) znajdują się pod stałą presją milionów użytkowników, tu wszystko musi grać jak należy. Nie ma mowy o technologicznym zastoju.

Na koniec - idziemy z duchem czasu. Ostatnio coraz więcej mamy przecież usług "web-enabled" - oczywiście nie w tym sensie :) Ale mówiąc szczerze, obserwując wielkich graczy rynku IT, właśnie w tym kierunku zmierzamy!

Wykorzystanie silnika Trident (klasa WebBrowser) w aplikacjach Windows Forms: http://msdn.microsoft.com/en-us/library/a0746166.aspx Całkiem udana implementacja Chromium (Awesomium) umożliwiająca tworzenie GUI opartego na HTML: http://awesomium.com/

P.S. Zdaję sobie sprawę, że nie we wszystkich przypadkach taki interfejs się sprawdza. Niemniej polecam tego typu rozwiązania... i pozdrawiam wszystkich, którzy dotrwali do końca.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.