Temat: W poszukiwaniu sponsorów
Szukam sponsorów na ten projekt:
Lista zakupów jest projektem testowym. Dzięki pomocy ludzi z TandemSeven oraz wielu innych osób, postanowiłem ruszyć z tym projektem. Ale jak to bywa, zanim zaczniesz pisać aplikację, stwórz badania rynku, persony oraz napisz specyfikację. Wszystko zaczęło się od badań rynku. Zostało zadane kilka prostych pytań grupie testowej osób w różnym wieku. Poniżej znajdują się pytania i odpowiedzi.
Czasami zadajemy bardzo śmieszne pytania
Jak często robisz zakupy?
Tu już wyszły pierwsze różnice demograficzne. Mężczyźni w wieku od 50 lat wzwyż, robią zakupy raz w tygodniu. Kobiety i młodsi mężczyźni kilka razy w tygodniu. Naprawdę bardzo ciekawa obserwacja.
Czy zależy Ci na tym, żeby sklep w którym kupujesz produkty, znajdował się blisko twojego domu?
Wielu osobom nie zależy na tym, ale według nich byłoby wskazane, żeby program oferował tą funkcjonalność. Natomiast większość zdecydowanie uważa, że sklep, do którego idą, powinien być jak najbliżej ich domu. Dodatkowo większość osób życzy sobie, żeby robić zakupy w najwygodniejszym i najlepiej wyposażonym sklepie. To jest ciekawe, prawda?
Czy zależy Ci na tym, żeby sklep był blisko domu?
Tutaj znowu mamy różnice demograficzne. Osoby młode i zajęte, chcą robić zakupy w pobliżu domu. Osobom starszym także na tym zależy. Osoby dobrze usytuowane nie są tym zbytnio zainteresowane, ale uważają, że to jest dobry pomysł i takie coś powinno się znaleźć w wytwarzanym oprogramowaniu.
Czy tworzysz listę zakupów, używając papieru?
Większość osób tworzy swoje listy zakupów na papierze, jeśli zawierają więcej niż trzy produkty. Aczkolwiek są osoby, które po prostu nienawidzą papieru i zapisywania czegokolwiek w formie papierowej.
Czy używasz tabletu lub smartfona?
Większość osób odpowiedziała, że tak. Zaskoczyły mnie osoby, zajmujące się wytwarzaniem oprogramowania z kilku firm na terenie Katowic i Gliwic, które stwierdziły, że za nic w świecie, nie użyją smartfona lub tabletu.
Co lubisz najbardziej w robieniu zakupów?
Dużo osób odpowiedziało, że robienie zakupów to nic przyjemnego. Kilka powiedziało otwarcie, że szuka też miejsca, gdzie można porozmawiać z ludźmi i zjeść coś dobrego. Wiele osób lubi także obejrzeć towar, który kupuje i przekonać się, jak on wygląda rzeczywiście.
Czy potrzebujesz inteligentnej listy zakupów, która pokaże Ci, co masz kupić, gdzie kupisz to najtaniej oraz najbliżej domu?
Na to pytanie padła tylko jedna odpowiedź: TAK. Dla firm software zainteresowanych tym projektem, ta możliwość jest interesująca.
Co powinno się znaleźć na inteligentnej liście zakupów?
Dużo osób powiedziało, że nie ma pojęcia. Kilka poprosiło o przyjrzenie się aplikacji Portfel. Większość powiedziała od razu, że muszą się na niej znaleźć produkty, ceny, sklepy i miejsca.
Czy chcesz robić zakupy bez wychodzenia z domu?
Tutaj padła jedna odpowiedź, jednocząca cały świat: TAK.
Jakich aplikacji używasz?
Używacie wszystkiego, od iPhone, przez aplikacje Android, aż do aplikacji WEB.
Czy podoba Ci się pomysł napisania aplikacji dla ludzi?
Większość osób uważa, że jest to bardzo dobry pomysł. Jeśli to będzie aplikacja opensource, to okazuje się, że większość ludzi kocha OpenSource.
Co uważasz o napisaniu aplikacji dla internautów z ich udziałem, aby pokazać cały proces projektowania aplikacji?
Większość pytanych osób uważa to za świetny pomysł. Bardzo dużo moich przyjaciół z firm software, takich jak TandemSeven, FutureProcessing i Eclipse, uważa, że to bardzo miłe, że ktoś chce pokazać jasne i ciemne strony wytwarzania oprogramowania.
Na podstawie tych badań, powstały persony
Na podstawie waszych odpowiedzi, powstały persony. Więcej o personach dowiesz się z artykułu
http://adrian-stolarski.pl/index.php/post/5/Tworzenie+.... Poniżej znajduje się skrócony opis jednej z person.
Specjalista od doświadczeń użytkownika
Zasadnicze cele Chce mieć miejsce, gdzie może porozmawiać z ludźmi, zjeść dobry obiad, pooglądać mnóstwo rzeczy. Chce, żeby sklep był blisko domu. Częstotliwość robienia zakupów Raz w tygodniu Narracja Codziennie w swojej pracy ma wokół siebie ludzi. Codziennie zadaje im tysiące pytań i dostaje tysiące wspaniałych odpowiedzi. Niestety nie zawsze ma siłę i czas, żeby iść na zakupy. Większość zakupów chciałby robić nie wychodząc z domu.
Jeśli już musi iść na zakupy, idzie tam, gdzie oprócz zrobienia zakupów może dobrze zjeść i pogadać z przyjaciółmi. Chciałby mieć możliwość umówienia się z przyjaciółmi w momencie, kiedy planuję swoje zakupy.
Prawda, że jest to proste?
Na tej stronie pokazuję tylko kawałek opisu persony, która powstała na potrzeby tej aplikacji. Idealnym rozwiązaniem dla was jest napisanie person samemu i wyznaczenie im celów oraz napisanie historii.
Pisanie specyfikacji
Dla każdego programu trzeba napisać prostą specyfikację, lepiej napisać kilka zdań niż nic. Ale nie warto tutaj jeszcze się rozwodzić nad tym, w jaki sposób aplikacja ma działać. To wszystko wyjdzie później. Specyfikacja to jest to, co będzie się zmieniać.
Bardzo prosta specyfikacja
Celem jest napisanie inteligentnej listy zakupów. Lista zakupów powinna zawierać dostępne produkty, sklepy w których można je kupić oraz ciekawe miejsca, w których się one znajdują.
Lista zakupów na tym etapie tworzenia aplikacji powinna mieć kilka funkcjonalności. Aplikacja musi umożliwiać stworzenie listy zakupów, edycję listy zakupów, zapis listy zakupów oraz zamknięcie listy zakupów.
Użytkownik musi wybrać, czy chce robić zakupy w jednym sklepie, czy chce zrobić je najtaniej oraz czy chce, żeby jego sklep znajdował się jak najbliżej domu.
Historie użytkownika
Historie użytkownika to o wiele lepsza specyfikacja na tym etapie planowania aplikacji. W tym momencie wyłaniają nam się cztery główne funkcjonalności. Ale zacznijmy od historii użytkownika.
"Jako użytkownik, chcę mieć możliwość przeglądania produktów, bo może znajdę coś, co mi się spodoba." "Jako użytkownik, chcę mieć możliwość przeglądania sklepów, jakie są dostępne, bo być może oferują coś, co mnie zaciekawi." "Jako użytkownik, chcę mieć możliwość przejrzenia ciekawych miejsc w okolicy, ponieważ być może zostanę w którejś z lokalizacji na dłużej." "Jako użytkownik, chcę mieć możliwość utworzenia i zarządzania moją indywidualną listą zakupów, abym zawsze zapamiętał, co mam kupić w sklepie."
To także nie jest zbyt skomplikowane, prawda?
Prototypowanie czterech głównych historii użytkownika
Tak jak już mówiłem, cały projekt jest dostępny na otwartym systemie kontroli wersji. Oto jego adres:
https://code.google.com/p/smart-shopping-list/. Cały projekt powstaje za pomocą planowania zstępującego, czyli zaczynamy od ogółu i idziemy do szczegółu. Programiści to taka nacja, że chcą szybko coś napisać. A więc napiszmy sobie prototyp naszej aplikacji. Na początek powstaną dwie klasy, jedna z metodą main(), natomiast druga będzie tak zwanym ApplicationRunner. Znajdzie się ona w osobnej warstwie o nazwie core i będzie to drobne oszustwo, ponieważ w rzeczywistości należy ona do logiki aplikacyjnej. Więcej o architekturze wielowarstwowej dowiecie się z mojego artykułu zamieszczonego tutaj:
http://resources.infosecinstitute.com/good-programming.... Do tego, wygenerujemy wszystkie klasy, które są niezbędne klasie ApplicationRunner() i umieścimy je w warstwie logiki aplikacji. Oto kod:
SamrtShoppingList.java
import core.ApplicationRunner; public class SmartShoppingList {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationRunner applicationRunner = new ApplicationRunner();
applicationRunner.run();
}
}
ApplicationRunnable_Interface
package core;
public interface ApplicationRunnable_Interface { public void run(); }
ApplicationRunner.java
package core;
import logic.CurrentSoftwareState; import logic.UsageDescision; import logic.UsserPassedData;
public class ApplicationRunner implements ApplicationRunnable_Interface{
public void run() {
UsageDescision usageDecision = getUsageDecisionFromUser();
if(doesUserDecideToUsage(usageDecision)){
UsserPassedData userPassedData = getSoftwareStateFromUser();
CurrentSoftwareState state = initialiseSoftwareState(userPassedData);
softwareStarts(state);
}
}
private CurrentSoftwareState initialiseSoftwareState(
UsserPassedData userPassedData) {
// TODO Auto-generated method stub
return null;
}
private void softwareStarts(CurrentSoftwareState state) {
// TODO Auto-generated method stub
}
private boolean doesUserDecideToUsage(UsageDescision usageDecision) {
// TODO Auto-generated method stub
return false;
}
private UsserPassedData getSoftwareStateFromUser() {
// TODO Auto-generated method stub
return null;
}
private UsageDescision getUsageDecisionFromUser() {
// TODO Auto-generated method stub
return null;
}
}
To jest idealny sposób na wygenerowanie runnera aplikacji. Kod wszystkich pozostałych klas znajduje się na SVN. W następnej części zajmiemy się implementacją pierwszej funkcjonalności. I w końcu może napiszemy jakieś testy aplikacyjne. Jeszcze wyjaśnię jedną rzecz. Aplikacja jest konsolowa, dopiero później wyjdzie się do GUI, zarówno w formie apletu jak i aplikacji desktop, a potem przyjedzie czas na Androida. Najpierw podstawy, potem GUI, innej drogi nie ma.
Więcej:
http://adrian-stolarski.pl/index.php/post/10/Obiecany+...