Jak przenieść klienta z makiet interfejsu użytkownika do zestawu rzeczywistych wymagań?

17

Załóżmy, że otrzymałeś makietę 25 ekranów stanów wizualnych Twojej aplikacji. Oczekujemy, że to wystarczy, aby mieć pewność, że możemy się rozwijać i przekazać pierwotnemu interesariuszowi lub klientowi jako gotowy wniosek, a oni będą zadowoleni. Oczywiście, ostatecznie skończysz z zadawaniem interesariuszom wielu pytań, które były używane do wymyślenia interfejsu użytkownika, co jest marnotrawstwem.

Jednak wiele razy stwierdziłem, że to bardzo mało, w trakcie tworzenia aplikacji wymagania stają się rozmyte przez fakt, że replikujemy interfejs, a ostatecznie klient nie jest tak szczęśliwy, jak się początkowo wydawało kiedy poprosiliśmy ich o wszystkie informacje, aby utworzyć interfejs użytkownika.

Po prostu nie jestem pewien, o co jeszcze prosić, starałem się być konkretny i prosić o wymagania i zrozumienie ogólnego celu, ale nie wiem, o co powinienem prosić. Jeśli zacznę teraz, dużo czasu zostanie zmarnowane na ponowne zebranie wszystkich informacji, które prowadzą do interfejsu użytkownika, i podczas tej fazy wiele ważnych powodów, dla których pierwotnie klient został utracony.

Jak sprawić, by ludzie zrozumieli, że nie możemy zablokować wymagań opartych na makietach interfejsu użytkownika, prosząc o coś, co mogliby dla mnie stworzyć?

Od czego najlepiej zacząć, aby właściwie wykonać zadanie opracowania aplikacji dla użytkowników końcowych?

MetaGuru
źródło
Jak pytasz o wymagania? Czy po prostu idziesz do klienta / użytkownika i pytasz „czy mogę mieć wymagania?” czy używasz różnych technik w celu uzyskania, uchwycenia, zweryfikowania i potwierdzenia wymagań?
Thomas Owens
2
W tym przypadku nie jest łatwo radzić sobie z programistami. Ekrany po prostu nie opisują aplikacji. Mój obecny pracodawca tego nie rozumie. Moje wysiłki są zazwyczaj nastawione na przechodzenie przez każdy ekran i zadawanie wielu pytań na temat zachowań każdego elementu i „co jeśli”. W ten sposób masz nadzieję na wyodrębnienie funkcji i możliwość zaprojektowania tego, co będzie pod blaskiem.
Przypon
2
Wydaje mi się, że jest to lepsze niż specyfikacja 25-kartkowego pliku Excela, która jest zbyt powszechna.
Morgan Herlocker,
1
Z twojego pytania nie wynika jasno, czy jest to po prostu to, co podarował Ci klient, LUB czy to właśnie ktoś inny z twojego zespołu stworzył w wyniku próby uchwycenia wymagań. Jeśli tak jest, to masz problem w organizacji, który może być dość głęboko osadzony. Jeśli tak jest, musisz przećwiczyć niektóre techniki zbierania wymagań, które inni zalecają.
Angelo
1
@ Ryan, w takim razie mam nadzieję, że facet od wymagań będzie w stanie odpowiedzieć na wszystkie pytania, które będziesz miał dla niego! Może po prostu spodziewa się, że będziesz nieformalnie interaktywnie wypełniać z nim wszystkie wymagania? To optymistyczny scenariusz.
Angelo

Odpowiedzi:

19

Niektóre inne rzeczy, których możesz potrzebować, to:

  • Przypadki użycia lub opisy przepływu pracy: Tylko dlatego, że wiesz, jak wygląda ekran, czy wiesz, jak obsługiwane są złe dane wejściowe? Czy wiesz, jak przechodzić między ekranami we WSZYSTKICH przypadkach? Tutaj możesz również uwzględnić obsługę błędów.

  • Opis systemu wysokiego poziomu: Coś wyjaśnia, do czego służy cały system, dla którego 25 ekranów jest, i co robią.

  • Model danych: Czy można wywnioskować model danych z tych ekranów? Czy istnieje model danych, który należy zastosować, czy jesteś w stanie zaprojektować własny, aby wykonać zadanie?

  • Wymagania techniczne: Czy należy stosować określone technologie ze względu na licencję lub integrację?

  • Wymagania dotyczące wydajności: czy istnieje ekran wyszukiwania, czy oczekuje się tego, co można przeszukiwać i jak szybko powinna odpowiadać? Co z odpowiedziami na inne rodzaje działań? Czy niektóre z nich mogą być asynchroniczne (użytkownik przesyła zadanie i wraca później)?

  • Wymagania bezpieczeństwa: Czy aplikacja przechowuje potencjalnie wrażliwe / osobiste dane, a jeśli tak, jakie rodzaje danych i co należy zrobić, aby je zabezpieczyć? Czy musisz spełnić pewien poziom zgodności (np. Zgodność PCI przy płatności kartą kredytową)?

Ponadto, czy jest jakaś specjalna wiedza w domenie biznesowej, której możesz potrzebować, aby Ci pomóc? Niektóre branże, takie jak ubezpieczenia, bankowość, medyczna dokumentacja medyczna itp. ... mają różnego rodzaju złożoną logikę biznesową. Nie należy podejmować takich projektów bez pomocy analityka biznesowego, który zna tę domenę. Ale jeśli jest to tylko koszyk / strona z informacjami dla ogólnych widżetów, może nie być potrzebny taki członek zespołu.

FrustratedWithFormsDesigner
źródło
1
Nie wiem, czy zrobiłeś to celowo, ale ta lista jest nawet w kolejności ważności, a przypadki użycia i opis systemu na wysokim poziomie (czy przynajmniej oznaczały ekrany makiety?) Są zdecydowanie najważniejszymi rzeczami. Nie wiem, czy wymagania bezpieczeństwa mają sens prosić o thpugh. Wydaje mi się, że jako programista powinieneś mieć lepszą wiedzę o tym, jakie zabezpieczenia są potrzebne do obsługi ich przypadków użycia, więc powinieneś zdecydować o wymaganiach bezpieczeństwa na podstawie przypadków użycia, a następnie poinformować klienta.
jhocking
10

Jak sprawić, by ludzie zrozumieli, że makiety interfejsu użytkownika nie wystarczą do utworzenia działającego programu:

Poradziłbym sobie z tym przez analogię. Ponieważ jestem trochę szalonym samochodem, idę tą drogą.

„Udawaj, że nic nie wiem o samochodach. Dajesz mi kilka zdjęć Ferrari. Kilka z zewnątrz i jedno z wnętrza samochodu (zrobione z siedzenia kierowcy, dzięki czemu mogę zobaczyć elementy sterujące samochodu). Teraz pytasz mnie aby zbudować ci Ferrari. Wracam z czymś, co wygląda jak na zdjęciach i ma wszystkie elementy sterujące. Niestety te elementy sterujące nie są do niczego podłączone, ponieważ (ponieważ nic nie wiem o samochodach) nie wiem, co te kontrole powinny zrobić. Nie mogę nawet zgadywać, bo nawet nie wiem, co powinny zrobić samochody. Więc mamy taką rozmowę:

„Więc co robi Ferrari?” „Pozwala mi to szybko przenosić się z jednego punktu do drugiego”. „OK. Więc co robi to koło?” „Och, to jest kierownica. Obracając ją, możesz zmienić, w jaki sposób koła znajdują się na zewnątrz punktu samochodu. To zmieni sposób, w jaki samochód porusza się.” „OK, a co z tym pedałem?” „To jest pedał gazu. Sprawia, że ​​silnik jedzie szybciej, co sprawia, że ​​samochód jedzie szybciej”. … kilka minut później… „Ok, więc jakiego silnika potrzebuje? Przeprowadziłem badania i znalazłem silniki do wózków golfowych i niektóre do samochodów sportowych. Z których powinienem korzystać?” ... itd. ... ”

Następnie możesz wyjaśnić analogię. Przekazanie programistom makiet ekranów mówi im tylko, jak to wygląda, a nie to, co robi. Deweloperzy muszą wiedzieć, jaki problem rozwiązuje program lub jak będzie z niego korzystać (np. Wiedza o tym, co robi samochód, ułatwia projektowanie samochodu i zgadywanie, co należy zrobić). Muszą wiedzieć, jakich rzeczy powinni używać (tj. Silnik wózka golfowego vs. silnik samochodu sportowego) i jakie są inne wymagania niezwiązane z interfejsem użytkownika (samochód powinien jechać szybko).

Rzeczy, o które prosiłbym:

Opis problemu ogólnego / wysokiego poziomu

Przypadki użycia / historie użytkowników

Wymagania dotyczące wydajności

Wymagane technologie / platforma (Windows, Linux, sieć)

W swojej odpowiedzi ma wszystko FrustratedWithForms

Becuzz
źródło
1
+1 za świetną analogię, chociaż nie jestem pewien, czy to naprawdę najlepszy sposób na komunikację z klientem. Powiem to moim nietechnicznym przyjaciołom, aby pomóc wyjaśnić, co robię, ale dla klienta, który może być trochę protekcjonalny.
jhocking 21.09.11
@ jhocking Całkowicie zgadzam się, że użycie tej analogii nie jest sposobem komunikacji z klientem. Przyjąłem założenie, że kpiny pochodzą od kogoś w twojej firmie, który już rozmawiał z klientem. Jeśli musisz przekazać to klientowi, po prostu wyjaśnij, że makiety pokazują, jak to wygląda, ale niewiele mówi o tym, co robi (każda informacja, którą otrzymujesz z makiety, jest w najlepszym razie przypuszczeniem). Muszą powiedzieć ci więcej o tym, co robisz. Musisz tylko znaleźć dobry sposób, aby o to zapytać i przekazać.
Becuzz
5

80% nakładów na rozwój idzie w kierunku 20% przypadków użycia na marginesie. Zrzuty ekranu nie informują o przypadkach użycia, więc będziesz w ciemności przez 80% swojego aktywnego rozwoju.

Dobrze, że próbujesz dowiedzieć się więcej i komunikować, jak ważne jest, aby klient był bardziej zaangażowany w wymagania dotyczące projektu, jednak jeśli tego nie zrobi, wówczas przygotowuje projekt na niepowodzenie, i to nie twoja wina.

Większość projektów oprogramowania kończy się niepowodzeniem, ponieważ klient nie jest wystarczająco zaangażowany w proces tworzenia oprogramowania. To nie jest nowy problem i na pewno nie jest tajemnicą, dlaczego projekty komputerowe zawodzą, ale ciągle zdarza się to w branży z powodu takich sytuacji.

Nie możesz po prostu rzucić strumieniem informacji przez ścianę i oczekiwać, że odzyskasz wszystkie swoje nadzieje i marzenia w postaci pakietu oprogramowania. Tworzenie oprogramowania po prostu nie działa w ten sposób. Niezależnie od tego, czy prowadzisz sklep Agile, czy Waterfall, solidny sukces klienta jest niezbędny do powodzenia lub niepowodzenia projektu.

wałek klonowy
źródło
2
„Nie możesz po prostu rzucić strugą informacji przez ścianę i oczekiwać, że odzyskasz wszystkie swoje nadzieje i marzenia w postaci pakietu oprogramowania” Uwielbiam to zdanie i tak bardzo je kradnę.
HLGEM
@HLGEM, weź to, jest twoje!
wałek klonowy
4

Jedną rzeczą, o której ludzie zdają się zapominać, jest pytanie, do czego będą wykorzystywane dane po ich wprowadzeniu? Potrzebujesz raportów? Czy musisz wygenerować dokument dostawy i wysłać go do magazynu w celu wysyłki itp. Jeśli dane są wykorzystywane do podjęcia decyzji o zarządzaniu i potrzebne jest raportowanie, może to zmienić projekt bazy danych. Może także wydłużyć czas opracowywania w zależności od złożoności raportów.

Musisz także upewnić się, że istnieje ścieżka dla każdej możliwej decyzji. Więc jeśli coś wymaga zatwierdzenia przez kierownictwo - to co robisz, jeśli jest odrzucane, a także co robisz, jeśli jest zatwierdzone. Jeśli nie zostanie zatwierdzone lub odrzucone w X czasie, co się z tym stanie? Jeśli wybiorą produkt, którego nie ma na magazynie, co stanie się z zamówieniem? Tego rodzaju pytania.

Musisz także wiedzieć, czy istnieją określone ograniczenia dotyczące tego, jakie dane należy umieścić w każdym polu. Czy są wymagane wartości? Skąd masz je zdobyć? Jak będą aktualizowane? Musisz wiedzieć, jak obsługiwać błędy. Musisz wiedzieć, czy baza danych musi podlegać inspekcji, czy też musisz mieć możliwość odtworzenia danych z historycznego punktu widzenia (powrót do tych nieznośnych raportów).

Inną rzeczą, którą widzę, jest to, że aplikacje mogą być projektowane dopiero po premierze, bez względu na to, jak dane będą później utrzymywane. Czy potrzebujesz strony administratora, aby upewnić się, że mogą zaktualizować swoje listy wymaganych wartości? Czy musisz wysyłać dane tam iz powrotem do innych systemów. Jak dostaniesz początkowe dane do bazy danych?

HLGEM
źródło
3

Osobiście poprosiłbym o półdniowe lub całodniowe spotkanie z klientem, aby zapoznać się z projektem interfejsu użytkownika i jego celami oraz upewnić się, że wszystko się zgadza.

Wyatt Barnett
źródło
2

Zacznij prosto. Spraw, by zrozumieli, że dzięki przekazanym informacjom żaden z tych ekranów nic nie zrobiłby . Brak szczegółowych informacji o przypadkach użycia, złym zachowaniu danych wejściowych itp. To po prostu nie zadziała. Wyjaśnienie tępego uogólnienia jest łatwiejsze niż wyjaśnienie szczegółów, ponieważ nie można się zgubić. Próba podania im bardziej skomplikowanego uzasadnienia, dlaczego makiety ekranu nie są wystarczające, daje im możliwość sprawdzenia twoich definicji zamiast uznania problemu. Poproś, aby wyobrazili sobie, że programista zaplecza nie mówił po angielsku (ani w żadnym innym języku, w jakim wyświetlane są ekrany). Następnie zapytaj, jak różni się ta sytuacja od programisty, który nie ma żadnej wiedzyich procesów biznesowych. Następnie zbudujcie bardziej realistyczny przykład samych siebie, którzy mają pewną wiedzę, ale mają uzasadnione przekonanie, że nie należy decydować o ich logice biznesowej.

Tom W.
źródło
2

Ludzie, którzy nie opracowali oprogramowania, nie wiedzą, co programiści powinni wiedzieć. Nie można oczekiwać, że same opracują specyfikacje wymagań i przypadki użycia. Musisz zastosować techniki wywoływania wymagań , aby uzyskać informacje, które musisz znać. Współpracuj z klientem (i, mam nadzieję, próbą użytkowników z różnych ról), aby określić, czego potrzebują lub chcą. Typowymi technikami tego są wywiady i / lub obserwacje użytkowników, identyfikacja przypadków użycia i historii użytkowników oraz prototypowanie.

Zdecydowanie poleciłbym zastosowanie iteracyjnych i przyrostowych technik programistycznych w tym przypadku, ponieważ masz niejasne, niepełne lub źle zrozumiane wymagania. Spójrz na różne metodyki zwinne wraz z modelem spiralnym do planowania planowania cyklu życia.

Zacznij od osiągnięcia celu biznesowego napędzającego rozwój tego oprogramowania. Przeprowadzaj wywiady z klientem i użytkownikami, a jeśli możesz, obserwuj ich w pracy. Spróbuj ustalić, jaki problem próbują rozwiązać. Zobacz, jakich narzędzi obecnie używają i jak z nich korzystają, abyś mógł poprawić swój obecny sposób robienia rzeczy. Skorzystaj z tej okazji, aby poznać domenę i jej język - komunikowanie się będzie nieskończenie łatwiejsze, jeśli programiści i klienci / użytkownicy będą mówić w tym samym języku (i nie oczekują, że klient / użytkownicy będą mówić w kategoriach oprogramowania).

Kiedy zrozumiesz, jakie są cele, możesz rozpocząć pracę z makietami projektu interfejsu użytkownika, które posiadasz, i „inżynierii wstecznej” przypadków użycia i historii użytkowników z nich opartych na tym, jak różne ekrany pasują do siebie. Format historii użytkownika prawdopodobnie sprawdziłby się dobrze w kontaktach z nietechniczną publicznością. Format As a <user type>, I want to <action> so that <reason>działa, jeśli chodzi o zachęcanie programistów i klientów / użytkowników do mówienia tym samym językiem. Gdy tylko zaczniesz opowiadać historie użytkowników, przyjmuję prototypowe podejście do rozwoju.

Myślę, że podszedłbym do tego za pomocą prototypowania. Możesz podejść do tego z ewolucyjnego prototypowania lub z rzucania prototypów , ale najpierw rozważę ewolucyjne podejście do prototypowania. Zacznij od opowiadań użytkowników, z którymi czujesz się najlepiej i które zweryfikowałeś, i zacznij je wdrażać. Po ich wdrożeniu uzyskaj informacje zwrotne od klienta i opracuj nowe historie użytkowników, przykłady użycia i rozwiąż nieporozumienia.

Nie myśl też o tym jako o „implementacji interfejsu użytkownika z funkcjami”. Zamiast tego pomyśl o tym jak o cienkich pionowych plasterkach. Nie implementuj całego interfejsu użytkownika na raz, a potem martw się o funkcje. Zamiast tego użyj makiet interfejsu użytkownika, aby zidentyfikować funkcje i inne wymagania, a następnie zaimplementować pionowy przekrój od interfejsu użytkownika do logiki biznesowej i magazynu danych. Powtórz to dla każdego pionowego plasterka. Powinieneś również zaproponować ulepszenia interfejsu użytkownika w oparciu o wymagania i zasady użyteczności.

Poleciłbym przeczytać dwie książki Karla Wiegera - Wymagania dotyczące oprogramowania i Więcej na temat wymagań dotyczących oprogramowania . Myślę, że te pomogą ci w inżynierii wymagań i najlepszych praktykach w tej dziedzinie.

Thomas Owens
źródło
4
Pamiętaj tylko, że jeśli masz prototyp, nigdy nie sprawiaj, że interfejs użytkownika będzie wyglądał na dopracowany i gotowy, pomyślą, że skończyłeś kodować, jeśli ekran wygląda na skończony.
HLGEM
@HLGEM Bardzo prawda, bardzo prawda. Jestem pewien, że już wcześniej udzielałem takich porad na tej stronie.
Thomas Owens
1

Cóż, jest to żenująco oczywiste odniesienie początkowe, ale Wikipedia może być miejscem dla Ciebie i użytkowników, aby zacząć. Fakt, że jest wpis na ten temat, może pomóc im przekonać, że to prawdziwy problem, a nie ból.

Mówiąc dokładniej, czy po prostu zastanawiasz się, co robi aplikacja, nawet po przejrzeniu makiet? Jeśli tak, to przyznaj się i spróbuj wyjaśnić, że nie masz pojęcia, jakie dane powinien wyświetlać każdy formularz lub skąd miałby pochodzić, czy pochodzą one z innych ekranów lub danych zewnętrznych?

Jeśli masz jakiś pomysł, postaraj się wymyślić przykłady rzeczy, których nie wiesz, jak to zrobić („czy lista szablonów do wyboru będzie jedną globalną listą, którąś z nich będzie użytkownik, czy coś innego? nie przez użytkownika, czy powinienem pozwolić, aby dwie osoby jednocześnie go edytowały? Co powinien pokazywać interfejs użytkownika, jeśli ktoś go edytuje? Czy jest na to ekran? Kiedy ktoś użył szablonu dla dowolnych szablonów, a następnie szablon został edytowany czy tę zmianę należy propagować do rzeczy, które zrobili za pomocą szablonu? ”).

Wyjaśnij, że przy obecnym poziomie wiedzy będziesz potrzebować odpowiedzi na pytania co około 90 sekund przez resztę cyklu programowania, a przez większość czasu nie będziesz w stanie kontynuować pracy, dopóki nie otrzymasz odpowiedzi. Celem powinno być wyjaśnienie, dlaczego jakiś proces ułatwi to wszystko. Wspomnij również, że do kontroli jakości potrzebne będą te same informacje, które robisz, więc łatwiej będzie to wszystko zapisać, aby były dostępne dla wszystkich i nikt niczego nie zapomni.

Warto wspomnieć, że część kodu, który piszesz, wpływa na więcej niż jeden ekran na raz, więc jeśli uzyskasz jak najwięcej odpowiedzi z przodu, może to ułatwić odpowiednie napisanie tego kodu i nie trzeba go później zmieniać.

Jeśli nadal nie możesz uzyskać wymagań i naprawdę nie wiesz, jak postępować, wysyłaj wiadomości e-mail za każdym razem, gdy potrzebujesz więcej informacji (tj. Wymagań), a jeśli nie możesz kontynuować pracy bez tych informacji, wyraźnie zaznacz, że niestety nie mogą kontynuować pracy, ponieważ kod, który musisz napisać, będzie bardzo różny w zależności od odpowiedzi na pytania. Nie narzekaj, po prostu bardzo profesjonalnie poinformuj ich, że nie możesz napisać programu, dopóki nie wiesz, co powinien zrobić.

psr
źródło
0

Musisz znać limity i zakresy dla każdego pola w aplikacji. Na przykład, jeśli pole to numer telefonu, czy oczekują, że poradzisz sobie z +1? Które pola są wymagane? Co mają zrobić aplikacja, jeśli użytkownik wpisze „abc” w polu numeru telefonu? Czy wszystkie 25 ekranów jest w kolejności, w której wszyscy użytkownicy muszą kontynuować?

W przeciwnym razie po prostu utwórz wszystko jako pola tekstowe i gotowe! Chcesz się założyć, że przejdzie jak balon prowadzący?

SnoopDougieDoug
źródło