2009-04-14 10 views
16

Z mojego doświadczenia wynika, że ​​programowanie w interfejsie użytkownika jest bardzo czasochłonne, drogie (projektanci, grafika itp.) I podatne na błędy - a z definicji błędy UI lub usterki są bardzo widoczne.Dlaczego programowanie interfejsu użytkownika jest tak czasochłonne i co możesz zrobić, aby to złagodzić?

Co zrobić, aby złagodzić ten problem?

Czy znasz rozwiązanie, które może automatycznie przekonwertować interfejs API na interfejs użytkownika (najlepiej interfejs WWW?).

Prawdopodobnie coś konsoli JMX

  • z dobrymi domyślnych
  • mogą być manipulowane z css
  • gdzie pola może być skonfigurowany jako przełącznik lub rozwijanej listy, pole tekstowe lub pole tekstowe, etc
  • lokalizowanymi
  • itp

Odpowiedz

10

Tworzenie interfejsu użytkownika jest czasochłonne i podatne na błędy, ponieważ wiąże się z design.Nie tylko projektowanie wizualne i dźwiękowe, ale co ważniejsze projektowanie interakcji. Dobry interfejs API to zawsze neutralny model interakcji, co oznacza, że ​​nakłada minimalne ograniczenia na rzeczywisty przepływ pracy, lokalizację i reprezentację informacji. Głównym powodem tego jest enkapsulacja i ponowne użycie kodu.

W rezultacie niemożliwe jest wyodrębnienie wystarczającej ilości informacji z samego API, aby stworzyć dobry interfejs użytkownika dostosowany do konkretnego przypadku użycia API.

Istnieją jednak generatory interfejsu użytkownika, które zwykle generują ekrany o rozdzielczości CRUD oparte na danym interfejsie API. Nie trzeba dodawać, że takie generowane interfejsy użytkownika nie są zbyt dobrze dostosowane do częstych użytkowników, które wymagają wyższej wydajności UI, ani nie są szczególnie łatwe do nauczenia się w przypadku większego systemu, ponieważ tak naprawdę nie komunikują dobrze obrazu systemu lub sekwencji interakcji.

Utworzenie dobrego interfejsu wymaga dużego nakładu pracy, ponieważ musi być zaprojektowane zgodnie z konkretnymi potrzebami użytkownika, a nie z powodu zwykłego zadania konwersji interfejsu API-UI, które może być w pełni zautomatyzowane.

Aby przyspieszyć proces budowania interfejsu użytkownika i zmniejszyć ryzyko, można zasugerować zaangażowanie profesjonalistów z UI lub dowiedzieć się więcej o pracy. Niestety, nie ma skrótów ani magicznej różdżki, więc można by powiedzieć, że stworzy to wysokiej jakości interfejs oparty wyłącznie i wyłącznie na API bez dodatkowych informacji i analiz.

Proszę również zobaczyć doskonałe pytanie: "Why is good UI design so hard for some developers?" że ma kilka bardzo wnikliwe i cenne odpowiedzi, a mianowicie:

2

Wygląda na to, że szukasz wzoru "Nagich obiektów" dla architektów. Dostępne są różne implementacje.

http://en.wikipedia.org/wiki/Naked_objects

+0

Nie jestem zbyt pewien, dlaczego wybrałbyś tę odpowiedź jako "odpowiedź" andy? Jest to najbardziej ogólna/niejasna odpowiedź. Właściwie to nie wiem nawet, jak na świecie można znaleźć rozwiązanie twojego problemu i poprawić czas programowania interfejsu użytkownika Naked Objects. Czy byłoby możliwe przekazanie informacji zwrotnej na temat tego, co widzisz w tym rozwiązaniu, które sprawia, że ​​myślisz, że rozwiązuje problem w twoim pytaniu? Nie jestem sarkastyczny, jestem po prostu ciekawy. Dzięki! – Jeach

+0

obvioiusly Nie mogę mówić za OP, ale Naked Object Frameworks robią dokładnie to, o co prosił: generują interfejs użytkownika z API –

2

nie będę dostarczenie rozwiązania, ale będę próbować odpowiedzieć na pytanie, dlaczego.

Więc nie mówię za wszystkich, ale przynajmniej dla mnie, uważam, że jednym z powodów jest to, że programiści koncentrują się na funkcjonalności bardziej niż na użyteczności i nie są zbyt artystyczni. Myślę, że mają po prostu inny rodzaj kreatywności. Uważam, że zajmuje mi to dużo czasu, aby stworzyć odpowiednią grafikę, w porównaniu do tego, ile czasu zajmuje mi napisanie kodu (Chociaż, w przeważającej części, nie robiłem żadnych projektów z zbyt wieloma wymaganiami graficznymi).

7

Nie wierzę, że programowanie interfejsu użytkownika jest bardziej czasochłonne niż jakiekolwiek inne programowanie, ani nie jest bardziej podatne na błędy. Jednak błędy w interfejsie użytkownika są często bardziej oczywiste. Wykrywanie błędu w kompilatorze jest często o wiele trudniejsze.

Jedną z wyraźnych różnic między programowaniem interfejsu użytkownika jest to, że na drugim końcu znajduje się osoba, a nie inny program, który bardzo często ma miejsce podczas pisania kompilatorów, analizatorów składni, debugerów i innych kodów, z którymi się komunikuje. inne programy i komputery. Oznacza to, że podmiot, z którym się komunikujesz, nie jest dobrze określony i może zachowywać się bardzo nieregularnie.

EDYCJA: "nieprzewidywalny" to prawdopodobnie bardziej odpowiedni termin./Jesper

Twoja konwersja interfejsu API na interfejs użytkownika nie ma dla mnie sensu. O czym mówisz?

+0

"nie jest dobrze określony i może zachowywać się bardzo nieregularnie" - jak prawdziwe! +1 – Treb

+0

Co to jest interfejs API, jeśli nie jest interfejsem użytkownika dla programisty. – Newtopian

+0

Programy same w sobie są pisane przez ludzi i zwykle nie są dobrze określone i zachowują się nieprawidłowo. Co więcej, twoja interpretacja użytkownika jako jakiegoś nieodłącznie wadliwego bytu jest źródłem wszystkich problemów związanych z użytecznością. –

0

Jednym z powodów jest to, że nie mamy dobrze rozwiniętego wzorca dla UTDD - User Test Driven Development. Nie widziałem też wielu dobrych przykładów mapowania historii użytkowników na testy jednostkowe. Dlaczego, na przykład, robisz tak mało tutoriali na temat historii użytkowników?

1

Automatyczne generowanie interfejsów użytkownika może być w pewnym stopniu możliwe, ponieważ może generować kontrolki dla wymaganego wejścia i wyjścia danych. Ale projektowanie interfejsu użytkownika jest znacznie bardziej zaangażowane niż po prostu umieszczenie wymaganych kontrolek na ekranie. Aby stworzyć użyteczny, przyjazny interfejs użytkownika, należy połączyć wiedzę z dziedzin takich jak projektowanie grafiki, ergonomia, psychologia itp. Jest powód, że interakcja człowiek-komputer staje się dyscypliną samą w sobie: nie jest trywialne, aby stworzyć przyzwoity interfejs użytkownika.

Więc nie sądzę, że istnieje rzeczywiste rozwiązanie twojego problemu. Projektowanie interfejsu użytkownika to złożone zadanie, które wymaga czasu. Jedynym obszarem, w którym stosunkowo łatwo wygrać trochę czasu, jest narzędzie: jeśli posiadasz zaawansowane narzędzia do implementacji projektu interfejsu użytkownika, nie musisz ręcznie kodować każdego piksela interfejsu użytkownika.

1

Masz całkowitą rację, mówiąc, że interfejs użytkownika jest czasochłonny, kosztowny i podatny na błędy!

Wielki kompromis znalazłem się następująco ...

zdałem sobie sprawę, że wiele danych (jeśli nie większość) można przedstawić za pomocą prostego stołu (takich jak JTable), zamiast nieustannie próbować tworzyć niestandardowe panele i fantazyjne GUI. Na początku nie wydaje się to oczywiste, ale jest całkiem przyzwoite, użyteczne i atrakcyjne wizualnie.

Dlaczego jest tak szybki?Ponieważ udało mi się stworzyć ramę wielokrotnego użytku, która może przyjmować kolekcję konkretnych modeli i przy niewielkim wysiłku, może sprawić, że wszystkie te modele znajdą się w tabeli. Tak wiele kodu ponownego wykorzystania, to niewiarygodne.

Dodając pasek narzędzi nad oknem, moja struktura może dodawać, usuwać lub edytować wpisy w tabeli. Korzystając z pełnej mocy JTables, mogę ukryć (przez filtrowanie) i sortować w razie potrzeby, rozszerzając różne klasy (ale tylko wtedy, gdy jest to wymagane).

Używam wielu kawałków kodu za każdym razem, gdy chcę wyświetlać i zarządzać nowymi modelami. Używam szeroko ikon (na kolumnę, wiersze lub komórki, itp.), Aby upiększyć ekrany. Używam dużych ikon jako nagłówka okna, aby każdy ekran był "inny" i atrakcyjny i zawsze wygląda jak nowy i inny ekran, ale zawsze jest za nim ten sam kod.

Najpierw trzeba było dużo pracy i wysiłku, aby zrobić ramy, ale teraz spłacanie czasu.

Potrafię napisać GUI dla zupełnie nowej aplikacji z aż 30 do 50 różnych modeli, składającą się z tak wielu ekranów w ułamku czasu, jaki zajęłoby mi użycie "niestandardowej metody interfejsu użytkownika".

Polecam ocenić i zbadać to podejście!

+0

Dlaczego na ziemi użytkownik chce zobaczyć datamodel. Przez większość czasu użytkownik nie jest zainteresowany. Chcą wykonać zadanie zorientowane na cel przy jak najmniejszym wysiłku. Interfejs użytkownika powinien interpretować model w języku użytkowników, a nie programistów. – haqwin

+0

Nie jestem pewien, co mówisz o haqwin? Mówię o metodologii wdrażania i najlepszych praktykach ... ani razu nie wspomniałem o użytkownikach, ich zainteresowaniach i ich wysiłkach. Przeczytaj ponownie mój komentarz. Jeśli masz doświadczenie w MVC, zrozumiesz, co to znaczy ... Podsumowując: 1) Unikaj skomplikowanych interfejsów dzięki niestandardowym ekranom i panelom 2) Standaryzuj prezentację (wolę używać JTables) 3) Kod ponownego użycia/ramy, a tym samym szybszy rozwój i mniej błędów – Jeach

0

To trudne, ponieważ większość użytkowników/klientów jest głupia i nie może myśleć prosto! :) Jest to czasochłonne, ponieważ twórcy UI/projektanci są tak obsesyjno-kompulsywne! :)

Powiązane problemy