Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00523 012661 11057561 na godz. na dobę w sumie
Head First Software Development. Edycja polska - książka
Head First Software Development. Edycja polska - książka
Autor: , Liczba stron: 472
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-1547-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> techniki programowania
Porównaj ceny (książka, ebook, audiobook).

Opanuj niezwykłą sztukę wytwarzania oprogramowania!

Proces wytwarzania oprogramowania -- już sam opis sugeruje trudności. I rzeczywiście -- jest to proces niezwykle złożony. Od samego początku trafiamy na kwestie takie, jak analiza potrzeb klienta i zebranie jego wymagań. Z każdym krokiem wszystko komplikuje się jeszcze bardziej... Konieczna jest implementacja poszczególnych wymagań klienta, testowanie tych rozwiązań, korekta znalezionych błędów. Na to wszystko nakłada się jeszcze konieczność tworzenia różnych wersji rozwiązań i zmienny nastrój klienta. Jak sobie z tym wszystkim poradzić? Jak bezboleśnie i skutecznie przejść przez cały ten proces?

Tylko bez obaw! Oto podręcznik, który dzięki innowacyjnym metodom przekazywania wiedzy sprawi, że szybko zrozumiesz proces wytwarzania oprogramowania i nauczysz się gładko podążać jego wyboistą ścieżką. Autorzy książki 'Head First Software Development. Edycja polska' -- Dan i Russ -- pokażą Ci, w jaki sposób zadowolić klienta i zebrać od niego wymagania oraz określić jego potrzeby. Dowiesz się, jak zapanować nad poszczególnymi wersjami Twojego projektu. Nauczysz się prowadzić testy i usuwać błędy. Zdobędziesz informacje dotyczące wytwarzania oprogramowania sterowanego testami, a na koniec zobaczysz, jak taki proces wygląda w rzeczywistości. Wszystkie te informacje przedstawione zostały na licznych ilustracjach, co wydatnie ułatwia przyswajanie wiedzy, dodatkowo przekazanej przystępnym i pełnym humoru językiem. Po lekturze tego podręcznika nawet laik będzie w stanie zarządzać takim procesem!

Tworzenie oprogramowania? Nic prostszego!!!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Head First Software Development. Edycja polska Autor: Dan Pilone, Russ Miles T‡umaczenie: Tomasz Walczak ISBN: 978-83-246-1547-6 Tytu‡ orygina‡u: Head First Software Development Format: 200x230, stron: 472 Opanuj niezwyk‡„ sztukŒ wytwarzania oprogramowania! (cid:149) W jaki spos(cid:243)b zadowoli(cid:230) klienta? (cid:149) Jak wygl„da proces wytwarzania oprogramowania? (cid:149) Jakie pu‡apki czekaj„ na Ciebie? Proces wytwarzania oprogramowania (cid:151) ju¿ sam opis sugeruje trudno(cid:156)ci. I rzeczywi(cid:156)cie (cid:151) jest to proces niezwykle z‡o¿ony. Od samego pocz„tku trafiamy na kwestie takie, jak analiza potrzeb klienta i zebranie jego wymagaæ. Z ka¿dym krokiem wszystko komplikuje siŒ jeszcze bardziej(cid:133) Konieczna jest implementacja poszczeg(cid:243)lnych wymagaæ klienta, testowanie tych rozwi„zaæ, korekta znalezionych b‡Œd(cid:243)w. Na to wszystko nak‡ada siŒ jeszcze konieczno(cid:156)(cid:230) tworzenia r(cid:243)¿nych wersji rozwi„zaæ i zmienny nastr(cid:243)j klienta. Jak sobie z tym wszystkim poradzi(cid:230)? Jak bezbole(cid:156)nie i skutecznie przej(cid:156)(cid:230) przez ca‡y ten proces? Tylko bez obaw! Oto podrŒcznik, kt(cid:243)ry dziŒki innowacyjnym metodom przekazywania wiedzy sprawi, ¿e szybko zrozumiesz proces wytwarzania oprogramowania i nauczysz siŒ g‡adko pod„¿a(cid:230) jego wyboist„ (cid:156)cie¿k„. Autorzy ksi„¿ki (cid:132)Head First Software Development. Edycja polska(cid:148) (cid:151) Dan i Russ (cid:151) poka¿„ Ci, w jaki spos(cid:243)b zadowoli(cid:230) klienta i zebra(cid:230) od niego wymagania oraz okre(cid:156)li(cid:230) jego potrzeby. Dowiesz siŒ, jak zapanowa(cid:230) nad poszczeg(cid:243)lnymi wersjami Twojego projektu. Nauczysz siŒ prowadzi(cid:230) testy i usuwa(cid:230) b‡Œdy. ZdobŒdziesz informacje dotycz„ce wytwarzania oprogramowania sterowanego testami, a na koniec zobaczysz, jak taki proces wygl„da w rzeczywisto(cid:156)ci. Wszystkie te informacje przedstawione zosta‡y na licznych ilustracjach, co wydatnie u‡atwia przyswajanie wiedzy, dodatkowo przekazanej przystŒpnym i pe‡nym humoru jŒzykiem. Po lekturze tego podrŒcznika nawet laik bŒdzie w stanie zarz„dza(cid:230) takim procesem! (cid:149) Zbieranie wymagaæ (cid:149) Planowanie projektu (cid:149) Kontrola wersji (cid:149) Wytwarzanie sterowane testami (cid:149) Testy integracyjne (cid:149) Usuwanie b‡Œd(cid:243)w Tworzenie oprogramowania? Nic prostszego!!! Spis treści (skrócony) Wprowadzenie Doskonały rozwój­ oprogramowania. Zapewnianie zadowolenia klientów Zbieranie wymagań. Określanie potrzeb klientów Planowanie proj­ektu. Planowanie z myślą o sukcesie Opowieści użytkownika i zadania. Przystępowanie do prawdziwej pracy Wystarczaj­ąco dobry proj­ekt. Tworzenie oprogramowania na podstawie doskonałych projektów Kontrola wersj­i. Programowanie defensywne Testy i ciągła integracj­a. Pojawiają się problemy Wytwarzanie sterowane testami. Zapewnianie poprawności kodu Końcówka iteracj­i. Wszystkie elementy łączą się ze sobą… Następna iteracj­a. Jeśli nie jest zepsute… i tak lepiej to naprawić Błędy. Profesjonalne usuwanie błędów Rzeczywisty świat. Proces w praktyce 1 2 3 4 5 6 7 8 9 10 11 12 Dodatek A Pozostałości. Pięć najważniejszych tematów (których nie poruszyliśmy) Dodatek B Techniki i zasady. Narzędzia dla doświadczonych programistów Skorowidz Spis treści (szczegółowy) Wprowadzenie Twój mózg a rozwój oprogramowania. Próbujesz nauczyć się czegoś, jednak mózg próbuje powiedzieć, że to, czego się uczysz, nie jest istotne: „Lepiej umieścić w pamięci ważniejsze informacje, na przykład o dzikich zwierzętach, których należy unikać, i o tym, że wspinanie się po pionowych skałach to zły pomysł”. Jak więc możesz przekonać mózg, że Twoje życie naprawdę zależy od nauczenia się rozwijania doskonałego oprogramowania? Dla kogo przeznaczona j­est ta książka? Wiemy, co sobie myślisz Metapoznanie: myślenie o myśleniu A oto, co TY możesz zrobić, aby zmusić mózg do posłuszeństwa Przeczytaj­ koniecznie Zespół recenzentów technicznych Podziękowania 25 37 63 101 139 179 205 263 301 341 371 403 435 449 459 465 26 27 29 31 32 34 35  Spis treści 1 Doskonały rozwój oprogramowania Zapewnianie zadowolenia klienta Jeśli klient jest niezadowolony, wszyscy są nieszczęśliwi! Rozwój wartościowego oprogramowania zawsze rozpoczyna się od genialnego pomysłu klienta. Twoim zadaniem — jako specjalisty od rozwoju oprogramowania — jest realizacja takich pomysłów. Jednak przekształcenie nieprecyzyjnej idei w działający kod, który ponadto zadowala klienta, nie jest proste. W tym rozdziale pokazujemy, jak sprostać wyzwaniom w obszarze rozwoju oprogramowania i udostępniać potrzebne programy na czas i po ustalonych kosztach. Pora złapać laptopy i rozpocząć naukę dostarczania doskonałego oprogramowania. Szlakami Maciej­a wchodzi do internetu W większości proj­ektów trzeba uwzględnić dwa główne zagadnienia Rozwój­ oprogramowania metodą wielkiego wybuchu Przenieśmy się w czasie — dwa tygodnie później­ Rozwój­ oprogramowania metodą wielkiego wybuchu kończy się zwykle WIELKIMI PROBLEMAMI Doskonały rozwój­ oprogramowania polega na… Dochodzenie do celu dzięki ITERACJOM Każda iteracj­a to miniproj­ekt Każda iteracj­a prowadzi do rozwoj­u oprogramowania o WYSOKIEJ JAKOŚCI Klient BĘDZIE zmieniał zdanie Wprowadzenie poprawek to Twoj­e zadanie Musisz poradzić sobie z POWAŻNYMI problemami… Iteracj­e automatycznie uwzględniaj­ą zmiany Oprogramowanie j­est gotowe dopiero w momencie j­ego UDOSTĘPNIENIA Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 38 39 40 41 42 45 46 50 50 56 56 56 58 61 62 Jesteś w tym miejscu na drodze do udostępnienia doskonałego oprogramowania. Wyjściowy cel. Stosowałeś iteracje, aby dotrzeć do celu… …jednak obecnie znajduje się on gdzie indziej. Cel 10 Spis treści 2 Zbieranie wymagań Określanie potrzeb klientów Nie zawsze można dostać to, czego się chce… jednak lepiej zapewnić to klientom! Doskonały proces rozwoju oprogramowania prowadzi do udostępnienia tego, czego chcą klienci. W tym rozdziale opisujemy komunikowanie się z klientami w celu określenia ich wymagań wobec oprogramowania. Dowiesz się, w jaki sposób opowieści użytkownika, burza mózgów i gra planistyczna pomagają w zrozumieniu odbiorców. Dzięki temu do momentu zakończenia projektu zespół może uzyskać pewność, że stworzył to, czego chcą klienci, a nie tylko marną namiastkę oczekiwanego produktu. Wyświetlanie zamówień Witryna ma wyświetlać Tytuł: Opis: aktualne zamówienia klientom Orbit Oriona. Tytuł: Opis: zarezerwować bilet na prom. Rezerwowanie biletu na prom Klient Orbit Oriona będzie mógł Zamawianie pakietu Tytuł: Klient Orbit Oriona będzie mógł Opis: zarezerwować przez internet pakiet specjalny z dodatkowymi usługami. Tytuł: Opis: zapłacić za zamówione usługi przez internet. Płatności elektroniczne Klient Orbit Oriona będzie mógł Organizowanie podróży Tytuł: Klient Orbit Oriona będzie Opis: mógł zorganizować podróż do kosmodromu i z powrotem. Rezerwowanie miejsca w hotelu Klient Orbit Oriona będzie mógł Tytuł: Opis: zarezerwować miejsce w hotelu. Orbity Oriona przystępuj­ą do modernizacj­i Porozmawiaj­ z klientem, aby uzyskać WIĘCEJ informacj­i W obłokach z klientem Czasem sesj­e buj­ania w obłokach wyglądaj­ą tak j­ak na rysunku… Dowiedz się, co użytkownicy NAPRAWDĘ robią Wymagania muszą być zorientowane na KLIENTA Rozwij­aj­ wymagania na podstawie informacj­i zwrotnych od klienta Opowieści użytkownika opisuj­ą, CO należy zrealizować w proj­ekcie… a szacunki określaj­ą, KIEDY należy to zrobić Rozmowa przy stanowisku pracy Gra w pokera planistycznego Osądź zasadność założeń DŁUGIE w realizacj­i opowieści użytkownika to ZŁE opowieści użytkownika Celem j­est zbieżność Cykl przechodzenia od wymagań do szacunków Na zakończenie można oszacować czas trwania całego proj­ektu Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 0 dni 1/2 dnia 1 dzień 2 dni 8 dni 13 dni 20 dni 40 dni 100 dni 5 dni 3 dni ? 64 67 68 70 71 73 75 77 81 82 85 88 91 94 97 99 11 Spis treści 3 Planowanie projektu Planowanie z myślą o sukcesie Każde wspaniałe oprogramowanie rozpoczyna się od świetnego planu. W tym rozdziale pokazujemy, jak stworzyć dobry plan. Dowiesz się, jak współpracować z klientami w celu określenia priorytetowych wymagań. Zobaczysz, jak planować iteracje, które zespół może następnie realizować. Ponadto nauczysz się tworzyć realistyczny plan rozwoju, który zespół może rzetelnie realizować i kontrolować. Dzięki tym umiejętnościom będziesz umiał łatwo przejść od wymagań do wersji 1.0. Klienci chcą otrzymać oprogramowanie OD RAZU! Określanie priorytetów razem z klientem Wiemy, co znaj­dzie się w wydaniu 1.0 (prawdopodobnie) Jeśli szacowany czas j­est za długi, zmień priorytety Im więcej­ osób, tym mniej­ korzyści Dochodzenie do rozsądnego wydania 1.0 Iteracj­e powinny być krótkie i przyj­emne Porównywanie planu z rzeczywistością Szybkość uwzględnia niespodziewane wydarzenia Programiści myślą w kategoriach dni UTOPIJNYCH Twórcy oprogramowania myślą w kategoriach dni REALNYCH Co zrobić, j­eśli iteracj­a j­est za długa? Uwzględnij­ szybkość PRZED zaplanowaniem iteracj­i Czas na dokonanie oceny Radzenie sobie z wkurzonymi klientami wkurzonymi klientami Duża tablica na ścianie Jak zruj­nować życie osobiste członków zespołu? Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 102 105 106 107 109 110 117 119 121 122 123 124 125 129 130 132 135 137 Oto, co programista MÓWI… Pewnie, nie ma problemu, zajmie mi to dwa dni. Kupię redbulla w drodze do domu, będę pisał kod do 15., pogram trochę w Halo, a następnie popracuję do rana. Prześpię się kilka godzin, poproszę chłopaków o pomoc i skończę do północy — jeśli tylko nie wystąpią jakieś problemy… lub mama nie każe mi odgrzać obiadu. …a to, co tak naprawdę MYŚLI: 12 Spis treści 4 Opowieści użytkownika i zadania Przystępowanie do prawdziwej pracy Pora zabrać się do pracy. Opowieści użytkownika opisują, co programiści mają stworzyć. Następnie trzeba zakasać rękawy i ustalić, co trzeba zrobić w celu realizacji tych opowieści. W tym rozdziale dowiesz się, jak podzielić opowieści użytkownika na zadania, a także w jaki sposób szacowanie czasu wykonania zadań pomaga w kontrolowaniu projektu od początku do końca. Nauczysz się aktualizować tablice, realizować zadania będące w toku oraz w pełni kończyć opowieści użytkowników. Zobaczysz też, jak realizować nieuniknione nieoczekiwane zadania dodawane przez klientów i określać priorytety takich prac. Poznaj­emy iSwoon Łączny czas realizacj­i zadań Uwzględniaj­ tylko niewykonane zadania Umieszczanie zadań na tablicy Rozpoczynanie pracy nad zadaniami Zadanie j­est w toku tylko wtedy, kiedy j­est W TOKU Co zrobić, j­eśli pracuj­ę j­ednocześnie nad dwoma zadaniami? Pierwsze spotkanie „na stoj­aka” Zadanie 1: utworzenie klasy Date Krótkie spotkanie robocze: dzień 5, koniec tygodnia 1 Krótkie spotkanie robocze: dzień 2, tydzień 2 Przerywamy ten rozdział… Musisz kontrolować niezaplanowane zadania Nieoczekiwane prace podwyższaj­ą poziom zadań do wykonania Szybkość pomaga, ale… Mamy dużo do zrobienia… …j­ednak DOKŁADNIE wiemy, na czym stoimy Wszystko o Szybkości Pierwsze krótkie spotkanie robocze. Robert, młodszy programista. Marek, ekspert od baz danych i mistrz języka SQL. Laura, guru w dziedzinie interfejsu użytkownika. 140 143 145 146 148 149 150 153 154 160 166 170 171 173 174 176 177 178 13 Spis treści 5 Wystarczająco dobry projekt Tworzenie oprogramowania na podstawie doskonałych projektów Dobry projekt pomaga realizować zadania. W poprzednim rozdziale sytuacja wyglądała niekorzystnie. Zły projekt utrudniał wszystkim pracę, a dodatkowych problemów przysparzały niezaplanowane zadania. W tym rozdziale pokazujemy, jak refaktoryzować projekt w celu zwiększenia produktywności zespołu. Dowiesz się, jak stosować zasady dobrego projektowania, a przy tym ostrożnie podchodzić do tworzenia „doskonałego projektu”. Zobaczysz też, jak realizować niezaplanowane zadania w dokładnie taki sam sposób, jak wszystkie inne prace w projekcie, używając do tego dużej tablicy projektowej wiszącej na ścianie. Zespół pracuj­ący nad iSwoon ma poważne problemy Taki proj­ekt narusza zasadę j­ednego zadania Wykrywanie wielu obowiązków w proj­ekcie Przechodzenie od wielu obowiązków do j­ednego zadania Proj­ekt powinien być zgodny z SRP, a także z zasadą DRY Krótkie spotkanie robocze po zakończeniu refaktoryzacj­i Niezaplanowane zadania to wciąż zadania Częścią Twoj­ego zadania j­est przeprowadzenie prezentacj­i Kiedy wszystko j­est gotowe, iteracj­a j­est ukończona W toku Gotowe 45 43 45 Niewykonane zadania Zadania do wykonania 39 36 34 31 32 Ukończyłeś wszystkie wskazane opowieści użytkownika. 0 20 15 10 Liczba dni do terminu 180 183 186 189 190 194 196 197 200 20 5 3 0 Jedno zadanie nie zostało w pełni ukończone. Następna iteracja Tytuł: Zamów taksówkę Zadanie 13 Dodać zdarzenie „zamawianie taksówki” do bazy danych 2 Zadanie 15 Dodać zdarzenie „zamawianie taksówki” 2 Zadanie 14 Dodać mechanizm automatycznego wzywania taksówki na 15 minut przed czasem wyjazdu 3 Gotowe Utwórz randkę Tytuł: Tytuł: Tytuł: Zadanie 7 4 SendFlowers obejmujące adres obejmujące adres obejmujące adres obejmujące adres i zamówienie Tytuł: Zamów stolik w restauracji Tytuł: Utworzyć skrypty Utworzyć skrypty Utworzyć skrypty SQL do dodawania, SQL do dodawania, i aktualizowania 2 2 To zadanie nie To zadanie nie zostało wykonane, zostało wykonane, dlatego trzeba dlatego trzeba przenieść opowieść przenieść opowieść użytkownika do użytkownika do następnej iteracji. następnej iteracji. Zamów kwiaty Zamów kwiaty Z a d a n i e 5 U t w o r z y ć k l i e n t a p o c z t o w e g o d o w y s y ł a n i a z a m ó w i e ń d o z a m ó w i e ń d o k w i a c i a r n i k w i a c i a r n i 4 4 Zadanie 6 Zadanie Utworzyć interfejs Utworzyć interfejs użytkownika do użytkownika do tworzenia zamówienia tworzenia zamówienia i wysyłania go do i wysyłania go do kwiaciarni kwiaciarni 3 Kup biżuterię Kup biżuterię Kup biżuterię Kup biżuterię Kup biżuterię Tytuł: Tytuł: Zadanie 11 Zadanie Pobrać dane Pobrać dane Pobrać dane ze stron ze stron partnerskich partnerskich sklepów jubilerskich jubilerskich 3 Zadanie 12 Dodać kod witryny do witryny do witryny do żądania HTTP żądania HTTP przy wyborze produktu 2 Zadanie Zadanie Utworzyć interfejs Utworzyć interfejs użytkownika do użytkownika do wyszukiwania wyszukiwania i dodawania danych i dodawania danych o restauracji do o restauracji do randki randki Tytuł: Wyjście na kawę Zadanie 20 TY Dodać zdarzenie „zamawianie kawy” i funkcję wysyłania e-maila z zamówieniem do Starbuzz 5 Opowieści użytkownika Tytuł: Z a d a n i e 1 U t w o r z y ć U t w o r z y ć U t w o r z y ć k l a s ę D a t e k l a s ę D a t e z a w i e r a j ą c ą z d a r z e n i a . 2 Utwórz randkę Zadanie 2 Zadanie Utworzyć interfejs Utworzyć interfejs Utworzyć interfejs Utworzyć interfejs Utworzyć interfejs Utworzyć interfejs użytkownika użytkownika użytkownika użytkownika użytkownika użytkownika użytkownika użytkownika do tworzenia, do tworzenia, do tworzenia, do tworzenia, przeglądania przeglądania przeglądania przeglądania przeglądania przeglądania i modyfikowania i modyfikowania i modyfikowania i modyfikowania i modyfikowania i modyfikowania i modyfikowania i modyfikowania i modyfikowania i modyfikowania i modyfikowania 55 randek. randek. randek. randek. randek. randek. randek. randek. Zadanie 3 Zadanie Utworzyć Utworzyć schemat bazy schemat bazy danych do danych do przechowywania przechowywania przechowywania randek. randek. 2 Zadanie 4 Zadanie Utworzyć skrypty Utworzyć skrypty Utworzyć skrypty Utworzyć skrypty Utworzyć skrypty Utworzyć skrypty SQL do dodawania, SQL do dodawania, SQL do dodawania, SQL do dodawania, wyszukiwania wyszukiwania i aktualizowania i aktualizowania rekordów. rekordów. 2 Tytuł: Zamów kwiaty Zadanie 7 Utworzyć zdarzenie SendFlowers obejmujące adres i zamówienie. 22 Zadanie 5 Utworzyć klienta pocztowego do wysyłania zamówień do kwiaciarni. kwiaciarni. 44 Zadanie 6 Zadanie Utworzyć interfejs Utworzyć interfejs użytkownika do użytkownika do tworzenia zamówienia tworzenia zamówienia i wysyłania go do i wysyłania go do kwiaciarni. kwiaciarni. 33 Tytuł: Zamów stolik w restauracji Zadanie 8 Utworzyć interfejs użytkownika do wyszukiwania i dodawania danych o restauracji do randki. Zadanie 9 Zadanie Utworzyć interfejs Utworzyć interfejs użytkownika do użytkownika do rezerwowania rezerwowania stolika stolika w restauracji. w restauracji. 3 Zadanie 10 Utworzyć klasę dla zdarzenia „zarezerwuj stolik w restauracji”. 33 4 Tytuł: Kup biżuterię Kup biżuterię Zadanie 11 Pobrać dane ze stron partnerskich sklepów jubilerskich. jubilerskich. jubilerskich. 33 Zadanie 12 Dodać kod witryny do witryny do witryny do żądania HTTP żądania HTTP przy wyborze przy wyborze przy wyborze przy wyborze produktu. produktu. produktu. 22 Tytuł: Zamów taksówkę Zadanie 13 Dodać zdarzenie „zamawianie taksówki” do bazy danych. 2 Zadanie 15 Dodać zdarzenie „zamawianie taksówki”. 2 Zadanie 14 Dodać mechanizm automatycznego automatycznego wzywania taksówki wzywania taksówki na 15 minut przed na 15 minut przed czasem wyjazdu. czasem wyjazdu. 3 Niezaplanowane zadania Niezaplanowane zadania Niezaplanowane zadania Tytuł: Tytuł: Zadanie 20 TY Dodać zdarzenie „zamawianie kawy” i funkcję wysyłania e-maila z zamówieniem do Starbuzz 5 14 Wykonałeś niezaplanowaną pracę. Spis treści 6 Kontrola wersji Programowanie defensywne Przy rozwoju doskonałego oprogramowania na pierwszym miejscu trzeba stawiać bezpieczeństwo! Tworzenie doskonałego oprogramowania nie jest proste… zwłaszcza kiedy trzeba sprawdzić, czy kod działa, a także upewniać się, że wciąż funkcjonuje poprawnie. Wystarczy literówka, zła decyzja współpracownika lub zepsuty dysk twardy, żeby całe rozwiązanie nagle przestało funkcjonować. Jednak dzięki kontroli wersji można upewnić się, że kod jest zawsze bezpieczny w repozytorium, a także anulować błędy oraz poprawiać usterki w nowych i starszych wersjach oprogramowania. Podpisałeś nowy kontrakt na aplikacj­ę MuzMachina Pro Praca nad interfej­sem GUI Demonstracj­a nowej­ MuzMachiny klientowi Zacznij­my od KONTROLI WERSJI Naj­pierw skonfiguruj­ proj­ekt… …a następnie prześlij­ i pobierz kod Większość narzędzi do kontroli wersj­i próbuj­e rozwiązywać problemy za Ciebie Serwer próbuj­e SCALIĆ zmiany Jeśli system nie potrafi scalić zmian, informuj­e o konflikcie Następne iteracj­e, następne opowieści Mamy kilka wersj­i oprogramowania Opisowe komentarze dodane przy przesyłaniu ułatwiaj­ą znalezienie starszego oprogramowania Teraz możesz pobrać wersj­ę 1.0 (Awaryj­ne) krótkie spotkanie robocze Oznaczanie wersj­i Oznaczenia, gałęzie, pnie — co j­eszcze? Poprawianie wersj­i 1.0 — tym razem na poważnie Teraz mamy DWIE wersj­e kodu bazowego Kiedy NIE należy tworzyć gałęzi? Zen poprawnego rozgałęziania Co zapewnia system kontroli wersj­i… System kontroli wersj­i nie może sprawdzić, czy kod działa Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ MuzMachina Pr1.0 MuzMachina Pr1.x 2.0! 206 210 213 216 218 219 220 221 222 226 228 230 231 232 233 235 236 237 240 240 242 243 244 15 Spis treści 6 Kompilowanie kodu Wstaw element a w pole b… Opłaca się przestrzegać instrukcji… …zwłaszcza jeśli samemu się ją napisało. Zarządzanie konfiguracją nie gwarantuje bezpieczeństwa kodu. Trzeba także uwzględnić kompilację kodu i tworzenie pakietów umożliwiających instalację programu. Ponadto trzeba zdecydować, która klasa powinna być klasą główną aplikacji i jak należy uruchomić taką klasę. W tym rozdziale dowiesz się, jak za pomocą narzędzi do wspomagania kompilacji pisać własne instrukcje do obsługi kodu źródłowego. Programiści nie potrafią czytać w myślach Budowanie proj­ektu w j­ednym kroku Ant — narzędzie do budowania proj­ektów w j­ęzyku Java Proj­ekty, właściwości, cele i zadania Dobre skrypty kompilacj­i… Dobre skrypty kompilacj­i wykraczaj­ą POZA podstawy Skrypty kompilacj­i to też kod Nowy, weź dwój­kę Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 248 249 250 251 256 258 260 261 262 Fragmenty projektu K a t a l o g i z k o d e m ź r ó d ł o w y m i t e s t a m i j e d n o s t e k … …prawdopodobnie pliki binarne, między innymi z obrazami i ikonami… Proces budowania Działający system log4j .jar apache- commons .jar A efekt końcowy to system gotowy do uruchomienia. . . . b i b l i o t e k i , p l i k i . j a r , . d l l i t d . …deskryptory instalacji, pliki HTML, pliki konfiguracyjne itd. Tu zachodzi budowanie projektu. Do tej pory koncentrowaliśmy się na tych elementach. 16 Te r a z z a j m i e m y s i ę t y m e t a p e m . Spis treści 7 Testy i ciągła integracja Pojawiają się problemy Czasem nawet najlepszemu programiście zdarzy się naruszyć poprawność kompilacji. Przydarzyło się to z pewnością niemal każdemu. Jesteś pewien, że Twój kod się kompiluje, przetestowałeś go wielokrotnie na własnej maszynie, a następnie przesłałeś do repozytorium. Jednak gdzieś między maszyną, której używasz, a czarną skrzynką zwaną serwerem ktoś musiał zmodyfikować kod. Nieszczęśnik, który jako następny pobierze z repozytorium kod, będzie miał dużo pracy przy przywracaniu działającej niegdyś jego wersji. W tym rozdziale pokazujemy, jak przygotować siatkę zabezpieczającą, która zapewnia działanie kompilacji i produktywność zespołu. ZAWSZE coś pój­dzie źle Są trzy sposoby postrzegania systemu Testy czarnej­ skrzynki dotyczą przede wszystkim danych WEJŚCIOWYCH i WYJŚCIOWYCH Testy szarej­ skrzynki ZBLIŻAJĄ Cię do kodu Testy białej­ skrzynki wymagaj­ą wiedzy o wnętrzu systemu Testowanie WSZYSTKIEGO w j­ednym kroku Automatyzacj­a testów przy użyciu platformy testowej­ Używanie platformy do uruchamiania testów Sterowanie CI za pomocą narzędzia CruiseControl Testy gwarantuj­ą działanie programu, prawda? Przetestowanie całego kodu wymaga sprawdzenia KAŻDEJ GAŁĘZI Użyj­ raportu pokrycia, aby zobaczyć, które metody są sprawdzane Uzyskanie wysokiego pokrycia kodu nie zawsze j­est proste Krótkie spotkanie robocze Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 264 266 267 268 271 276 278 279 282 284 292 293 295 297 300 Testy czarnej skrzynki Testy szarej skrzynki Testy białej skrzynki interface DBAccessor + getGC(gcId : int) :GiftCard + saveGC(card : GiftCard) :void TestGoodDBAccessor + getGC(gcId : int) :GiftCard + saveGC(card : GiftCard) :void TestInsufficientDBAccessor + getGC(gcId : int) :GiftCard + saveGC(card : GiftCard) :void O r d e r P r o c e s s o r p r o c e s s O r d e r ( . . . ) TestInvalidDBAccessor + getGC(gcId : int) :GiftCard + saveGC(card : GiftCard) :void D a t a b a s e D B U t i l i t i e s g e t G C ( . . . ) s e l e c t * f r o m . . . c h e c k b a l a n c e s , e t c . s a v e O r d e r ( . . . ) s a v e G C ( . . . ) i n s e r t i n t o . . . u p d a t e a m n t MySqlDBAccessor + getGC(gcId : int) :GiftCard + saveGC(card : GiftCard) :void 17 Spis treści 8 Wytwarzanie sterowane testami Zapewnianie poprawności kodu Czasem najważniejsze jest ustalenie oczekiwań. Dobry kod musi działać — każdy to wie. Skąd jednak wiadomo, że kod działa? Nawet przy zastosowaniu testów jednostkowych znaczne fragmenty kodu nie są sprawdzane. A gdyby potraktować testy jako podstawowy element rozwoju oprogramowania? Gdyby wszystkie zadania wykonywać z myślą o testach? W tym rozdziale wykorzystamy wiedzę na temat kontroli wersji, ciągłej integracji i testów automatycznych do przygotowania środowiska, które pozwala bezpiecznie naprawiać usterki, refaktoryzować kod, a nawet ponownie implementować fragmenty systemu. Pisz testy NA POCZĄTKU, a nie na końcu NAJPIERW testy Witamy w świecie wytwarzania sterowanego testami Pierwszy test… …kończy się całkowitym niepowodzeniem Doprowadź testy do koloru ZIELONEGO Czerwone, zielone, refaktoryzacj­a… W TDD testy STERUJĄ rozwoj­em kodu Ukończenie zadania oznacza, że napisałeś wszystkie potrzebne testy i kończą się one sukcesem Kiedy kod przej­dzie testy, idź dalej­! Prostota oznacza unikanie zależności Zawsze pisz kod, który można przetestować Kiedy wystąpią trudności, przyj­rzyj­ się proj­ektowi Wzorzec strategii pozwala tworzyć wiele wersj­i j­ednego interfej­su Przechowuj­ kod testowy razem z testami Testy prowadzą do powstania lepszego kodu Więcej­ testów zawsze oznacza więcej­ kodu Wzorce strategii, luźne powiązanie, zastępowanie obiektów Potrzebuj­emy wielu odmiennych, choć podobnych obiektów A gdyby tak wygenerować obiekty? Obiekty zastępcze zastępuj­ą prawdziwe obiekty Obiekty zastępcze to działaj­ące zastępniki obiektów Dobre oprogramowanie można przetestować Niełatwo być zielonym Dzień z życia programisty stosuj­ącego TDD Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 302 303 303 304 305 306 307 312 314 315 319 320 321 322 325 326 328 329 330 330 331 332 335 336 338 340 1 Czerwone: testy kończą się niepowodzeniem 2 3 Zielone: kod przechodzi testy Refaktoryzacja: usuwanie powtórzeń, nieeleganckich rozwiązań, zbędnego kodu itd. 18 Spis treści 9 Końcówka iteracji Wszystkie elementy łączą się ze sobą… Aplikacja jest już prawie gotowa! Zespół pracował ciężko i pozostało tylko dopracowanie rozwiązania. Zadania i opowieści użytkownika są już zrealizowane. Jak można najlepiej wykorzystać dodatkowy dzień? Kiedy przeprowadzić testy z udziałem użytkowników? Czy można wygospodarować czas na jeszcze jeden cykl refaktoryzacji lub wprowadzenie zmian w projekcie? Z pewnością w kodzie kryje się wiele błędów — kiedy należy je naprawić? Wszystkie te zadania to elementy końcówki iteracji, dlatego zacznijmy przybliżać się do końca. Iteracj­a j­est prawie ukończona… …j­ednak możesz zrobić j­eszcze wiele rzeczy TRZEBA przeprowadzić testy systemu… …ale KTO ma to zrobić? Testy systemu wymagaj­ą kompletnego oprogramowania Dobre testy systemu wymagaj­ą DWÓCH cykli iteracj­i Więcej­ iteracj­i oznacza dodatkowe problemy Życie (i śmierć) błędu Znalazłeś błąd i co dalej­? Anatomia raportu o błędzie Jest j­eszcze wiele rzeczy, które MÓGŁBYŚ zrobić… Czas na przegląd iteracj­i Przykładowe pytania z przeglądu iteracj­i OGÓLNA lista priorytetów zadań DODATKOWYCH Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 44 Zadania do wykonania Niewykonane zadania 0 20 15 Następna iteracja 10 5 Dni do terminu 0 Gotowe Tytuł: Wyświetl dzisiejsze Wyświetl dzisiejsze Wyświetl dzisiejsze Tytuł: Zamów kawę przy użyciu karty podarunkowej Opis: Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, Wybierz kawę przy użyciu opcji, wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko wpisz numer karty podarunkowej, nazwisko i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, i wybrany sklep, po czym kliknij przycisk „Wyślij”, aby otrzymać numer potwierdzenia, stan konta Zadanie 7 Zadanie 4 Zadanie Zadanie 4 Zadanie 5 Zadanie 4 Zadanie 7 Zadanie Zadanie 7 Zadanie 5 Zadanie i szacowaną godzinę odbioru kawy. Zadanie 1 mplement DB mplement DB mplement DB mplement DB mplement DB mplement DB mplement DB Zadanie 3 Zadanie 3 Zadanie 3 Zadanie 3 Zadanie 2 Zadanie 2 Zadanie 2 backend for gift backend for gift Priority: Pobieranie informacji Pobieranie informacji backend for gift 40 Połączenie Połączenie dotyczących dotyczących cards, drink info, cards, drink info, Implementacja cards, drink info, Anulowanie zamówienia Tytuł: mechanizmu zamówienia, karty zamówienia, karty logiki biznesowej customer info, and customer info, and customer info, and 1 1 1 przetwarzania podarunkowej podarunkowej do przetwarzania 6 receipt receipt receipt zamówień z witryną zamówień z witryną zamówień z witryną zamówień z witryną i paragonu. i paragonu. 5 i przechowywania 1 1 1 Opis: Użytkownik może anulować internetową. 2 zamówień. 2 zamówienie, jeśli nie upłynął czas jego odbioru. Estimate: 6 Zadanie 1 Zadanie 1 Implementacja Implementacja strony „Dziś strony „Dziś Priority: w promocji”. w promocji”. Użytkownik widzi Użytkownik widzi Użytkownik widzi Użytkownik widzi Użytkownik widzi Użytkownik widzi Użytkownik widzi Użytkownik widzi Użytkownik widzi Użytkownik widzi Opis: specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do specjalną dnia i odnośnik do Zadanie 2 Zadanie Zadanie 2 Implementacja Implementacja Zadanie 3 logiki biznesowej logiki biznesowej Implementacja do przetwarzania do przetwarzania obsługi adresu URL obsługi adresu URL i przechowywania i przechowywania strony zamówień 5 zamówień. pod kątem odnośnika pod kątem odnośnika „Zamów teraz”. 5 5 40 Estimate: 40 Zadanie 1 Priority: Implementacja wywołania zwrotnego po stronie serwera i obsługi anulowania. 1.5 6 6 Zadanie 2 Estimate: Estimate: Estimate: Dodaj do menu opcję anulowania zamówienia. 0.5 342 343 348 349 350 351 352 358 360 361 362 366 367 368 370 1 Spis treści 10 Następna iteracja Jeśli nie jest zepsute… i tak lepiej to naprawić Uważasz, że wszystko idzie dobrze? Zachowaj czujność, bo może się to zmienić… Iteracja poszła doskonale i na czas udostępniłeś działające oprogramowanie. Czas na następną iterację? Bez problemu, prawda? Niestety, wprost przeciwnie. Rozwój oprogramowania wiąże się z ciągłymi zmianami, a dotyczy to także przechodzenia do następnej iteracji. W tym rozdziale pokazujemy, jak przygotować zespół do następnej iteracji. Trzeba zmodyfikować tablicę i dostosować opowieści oraz oczekiwania do tego, czego klienci żądają TERAZ, a nie do ich wymagań sprzed miesiąca. Czym j­est działaj­ące oprogramowanie? Potrzebuj­esz planu następnej­ iteracj­i Szybkość pozwala uwzględnić… RZECZYWISTOŚĆ BIZNESOWĄ Klient NADAL j­est naj­ważniej­szy Oprogramowanie innych zespołów to NADAL tylko oprogramowanie Akceptacj­a klienta? Jest! Testowanie kodu Houston, mamy problem… Krótkie spotkanie robocze Nie ufaj­ NIKOMU Zespół bez procesu Zespół z procesem 372 374 381 382 384 387 392 393 394 395 400 401 Dodatkowe opowieści użytkownika Wybór miejsca Tytuł: Wybór miejsca Wybór miejsca Wybór miejsca Tytuł: Tytuł: Wybór miejsca Użytkownik będzie mógł Tytuł: Wybór miejsca Opis: Tytuł: Użytkownik będzie mógł Użytkownik będzie mógł Użytkownik będzie mógł Opis: Opis: wybrać miejsce przy oknie lub przejściu. Użytkownik będzie mógł Opis: wybrać miejsce przy oknie lub przejściu wybrać miejsce przy oknie lub przejściu wybrać miejsce przy oknie lub przejściu Użytkownik będzie mógł Opis: wybrać miejsce przy oknie lub przejściu wybrać miejsce przy oknie lub przejściu Priorytet: 50 15 Szac.: 15 1515 Szac.: Szac.: Priorytet: 50 Priorytet: 50 15 Szac.: Priorytet: 50 15 Szac.: Priorytet: 50 Szybkość ? Zadania do wykonania ? Niewykonane zadania 0 20 15 10 5 Dni do terminu 0 Następna iteracja Opowieści z pola „Następna iteracja” Tytuł: Dodawanie recenzji lotu Zadanie 15 Dodać bazodanową obsługę recenzji lotu 2 Zadanie 16 Dodać logikę biznesową związaną z recenzjami lotu 2 Zadanie 17 Przygotować interfejs użytkownika do dodawania recenzji lotu 3 Błędy 20 Spis treści 11 Błędy Profesjonalne usuwanie błędów Twój kod — Twoja odpowiedzialność. Twój błąd — Twoja reputacja! Kiedy pojawiają się problemy, to Ty odpowiadasz za ich rozwiązanie. Błędy, zarówno w kodzie napisanym przez Ciebie, jak i używanym przez rozwijane oprogramowanie, są naturalnym zjawiskiem w rozwoju oprogramowania. Sposób naprawiania usterek, podobnie jak wszystkie inne operacje, powinien pasować do całego procesu. Trzeba przygotować tablicę, włączyć w prace klientów, wiarygodnie oszacować czas potrzebny na wprowadzenie poprawek oraz zastosować refaktoryzację i wstępną refaktoryzację w celu naprawienia błędów oraz zapobieżenia występowaniu ich w przyszłości. W poprzednim odcinku Naj­pierw musisz porozmawiać z klientem Pierwszy priorytet: umożliwienie zbudowania oprogramowania Moglibyśmy naprawić kod… …ale trzeba naprawić funkcj­e systemu Określ, które funkcj­e działaj­ą TERAZ wiesz, co (nie) działa Co zrobiłbyś w tej­ sytuacj­i? Oszacuj­ czas pracy przy użyciu testów punktowych O czym informuj­ą Cię wyniki testów punktowych? Intuicj­a członków zespołu ma znaczenie Poinformuj­ klienta o szacunkowym czasie naprawy błędów Sytuacj­a wygląda dobrze… …i kończysz iteracj­ę sukcesem! I klient j­est zadowolony Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 404 406 412 414 415 416 419 419 420 422 424 426 430 431 432 434 21 Spis treści 12 Rzeczywisty świat Proces w praktyce Dowiedziałeś się wielu rzeczy na temat rozwoju oprogramowania. Jednak zanim zaczniesz umieszczać diagramy zadań do wykonania w każdym pomieszczeniu, musisz nauczyć się uwzględniać specyficzne aspekty poszczególnych projektów. Istnieje wiele podobnych rozwiązań i najlepszych praktyk, które należy stosować w każdym projekcie, jednak zawsze pojawiają się też wyjątkowe elementy i trzeba się na to przygotować. Pora zobaczyć, jak zastosować zdobytą wiedzę w konkretnym projekcie, a także dowiedzieć się, gdzie szukać dalszych informacji. Definiowanie procesu rozwoj­u oprogramowania Dobry proces prowadzi do dobrego oprogramowania Wymagany j­est strój­ wieczorowy Wybrane materiały dodatkowe Więcej­ wiedzy = lepszy proces Narzędzia do Twoj­ej­ programistycznej­ skrzynki narzędziowej­ 436 437 442 444 445 446 Zadania do wykonania 43 Niewykonane zadania 0 20 5 15 Dni do terminu 10 0 Następna iteracja Edycja zamówień specjalnych Edycja zamówień specjalnych Edycja zamówień specjalnych 15 dni 15 dni 1010 Tytuł: Szac.: Priorytet: Płatności Visą, MC i PayPalem 4 dni (pozostało) (pozostało) 4 dni 10 Tytuł: Szac.: Prior ytet: Gotowe Gotowe Tytuł: Szac.: Priorytet: Zamawianie zwykłych Zamawianie zwykłych Zamawianie zwykłych Zamawianie zwykłych Zamawianie zwykłych Zamawianie zwykłych Zamawianie zwykłych posiłków posiłków posiłków posiłków posiłków posiłków posiłków posiłków 12 dni 12 dni 12 dni 12 dni 12 dni 12 dni 12 dni 12 dni 10 1010 Zadanie 32 Zadanie 32 Zadanie 32 Naprawić kod Naprawić kod pod kątem testu Naprawić kod pod kątem testu zamawiania pod kątem testu zamawiania zwykłych zamawiania zwykłych 6 posiłków. zwykłych posiłków. posiłków Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich Wyświetlanie wszystkich zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu zamówień dla danego lotu 4 dni 4 dni 4 dni 4 dni 4 dni 4 dni 4 dni 4 dni 10 1010 Zadanie 33 Zadanie 33 Zadanie 33 Naprawić kod pod Naprawić kod pod kątem wyświetlania Naprawić kod pod kątem wyświetlania zamówień. kątem wyświetlania zamówień zamówień 4 Szac.: Priorytet: Opowieści użytkownika Tytuł: Szac: Przegląd oferowanych Przegląd oferowanych lotów 12 dni 12 dni Priorytet: 10 Tytuł: Rezerwowanie biletu na prom Szac: 15 dni Priorytet: 10 Tytuł: Szac: Płatności za pomocą Płatności za pomocą Visy, MC i PayPala Visy, MC i PayPala 15 dni 15 dni Priorytet: 10 Duża tablica Rezerwowanie biletu na prom Rezerwowanie biletu na prom Rezerwowanie biletu na prom Rezerwowanie biletu na prom Tytuł: Opis: Tytuł: Tytuł: Opis:Opis: Płatności za pomocą Visy, Płatności za pomocą Visy, Płatności za pomocą Visy, MC lub PayPala MC lub PayPala MC lub PayPala Tytuł: Tytuł: Opis: Opis: Recenzowanie lotu Rezerwowanie biletu na prom Rezerwowanie biletu na prom Rezerwowanie biletu na prom Tytuł: Tytuł: Opis: Opis: Tytuł: Opis: Płatności za pomocą Visy, Płatności za pomocą Visy, Płatności za pomocą Visy, MC lub PayPala MC lub PayPala MC lub PayPala Tytuł: Tytuł: Opis:Opis: Recenzowanie lotu Szac: 15 dni 15 dni Szac: Szac: 15 dni 15 dni Szac: Szac: Szac: Szac: 13 dni 13 dni Szac: Szac: Est: Est: 15 dni 15 dni Szac: 15 dni 15 dni Szac: Szac: 13 dni 13 dni Szac: Szac: public class RemoteReader implements Runnable { public class RemoteReader implements Runnable { boolean[] checkboxState = null; boolean[] checkboxState = null; String nameToShow = null; Object obj = null; public void run() { try { while ((obj = in.readObject()) != null) { while ((obj = in.readObject()) != null) { System.out.println( got an object from server ); System.out.println( got an object from server ); System.out.println(obj.getClass()); System.out.println(obj.getClass()); String nameToShow = (String) obj; String nameToShow = (String) obj; checkboxState = (boolean[]) in.readObject(); checkboxState = (boolean[]) in.readObject(); if (nameToShow.equals(PICTURE_START_SEQUENCE)) { if (nameToShow.equals(PICTURE_START_SEQUENCE)) { receiveJPEG(); } otherSeqsMap.put(nameToShow, checkboxState); otherSeqsMap.put(nameToShow, checkboxState); listVector.add(nameToShow); listVector.add(nameToShow); incomingList.setListData(listVector); incomingList.setListData(listVector); incomingList.setListData(listVector); // now reset the sequence to be this // now reset the sequence to be this // now reset the sequence to be this } // close while } catch (Exception ex) { svn commit -m “Dodano wysyłanie obrazów. // ... the code below is from BeatBoxFinal.java buildGUI() ... JButton sendIt = new JButton( sendIt ); sendIt.addActionListener(new MySendListener()); buttonBox.add(sendIt); JButton sendPoke = new JButton( Send Poke ); sendPoke.addActionListener(new MyPokeListener()); buttonBox.add(sendPoke); userMessage = new JTextField(); buttonBox.add(userMessage); // ... this is new code we need to add to BeatBoxFinal.java ... public class MyPokeListener implements ActionListener { We ll create an empty state array here boolean[] checkboxState = new boolean[256]; public void actionPerformed(ActionEvent a) { out.writeObject(POKE_SEQUENCE); out.writeObject(checkboxState); (Exception ex) { System.out.println( Failed to poke! ); } // try { } catch Tytuł: Tytuł: Opis: Zamawianie posiłków na Zamawianie posiłków na Zamawianie posiłków na Zamawianie posiłków na czas lotu Tytuł: Tytuł: Tytuł: Tytuł: Opis: Opis: Zamawianie płyty DVD Zamawianie płyty DVD Zamawianie płyty DVD Zamawianie płyty DVD z zapisem lotu z zapisem lotu z zapisem lotu Tytuł: Tytuł: Tytuł: Tytuł: Opis:Opis: Zamawianie Segwaya do Zamawianie Segwaya do Zamawianie Segwaya do Zamawianie Segwaya do poruszania się po kosmodromie poruszania się po kosmodromie poruszania się po kosmodromie Tytuł: Tytuł: Tytuł: Opis: Opis: Zamawianie posiłków Zamawianie posiłków Zamawianie posiłków na czas lotu Tytuł: Tytuł: Tytuł: Tytuł: Opis: Opis: Zamawianie płyty DVD Zamawianie płyty DVD Zamawianie płyty DVD Zamawianie płyty DVD z zapisem lotu z zapisem lotu z zapisem lotu Tytuł: Tytuł: Tytuł: Tytuł: Tytuł: Opis:Opis: Zamawianie Segwaya do Zamawianie Segwaya do Zamawianie Segwaya do Zamawianie Segwaya do poruszania się po kosmodromie poruszania się po kosmodromie poruszania się po kosmodromie poruszania się po kosmodromie poruszania się po kosmodromie poruszania się po kosmodromie } Szac: 13 dni 13 dni Szac: Szac: 12 dni 12 dni Szac: Szac: Szac: Est:Est: 15 dni 15 dni Szac: 13 dni 13 dni Szac: Szac: Szac: 12 dni 12 dni Szac: Szac: Szac: Szac: 15 dni 15 dni Szac: Szac: Tytuł: Opis: Podgląd liczby „gwiezdnych Podgląd liczby „gwiezdnych Podgląd liczby „gwiezdnych kilometrów” Tytuł: Tytuł: Opis: Opis: Wybór miejsca Wybór miejsca Wybór miejsca Tytuł: Tytuł: Opis:Opis: Prośba o kartę Prośba o kartę Prośba o kartę „stałego astronauty” „stałego astronauty” „stałego astronauty” Tytuł: Tytuł: Opis:: Opis:: Podgląd liczby Podgląd liczby Podgląd liczby „gwiezdnych kilometrów” „gwiezdnych kilometrów” „gwiezdnych kilometrów” Wybór miejsca Wybór miejsca Wybór miejsca Tytuł: Tytuł: Tytuł: Tytuł: Opis: Opis: Opis: Tytuł: Tytuł: Opis:Opis: Prośba o kartę „stałego Prośba o kartę „stałego Prośba o kartę „stałego astronauty” astronauty” astronauty” Szac: 14 dni 14 dni Szac: Szac: 12 dni 12 dni Szac: Szac: Szac: Szac: 14 dni 14 dni Szac: Szac: Szac: 14 dni 14 dni Szac: Szac: Szac: 12 dni 12 dni Szac: Szac: Szac: Szac: 14 dni 14 dni Szac: Szac: Tytuł: Opis: Rezerwowanie miejsca dla Rezerwowanie miejsca dla Rezerwowanie miejsca dla zwierząt zwierząt zwierząt Tytuł: Tytuł: Opis: Opis: Rezerwowanie miejsca dla Rezerwowanie miejsca dla Rezerwowanie miejsca dla zwierząt zwierząt zwierząt Tytuł: Tytuł: Opis: Opis: Płacenie „gwiezdnymi Płacenie „gwiezdnymi Płacenie „gwiezdnymi kilometrami” Tytuł: Tytuł: Opis:Opis: Rezerwowanie miejsca dla Rezerwowanie miejsca dla Rezerwowanie miejsca dla zwierząt zwierząt zwierząt Tytuł: Tytuł: Opis: Opis: Rezerwowanie miejsca dla Rezerwowanie miejsca dla Rezerwowanie miejsca dla zwierząt zwierząt zwierząt Manage special offers Manage special offers Manage special offers Title: Title: Description: Description: Szac: 12 dni 12 dni Szac: Szac: 12 dni 12 dni Szac: Szac: Szac: 13 dni 13 dni Szac: Szac: Szac: 12 dni 12 dni Szac: Szac: Szac: 12 dni 12 dni Szac: Szac: Est: 13 days 13 days Est: Opowieści użytkownika Kontrola wersji 1 222 3 Czerwone: testy kończą się niepowodzeniem Naj­pierw napisz test sprawdzaj­ący funkcj­ę, którą chcesz dodać. Oczywiście, zakończy się on niepowodzeniem, ponieważ j­eszcze nie napisałeś potrzebnego kodu. Jest to etap czerwony, ponieważ interfej­s użytkownika środowiska testowego prawdopodobnie wyświetli informacj­e o teście na czerwono (co informuj­e o porażce). Zielone: kod przechodzi testy Następnie zaimplementuj­ funkcj­e umożliwiaj­ące udane zakończenie testu. To j­uż wszystko. Nie ma w tym nic skomplikowanego. Napisz najprostszy kod, który przej­dzie testy. To etap zielony. Refaktoryzacja: usuwanie powtórzeń, nieeleganckich rozwiązań, Refaktoryzacja: usuwanie powtórzeń, nieeleganckich rozwiązań, Refaktoryzacja: usuwanie powtórzeń, nieeleganckich rozwiązań, zbędnego kodu itd. zbędnego kodu itd. Na zakończenie, kiedy kod przechodzi j­uż testy, przyj­rzyj­ mu się j­eszcze raz i popraw elementy, na które zwróciłeś uwagę w trakcie implementowania funkcj­i. Jest to etap refaktoryzacji. Na razie nie musisz refaktoryzować przykładowego kodu aplikacj­i dla firmy Starbuzz, dlatego możesz przej­ść bezpośrednio do następnego testu. Wytwarzanie sterowane testami (TDD) Ciągła integracja (CI) 22 K l a s y s ą p o d z i e l o n e n a p a k i e t y i o p i s y w a n e o d d z i e l n i e . Jedną z miar pokrycia jest pokrycie wierszy, które określa, ile procent wszystkich wierszy kodu jest wykonywane w trakcie testów. I n n y w s k a ź n i k t o p o k r y c i e g a ł ę z i . Ta m i a r a o k r e ś l a , j a k i p r o c e n t r ó ż n y c h ś c i e ż e k ( w i n s t r u k c j a c h i f , e l s e i t d . ) o b e j m u j ą t e s t y . Pokrycie kodu testami Spis treści A Dodatek A Pozostałości Pięć najważniejszych tematów (których nie poruszyliśmy) Czy miałeś kiedykolwiek wrażenie, że o czymś zapomniałeś? Wiemy, co to znaczy… Kiedy się wydaje, że praca została ukończona, okazuje się, że pozostało jeszcze kilka zadań do wykonania. Nie możemy pominąć kilku dodatkowych zagadnień, których nie potrafiliśmy uwzględnić w pozostałych częściach książki (a przynajmniej nie bez wydłużania jej do tego stopnia, że do przewożenia tomu potrzebny byłby metalowy wózek na kółkach). Dlatego zobacz, z czym (jeszcze) się nie zapoznałeś. Numer 1. Diagramy klas w notacj­i UML Numer 2. Diagramy sekwencj­i Numer 3. Opowieści użytkownika i przypadki użycia Numer 4. Testy systemu a testy j­ednostkowe Numer 5. Refaktoryzacj­a 450 452 454 456 457 Airplane - speed :int + getSpeed() :int + setSpeed(speed : int) :void Tytuł: Opis: Wyślij obraz do innych użytkowników Kliknięcie przycisku „Wyślij obraz” ma powodować wysłanie obrazu (obsługiwany jest tylko format JPEG) do innych użytkowników. Pozostałe osoby mogą odrzucić rysunek. Nie ma ograniczenia rozmiaru wysyłanych plików. Prior ytet: Oszacowanie: 20 4 To aktor, który uruchamia sekwencję. To komunikaty przesyłane między obiektami używanymi w sekwencji. Prostokąty przedstawiają obiekty biorące udział w interakcji. new FirstDate() FirstDate goToRestaurant(date : Date, address : Address) validateEvent(event : Event) :boolean Te komunikaty to wywołania metod. Obiekt FirstDate tworzy nowy obiekt GoToRestaurantEvent… …który następnie może wywoływać metody i otrzymywać komunikaty od innych obiektów, czyli wchodzić z nimi w interakcje. new GoToRestaurantEvent() GoToRestaurantEvent getName() :String seeMovie(date : Date, address : Address) new SeeMovieEvent() SeeMovieEvent Czasem obiekt wywołuje własną metodę. Wtedy punktem wyjściowym i docelowym komunikatu jest ten sam obiekt. validateEvent(event : Event) :boolean goOnDate() Ta metoda jest wywoływana przez obiekt przedstawiony na poprzedniej linii… …i manipuluje obiektem znajdującym się na końcu strzałki. getName() :String To „linie życia”. Reprezentują aktorów i czas istnienia obiektów w danej sekwencji. 23 Spis treści B Dodatek B Techniki i zasady Narzędzia dla doświadczonych programistów Czy kiedykolwiek chciałeś, aby cały zestaw doskonałych narzędzi i technik został opisany w jednym miejscu? W tym dodatku przedstawiamy przegląd wszystkich omówionych w książce technik i zasad rozwoju oprogramowania. Przyjrzyj się im i sprawdź, czy zapamiętałeś ich znaczenie. Możliwe, że zechcesz wyciąć te strony i przyczepić je do dolnej części dużej tablicy, aby wszyscy mogli je przejrzeć w trakcie codziennych krótkich spotkań roboczych. Techniki rozwoj­u Zasady rozwoj­u Skorowidz 460 462 465 Techniki rozwoju Tu przedstawiamy podstawowe techniki opisane w tej książce… Zasady rozwoju oprogramowania …a w tym miejscu opisujemy zasady będące podstawą omówionych technik. 24 Rozdział 1. Doskonały rozwój oprogramowania Zapewnianie zadowolenia klientów Kiedyś myślałem, że wszyscy programiści otrzymują wynagrodzenie w bananach. Jednak teraz, kiedy tworzę doskonałe oprogramowanie, zarabiam prawdziwe pieniądze. Jeśli klient jest niezadowolony, wszyscy są nieszczęśliwi! Rozwój wartościowego oprogramowania zawsze rozpoczyna się od genialnego pomysłu klienta. Twoim zadaniem — jako specjalisty od rozwoju oprogramowania — jest realizacja takich pomysłów. Jednak przekształcenie nieprecyzyjnej idei w działający kod, który ponadto zadowala klienta, nie jest proste. W tym rozdziale pokazujemy, jak sprostać wyzwaniom w obszarze rozwoju oprogramowania i udostępniać potrzebne programy na czas i po ustalonych kosztach. Pora złapać laptopy i rozpocząć naukę dostarczania doskonałego oprogramowania. to jest nowy rozdział 37 Szlakami Macieja Szlakami Macieja wchodzi do internetu Maciej Wędrownik od lat oferuje znane na całym świecie wycieczki z przewodnikiem i sprzęt w swej tatrzańskiej chacie. Teraz chce zwiększyć sprzedaż, wykorzystując nowe technologie. przewodnikiem po szlakach górskich na świecie. Jednak zbliża się ważna Jestem najlepszym konferencja Drogi i bezdroża, na której chcę wszystkim pokazać następny etap ewolucji pieszych wędrówek, możliwy dzięki wykorzystaniu internetu. Maciek chce wprowadzić firmę do internetu. 38 Rozdział 1 Wersja witryny Szlakami Macieja zaproponowana przez Maćka Doskonały rozwój oprogramowania W większości projektów trzeba uwzględnić dwa główne zagadnienia W trakcie rozmów klienci — obok omawiania swych pomysłów — zwracają zwykle uwagę na dwie podstawowe kwestie: Ile będzie kosztować oprogramowanie? Nie jest to zaskoczeniem. Większość klientów chce wiedzieć, ile będą musieli zapłacić za produkt. Jednak Maciej ma mnóstwo pieniędzy, dlatego cena programu nie stanowi dla niego problemu. Zwykle pieniądze są ograniczeniem. Jednak Maciej ma ich mnóstwo i uważa, że poniesione nakłady wzbogacą go jeszcze bardziej. Ile czasu zajmie rozwój produktu? Następnym poważnym ograniczeniem jest czas. Klienci prawie nigdy nie mówią: „Poświęćcie na rozwój tyle czasu, ile potrzebujecie”. Zazwyczaj odbiorca chce, aby zespół przygotował oprogramowanie na konkretne wydarzenie lub do ustalonego dnia. Maciej chce, aby witryna była gotowa za trzy miesiące, na ważną konferencję Drogi i bezdroża. Konferencja Drogi i bezdroża 2008 To także dzień wypłaty, jeśli zespół przygotuje witrynę na czas. jesteś tutaj� 39 Metoda wielkiego wybuchu Rozwój oprogramowania metodą wielkiego wybuchu Ponieważ do zakończenia pracy pozostał tylko miesiąc, nie wolno marnować czasu. Główny programista zatrudniony przez Maćka zabiera się do pracy Przedstawię ogólne pomysły, które możesz potraktować jako punkt wyjścia. HTML, CSS, trochę języka Java na zapleczu… nic trudnego. „Pęd do pisania kodu” Pisanie kodu... S z a l o n e o d g ł o s y p i s a n i a k o d u ...pisanie kodu... Oto główna programistka zatrudniona przez Maćka. Nie marnuje ani chwili czasu i od razu zaczyna rozwijać kod. 40 Rozdział 1 Doskonały rozwój oprogramowania Uff! To była ciężka praca! Pisałam kod jak szalona, pracowałam w nadgodzinach, ale wreszcie nadszedł czas na odbiór wynagrodzenia. Przenieśmy się w czasie — dwa tygodnie później Główna programistka zaangażowana przez Maćka pokonała wszystkie przeszkody na drodze do utworzenia witryny Szlakami Macieja i wykorzystała wszystkie swe umiejętności programistyczne do przygotowania produktu zgodnego — jej zdaniem — z oczekiwaniami klienta. B U ...Udostępnianie! M ! Efekt pracy głównej programistki… ...jeszcze więcej kodu... Wielki wybuch: po ciężkiej pracy słychać głośne BUM! i nagle pojawia się coś wielkiego oraz skomplikowanego. To podejście jest też nazywane „zaćmieniem”, ponieważ programista kontaktuje się z klientem na początku projektu, a następnie znika do momentu ukończenia oprogramowania. jesteś tutaj� 41 Wielki wybuch prowadzi do wielkich problemów Rozwój oprogramowania metodą wielkiego wybuchu kończy się zwykle WIELKIMI PROBLEMAMI Choć programiści włożyli w projekt dużo pracy, Maciek jeszcze nie widział ukończonego (miejmy nadzieję) oprogramowania. Zobaczmy, co myśli o przygotowanej witrynie. Co to jest? Witryna nie wygląda tak, jak tego oczekiwałem. Czy nie możecie poświęcić trochę więcej czasu na jej prawidłowe zaprojektowanie? Ta wersja wygląda tak, jakbyście w ogóle nie wiedzieli, na czym mi zależy. Jeśli klient jest niezadowolony, oznacza to, że dostarczyłeś nieodpowiednie oprogramowanie. Rozwój oprogramowania metodą wielkiego wybuchu wymaga wiele pracy, przy czym zespół nie pokazuje klientom programu do momentu jego ukończenia. Minusem tego podejścia jest to, że możesz sądzić, iż rozwijasz produkt zgodnie z oczekiwaniami odbiorcy, lecz nie otrzymujesz żadnych informacji zwrotnych do momentu, kiedy uważasz, że ukończyłeś pracę. Niezależnie od tego, jak wysoko TY SAM oceniasz oprogramowanie, to klient musi być zadowolony. Dlatego jeśli odbiorcy nie podoba się przygotowany produkt, nie należy tracić czasu na przekonywanie klienta do zalet oprogramowania. Trzeba po prostu przygotować się do wprowadzenia zmian. Jak jednak odkryć, czego klient naprawdę oczekuje? Nie zawsze jest to proste… Najważniejsze jest tu to, że myślisz, iż ukończyłeś produkt, podczas gdy może być inaczej. 42 Rozdział 1 Doskonały rozwój oprogramowania Zaostrz ołówek Zaostrz ołówek Czy potrafisz zauważyć, w którym miejscu popełniono błąd? Maciek wymienił trzy przedstawione poniżej operacje, których wykonywanie miała umożliwiać witryna. Twoim zadaniem jest wybór opcji najbardziej zbliżonej do oczekiwań klienta. Przy trzeciej operacji sam musisz ustalić, co Maciek miał na myśli. Powodzenia! 1 Maciek powiedział: „Klient powinien mieć możliwość wyszukiwania szlaków”. Klient powinien widzieć mapę świata i móc wpisać adres, aby znaleźć szlaki w pobliżu określonej lokalizacji. Klient powinien mieć możliwość przewijania listy miejscowości turystycznych i wyszukiwania szlaków, które prowadzą do tych punktów i wychodzą z nich. Klient powinien móc wyszukiwać szlaki w obszarze określonego kodu pocztowego i o podanym stopniu trudności. 2 Maciek powiedział: „Klient powinien mieć możliwość zamówienia wyposażenia”. Klient powinien móc przejrzeć dostępne u Maćka wyposażenie, a następnie zamówić produkty znajdujące się w magazynie. Klient powinien móc zamówić dowolne potrzebne wyposażenie, jednak jeśli produkt jest niedostępny, obsługa zamówienia może potrwać dłużej, ponieważ Maciek musi dopiero sprowadzić odpowiedni sprzęt. 3 Maciek powiedział: „Klient powinien móc zarezerwować wycieczkę”. Napisz, jak oprogramowanie powinno działać TWOIM zdaniem. Nie jesteś pewien, co Maciek miał na myśli? Nie przejmuj się. Postaraj się zgadnąć jak najtrafniej. Problemy z wyborem opcji są czymś całkowicie normalnym. Postaraj się jak najlepiej wykonać to zadanie, a w dalszej części rozdziału dowiesz się, jak ustalić znaczenie słów klienta. jesteś tutaj� 43 Doskonały rozwój oprogramowania polega na… Zaostrz ołówek Zaostrz ołówek Rozwiązanie Czy potrafisz ustalić, gdzie popełniono błąd? Twoim zadaniem był wybór opcji najbardziej zbliżonych do znaczenia poszczególnych wypowiedzi Maćka. Przy trzecim stwierdzeniu musiałeś sam ustalić jego sens. ? Wielki znak zapytania? To ma być odpowiedź? Jak mam przygotować doskonałe oprogramowanie, jeśli nawet nie wiem, czego oczekuje klient? Jeśli nie jesteś pewien, czego oczekuje klient, a nawet wtedy, kiedy sądzisz, że to wiesz, zawsze powinieneś zapytać o zdanie odbiorcę Przy ustalaniu wymagań to klient jest najważniejszą osobą. Jednak naprawdę rzadko zdarza się, że odbiorca już na początku prac na projektem potrafi dokładnie wyrazić swe oczekiwania. W momencie, kiedy próbujesz zrozumieć oczekiwania klienta, czasem nawet on sam nie zna jeszcze wszystkich odpowiedzi, a co dopiero programista! Jeśli znikniesz w pośpiechu i od razu zaczniesz pisać kod, możesz znać tylko połowę wymagań… lub jeszcze mniej. Rozwój oprogramowania nie powinien opierać się na zgadywaniu. Musisz się upewnić, że rozwijasz doskonałe oprogramowanie nawet wtedy, kiedy na początku prac potrzeby nie są jeszcze w pełni znane. Dlatego powinieneś zapytać klienta o znaczenie jego słów. Zapytać o dalsze szczegóły. Zapytać o możliwe sposoby realizacji jego wielkich pomysłów. Rozwój oprogramowania NIE polega na zgadywaniu. Musisz włączyć klienta w prace, aby upewnić się, że zmierzasz we właściwym kierunku. 44 Rozdział 1 Doskonały rozwój oprogramowania Doskonały rozwój oprogramowania polega na… Wymieniliśmy kilka warunków, które musi spełniać udane oprogramowanie. Trzeba uwzględnić wielkie pomysły klientów, ich pieniądze oraz harmonogram. Jeśli chcesz stale rozwijać doskonałe oprogramowanie, musisz spełnić wszystkie te warunki. Doskonały rozwój oprogramowania prowadzi do dostarczenia… Tego co potrzebne, To, czego potrzebuje klient. Są to wymagania wobec oprogramowania. Więcej o wymaganiach piszemy w następnym rozdziale. Uzgodniony z klientem czas ukończenia oprogramowania. na czas i po ustalonych kosztach Należy obciążać klienta tylko uzgodnionymi kosztami. Wytęż umysł Czy potrafisz przypomnieć sobie trzy projekty rozwoju oprogramowania, w których naruszono przynajmniej jedną z tych reguł? jesteś tutaj� 45 Dostarczanie przy użyciu iteracji Dochodzenie do celu dzięki ITERACJOM Kluczem do doskonałego rozwoju oprogramowania są iteracje. Wiesz już, że nie można ignorować klienta w trakcie pisania programu. Iteracje umożliwiają zadanie na każdym etapie rozwoju pytania: „Jak mi idzie?”. Poniżej ilustrujemy przebieg dwóch projektów. W jednym z nich zastosowano iteracje, w drugim — nie. Bez iteracji Załóżmy, że zespół rozwija oprogramowanie metodą wielkiego wybuchu lub stosuje inne podejście, w którym brakuje stałego omawiania postępów prac z klientem. Jaki jest prawdopodobny efekt takiego rozwiązania? Poważne rozminięcie się z oczekiwaniami odbiorcy. Obrana przez Ciebie ścieżka rozwoju. Do tego momentu dzięki szczęściu lub umiejętnościom nie oddaliłeś się zanadto od optymalnej ścieżki. Start To ścieżka, którą powinieneś podążać. W każdym projekcie z czasem pojawiają się zmiany. Wynikają one z drobnych modyfikacji wymagań lub wciąż podejmowanych decyzji na temat rozwijanych funkcji. Z iteracjami W tym podejściu po ukończeniu każdego większego fragmentu oprogramowania omawiasz go z klientem i dostosowujesz kierunek prac. Ponadto nie podejmujesz żadnych poważnych decyzji bez konsultacji z odbiorcą. Czas na wczesną wersję demonstracyjną, aby sprawdzić, co klient sądzi o produkcie. W tym miejscu klient zmienił zdanie na temat pewnej funkcji, jednak ponieważ konsultujesz prace z odbiorcą, możesz wprowadzić drobne poprawki i kontynuować rozwój. Start Już po kilku dniach upewniasz się, czy dobrze zrozumiałeś funkcję opisaną przez klienta. 46 Rozdział 1 Doskonały rozwój oprogramowania …a następnie implementujesz kilka dalszych funkcji niezgodnie z wymaganiami odbiorcy. …i w związku z nią podejmujesz kilka błędnych decyzji projektowych… Jednak w pewnym momencie implementujesz funkcję niezgodną z oczekiwaniami klienta… Nie omawiasz postępów prac z klientem, a rozdźwięk między oczekiwanym oprogramowaniem a rozwijanym produktem staje się coraz większy. ??? Do momentu udostępnienia oprogramowania ZNACZNIE oddalasz się od wymagań klienta. Cel Iteracje robią wielką różnicę! Efekt końcowy prac i oczekiwania klienta są ze sobą zgodne. Nadszedł dzień wypłaty! Możesz podjąć tę samą błędną decyzję co w poprzednim podejściu… …jednak dzięki iteracjom nie zbaczasz z drogi. Powtarzasz iteracje do zakończenia rozwoju. Cel Czasem znajdujesz się na dobrej drodze, jednak nawet wtedy stosujesz iteracje. Pozwala to zachować pewność, że prace toczą się w dobrym kierunku. Iteracje są jak częste kontrole oprogramowania. Dzięki nim zawsze wiesz, jak postępują prace. jesteś tutaj� 47 Iteracja prowadzi do działającego oprogramowania Nie ma niemądrych pytań P: Czy nie lepiej poświęcić więcej czasu na ścisłe określenie wymagań i ustalenie, czego naprawdę oczekuje klient, niż pozwalać odbiorcom na zmianę zdania w trakcie trwania prac? O: Na pozór może się tak wydawać, jednak jest to prosta droga do katastrofy. W dawnych, trudnych czasach programiści poświęcali na początku projektu wiele czasu na upewnienie się, że zebrali wszystkie wymagania klienta. Bez ich ustalenia nie myśleli nawet o pisaniu kodu lub podejmowaniu decyzji projektowych. Niestety, to podejście nie przyniosło sukcesów. Nawet jeśli już na początku prac sądzisz, że w pełni rozumiesz oczekiwania klienta, sam odbiorca często ich nie rozumie. Dlatego nie tylko programiści muszą ustalić potrzeby klientów, ale też oni sami. Potrzebna jest metoda, która pomoże zespołowi i klientom lepiej zrozumieć oprogramowanie wraz z jego rozwojem. Nie jest to możliwe przy stosowaniu strategii wielkiego wybuchu, w której wymagania są ustalane z góry, a programiści oczekują, że od momentu ro
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Head First Software Development. Edycja polska
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: