Professional Documents
Culture Documents
Inf 04cz1
Inf 04cz1
Cze6c 1
-
lnZynieria prog ramowan ia
proj ektowan ie oprog ramowan a,
i
Kwalifikacja lNF.04
Projektowan ie, prog ramowan ie
i testowanie aplikacji
HelionTf
rl
Cll
Wstqp
Rozdzial 1. Przygotowanie srodowiska pracy 7
1.1. Narzgdziawykorzystywane w prowadzeniu projektu . 7
1.2. Narzqdzia wykorzystywane w wytwarzaniu oprogramowania t5
1.3. Podsumowanie 30
1.4. Zadania 30
2.1. JS i co dalel?
- 32
2.2. Skladnia 33
2.3. Podstawy programowania 42
2.4. lnstrukcje warunkowe (conditionals) . . 60
2.5. lnstrukcle sterujqce i pgtle 69
2. 6. Wprowadzen ie do programowan ia obiektowego 80
2.7. Kolekcje arc
2.8. Zadania 88
3. '
Spis tresci
5.7.Zadania..... 179
T.E.Zakonczenie ........224
7.9,Zadania ..225
Bibliogralta 227
Skorowidz.. 229
(=:t-r
]4
Programista, tester czy ar,alityk to zawody cechuj4ce sig dynamicznym postgpem
technologicznym. Wa2ne jest, by caly czas siE rozwija6 i nie sta6 w miejscu. Warto
poznawae nowe metodyki wytlvarzania oprogramowania czy narzgdzia wspieraj4ce
procesy wytw6rcze. W tym podrEczniku znaleil( mozna opis najwa2niejszych etap6w
skladaj4cych sig na proces tworzenia aplikacji. Om6wiono naugdzianiezbgdne nakal-
dylm z nich (rozdzi al l.). Zaprezentowano podstanlz programowania w j gzyku JavaScript
(rozdzial2.). Pruedstawiono zasady dobrego programowania (zasada czystego kodu,
stosowanie algorytm6w, wstgp do wzorc6w projektowych itp. rczdzial3.). Opisano
proces testowania powstai4cego i gotowego programu (rozdzial - 4.). Zaprezentowano
przyklady dokumentacjiwytwaruanej w procesie testowania (rozdzialS.). W rozdziale 6.
om6wiono metodologie prowadzenia projektu programistycznego. Zwiefrczeniem pod-
rgcznika jestrozdzialT.,kt6ry mapokazae czytelnikom krok po kroku etapy tworzenia
aplikacji z uwzglgdnieniem poznanych wczeSniej wiadomoSci.
TreSci zawarte w podrgczniku s4 zgodne z podstaw4 programow4dlazawodutechnik
programista. S4 one powi4zane merytorycznie, strukturalnie i metodycznie z og6lnymi
cel ami ztal c enia okreSlonymi
ks w kwalifik acji IN F. 04. P rof ektowanie, programowanie
i testowanie aplikacii:
a) projektowanie, programowanie i testowanie zaawansowanych aplikacji we-
bouych;
b) projektowanie, programowanie i testowanie aplikacji desktopowych;
c) projektowanie, programowanie i testowanie aplikacji mobilnych.
W szczeg6lnoSci tre6ci prezentowane w niniejszym podrqczniku dotycz4 efektlw ksztal-
cenia wraz kryteriami ich weryfikacii,kt6re zostaly opisane w punktach INF.}4.3. Proiek-
towanie oprogramowania oraz 1NF.04.8. Testowanie i dokumentowanie aplikacii podstav,ry
programowej.
Zgodnie zuwagami przedstawionymi powy2ej niniejszy podrEcznik powinien stanowi6
dla ucznia uzupelnienie i rozszerzenie materialu zawartego w podrgcznikach do nauki
programowaniazaawansowanych aplikacji webowych, desktopowych i mobilnych. Przy
tym dotyczy to zar6wno (pocz4tkowego) etapu projektowania aplikacji, jak i (korico-
!\ych) etap6w iei testowania i dokumentowania.
Przeczytanie (ze zrozumieniem) tego podrEcznika jest bardzo izasochlonne i wymaga
sporego zaangailowania. Mamy jednak nadziejg,2e osi4gnigty cel bgdzie wart wysilku
wlo2onego w lekturg.
Pisz4c podrgcznik, d4hylyilmy do tego, by zawrzet w nim jak najwigcej praktycznych
przyklad6w. Wyszty6my z zaloLeria,2e iladne slowa nie zast4pi4godzin praktyki, dla
kt6rych opanowanie teorii jest zaledwie niezbgdnym wstepem.
Gl6wne 216 dla wiedzy dotycz4cej testowania i wytw arzania oprogramowania to :
1 . Certyfikowany tester. Sylabus poziomu podstawowego ISTQB@. Wersja 2018 V 3.1.
Prawa autorskie wersji polskiej zastrzeilone dla @ Stowarzyszenie JakoSci System6w
Infor maty cznych ( SJ S I ).
2. Slownik termin6w testowych@. Wersja 3.3.1. Prawa autorskie wersji polskiej za-
str zeilo ne dl a O Stowa ruy szenie Jako 5 ci System6w lnfo r matycznych ( SJ SI ) .
od OWI ska'
.L... .
AC
UI
'':-- --- ....-...
racy
Przygotowanie Srodowiska pracy to nie tylko instalacja i konfiguracja niezbgdnych apli-
kacji i narzg dzi, ale r6wnie2 nauka optymalnego ich wykorzystania. Obecnie wszelkiego
rodzaju tutoriale i szkolenia e-learningowe hiemal ,,wylewaj4 sig" z internetu, dlatego
coraz czgiciej wymagana jest znajomoS6 wielu narzgdzi juz na pocz4tku pracy po
to by proces tworzenia oprogramowania byl jak najszybszy i jak najbardziej uydajny
-
(^lu
rV'n.1. N arzq dzia wykorzystywane
--T
w prowadzentu projektu
W dzisiejszych czasach rcalizacia projekt6w jest tak r6znorodna,2e rynek nieustannie
dostarcza nowych rczwiyzafi, technologicznych, kt6re maj4 za zadanie wspomaga6
pro c e sy i zar zqdzanie p ro j ektami. W nini e j sz y m r ozdziale zo st an 4 om6wi o ne nar zEdzia
(zar6wno platne, jak i darmowe), kt6re wspieraj4 zarz4dzanie projektem, zarz4dzanie
testami otaz wytw arzanie oprogramowania.
zl I
\
li. i
-*
Rozdzial 1. I Przygotowanie srodowiska pracy
1,1.1. HP ALM
Jako pierwsze zostanie om6wione narzedzie HP ALM. Jest to aplikacja do wspiera-
nia procesu testowego i zarzqdzania testami. Dostgp do narzgdzia jest przyznawany
na podstawie licencji (1 licencja = 1 u2ytkownik). Umo2liwia ono planowanie oraz
wykonanie test6w manualnych i automatycznych, zaru4dzanie defektami (zglaszanie,
monitorowanie). HP ALM dzieli sig na dwie czE6ci:
o administrucyjn4 @ng. Site Administration);
. uzytkownika (ang. ALM Platform) caty modul przeznaczony dla u2ytkownik6w.
-
W dalszej rozdzialu skupimy sig na czg6ci u2ytkownika, gdyz panel administra-
czgSci
cyjny f est dostgpny jak sama nazwawskazuje
- - dla os6b pelni4cych funkcjg admini-
stratora. W panelu administraryjnym wykonuje sig wszystkie czynnoSci administracyjne,
takie jak tworzenie domen, projekt6w, uZytkownik6w oraz nadawanie uprawnieri.
Po wybraniu adresu docelowego narzgdzia w danej organizacjipojawia sig ekran logo-
wania (rysunek 1.1):
++-
+++++ ApplicalionLifecycleManagemenl
+++++
*-l**
i;cru_Gilv + - )1 .r- srEir 3d
-
rx&lai t,
/-\; n
I
i .,;o
l'-)
1.1. Narzedzia wykorzystyuane w prowadzeniu projektu
tl'! kshMrd *
;iX mapi: liw
& D3shkarduew
't emgemaat a
u, nqeases
LS: Lrkal*s
6 Reqrirws
6 l€stnE ^
@ Txi Reswcas
,l::&:li*-iw,.:r'.'r
&U restLab
@ l*tms
& ekh
2.
- rrr" d,.k .s i.,: d.Bitsbe b k l*t qm @-ioltu
I
l
a: 110
l:;
1.1. Narzqdzia wykorzystywane w prowadzeniu projektu
Poni2ej przedstawiono podgl4d widoku ekranu modulu Defects (rysunek 1.3). Mo2na
na nim zartwaLye fizy gropy menu:
1. Menu wyboru modul6w.
2. Menu g6rne.
3. Widok na wszystkie zghoszenia w ramach projektu, do kt6rego jeste6my zalogowani.
d AT:tsls vl&
& Da$brrduew
d{ &res€d a wewwil&x,r
*i Rdeses
I{lt LibBries ?
dl fleqtremsls
;
a
le.rry 5
-
s les1Re9tur(e: l;
S rxt nan
W Test kb ;
E resrnns !.
:8i.,:ikirarla.i:r':: ri.,,
"2
1.1.2. Jira
Jira jest komercyjnymnarzgdziem nie tylko wykorzystywanym w zaru4dzaniu projek-
tami, ale r6wnieL wspomagaj4cym elektroniczny obieg dokumentacji w firmie.
Tak wygl4da ekran logowania dla Jira cloud (rysunek 1.4):
Rozdziat 1. I Przygotowaniesrodowiskapracy
W Jirc
a Kentyulu;; A,]pl;
ir€rnrz::z5e' r3,Elallir:rgiltltcE
?.ir:.*;i: !oli.
- r-'-
1.1. Narzqdzia wykorzystywane w prowadzeniu projektu
Srodowisko produkcyjne
- zainstalowane w siedzibie klienta firmy tworzqcej opro-
gramowanie lub w chmurze sprzgt i oprogramowanie, w ktorych modul (lub system)
bqdzie uzywany. W sklad oprogramowania mogq wchodzi6 systemy operacyjne, bazy
danych i inne aplikacje.
@ a
r. &a&agilrs --t
, g1l!rM8!-la,@
a&re: @
YAllarriai
1.1.3. Tiello
Trello jest narugdziem bezplatnym, kt6re moLebyt. wykorzystywane zar6wno w pro-
jektach komercyjnych, jak i w celach prl,watnych (np. do planowania podr62y,bud2etu
domowego, remontu).
Poni2ej przedstawiono podgl4d na widok tablicy Trello (rysunek 1.8). Mo2na na nim
zatwaLye tzy grupy menu:
1. Menu operac i dotycz4cych udostgpniania/prywatno
j Sci tablicy
2. Widok kart.
3. Konto u2ytkownikawraz z opcj4powiadomief,.
114
. 1.2. Narzedzia wykorzystywane w wytwarzaniu oprogramowania
.15
,
Rozdzial 1. I PrzygotoWanie Srodowiska pracy
Zal62my ponadto, 2e kolega pracuje nad now4 funkcj4. skopiowal wigc caly katalog
oryginalny i nanosi zmiany wewn4trz kopii folderu. Poprawki do bie2qcej funkcji wci42
s4 natomiast rozwijane w oryginalnym folderze (rysunek 1.9).
Warzywniak oryginal
10.'10.2019 15:15
Warzywniak oryginal
+
Warzywniak z PayPal
_!6
1 .2. Narzqdzia wykorzystywane w wytwarzaniu oprogramowania
Pruyklad1.'l
Zobaczmy ra przykladzie, jak rozwi4zae problemy z ittegraci4.
Od czasu do czasu w lokalnej spoleczno6ci organizowane s4 wyprzedaze garailowe.
Zal62my, 2e rodzina Nowak6w chcialaby sig przyl4czy6 do tej vryprzeda|y i opr62ni6
ju2 pokoje dzieci
dzieci jttL wyrosly
- Antka i Marysi -bo zalegai4 w nich pluszaki i ubrania, zkt6rych
W pokoju Antka odnaleziono m.in. garnitur komunijny, pluszowego koalg oraz o trzy
rczmiary zama*ebtty.
W pokoju Marysi odnaleziono zamalebiurko, za niskie krzeslo obrotowe oraz mn6stwo
szpargai6w zwakacji w Egipcie
Antek zdeqrdowal, 2e oddaje wszystkie rzeczy wstgpnie zakwalifikowane do wystawienia
nawyprzedal.Przeni6sl je do salonu, gdzie byly sktadowane przedmioty do sprzedania.
Marysia nie mogla poilegnaC sig z pami4tkami z Egiptu. ,pddajg biurko i krzeslo, ale
pami4tki zostai4" orzekla.
-
Zal62my, 2e organizacjg vtyprzedaLy przeprowadzamy za pomoc4 Gita. Najpierw musi-
my wybra6 rzeczy nawyprzeda2. Robimy to za pomoc4 polecenia w postaci git add
nazwa_rzeczy.
Wybranie rzeczy (przeniesienie ich do salonu) za pomoc4 Gita wygl4datoby wiEc tak:
git add garnitur
git add pluszak
git add buty
git add biurko
git add k.rzeslo
Gdy wszystkie przedmioty zostaly ju2 wybrane (czyli przeniesione do salonu), podjgta
zostala ostateczna decyzla zaftvierdzaj4ca wyb6r. Realizujemy i4 za pomoc4 polecenia
Sit commit -m 'rzeczy na wyprzedaz' (-m to parametr, kt6ty oztaczako-
mentarz do commita, czyli wprowadzonych zmian). Nie znaczy to jednak,2e rzeczy
zostaly ju2 przeniesione do miejsca, gdziebgd4 sprzedawane, czyli do garahtt s4siada
(to bgdzie naszerepozytorium zdalne- remote) .Wciq2 jeszczeznajil,tj4siE w salonie
(czyli repozytorium lokalnym loca1).
-
Nastipnie tata wyni6st rzeczy do garuilt s4siada. W tym momencie przedmioty zostaty
wigc przeniesione z repozytorium lokalnego do zdalnego. Odpowiednia komenda to
git push.
WyprzedaLe organizowane s4 po to,by rzeczy, kt6re nam juZ nie s4 potrzebne, mogty
zosta1 zakupione przezinrtych. My ie ,,wypychamy" (push), dobrze byloby jednak, by
inni mogli je pobra6 (pu11). Aby to bylo mo2liwe, dla wybranych przedmiot6w nale|y
Rozdzial 1. I Przygotowanie srodowiska pracy
wykona6 polecenie git pu11. Nie bgdziemy jednak przeprowadza6 transakcji w ga-
ruZu. wybrafie przez kupuj4cego rzeczy tlo|ymy wigc zn6w w naszym repozytorium
lokalnym w salonie (rysunek 1.10).
-
trTT
Pok6j Antka
git add
ffiffi
trrr
Pok6j Marysi
git add
ffiffi
Rysunek 1 .1O. llustracla przeplywu zadan (apg. workflow) w Gicie na przykladzie
wyprzeda2y garazowej
Podobnie bEdzie vurygl4dala praca w Gicie z kodem. Dop6ki pliki s4 u nas na dysku,
to s4 lokalne (ang. local); gdy juL przerzucimy je do repozytorium, to opr6cz plik6w
lokalnych mamy teL ich zdalne (atg. remote) kopie
Przyklad 1.2
Wr66my do problemu z kodem 2r6dlov'rymwarzywniaka.Zapomoc4 systemu kontroli
wersji mo2na go rozwi4zad w opisany tutaj spos6b. Na pocz4tku kolega pracuj4ry nad
integracj4 sklepu z systemem platno6ci PayPal m6gl zrobi( kopiq kodu z dnia 10.1,0.2019
i pracowa6 wlasnie na niej. Tak zrobion4 kopig r'azwa{ny galgzi4. Komenda, kt6ra
slu2y do tworzenia nowej galgzi, to git checkout -b paypal (checkout utworzy
lokalnie gal42 o nazwie paypal; rtazwabgdzie zatem odpowiadaC rozwijanej funkcji).
Na koricu practrzeba sca1i6 wszystkie akty-wne galgzie z oryginaTnym kodem 2r6dlowym,
przechowywanym w gl6wnej (ang. master) galgzi. Uzyskuje sig to za pomoc4 komendy
git merge paypal wykonywanej, gdy jesteSmy w galgzi master.
Prace nad projektem rczpoczynamy od utworzenia projektu w dowolnym portalu, kt6ry
obsluguje zarz4dzanie wersjami projektu (np. github.com, bitbucket.org my bgdziemy
-
pracowali w pierwszym z nich). Po zaloLeniu konta w serwisie glfftub.com (czyli serwerze
z kodami 2r6dlovrymi) i utworzeniu projektu o nazwie firstProiectuzyskamy mo2liwoS6
1B
1 .2. Narzqdzia wykorzystywane w wytwarzaniu oprogramowania
Jakie Srodowisko wybrac? Trudno odpowiedziec na to pytanie. Wybor jest w tym przy-
padku (jak i w wielu innych) arbitralny, zale2y glownie od indywidualnych preferencji
uzytkownika Trzeba lednak zdawac sobie sprawg, ze funkclonalnosc Srodowisk progra-
mistycznych jest bardzo podobna (podstawowe funkcle to: kolorowanie kodu, autouzu-
pelnianie poleceh, sygnalizowanie blgdow skladniowych, tryb debugowania kodu). Jezeli
opanujesz jedno prawdopodobnie poradzisz sobie z pozostalymi Zazwyczaj rozniq sig
od siebie wyglqdem, skrotami klawiszowymi i liczbq zintegrowanych narzqdzi
Przyklady prezentowane w tym podrgczniku wykorzystujq wspomniany 1uz WebStorm.
Jest to rozwiqzanie komercyjne, jego autorzy jednak udostgpniajq darmowq licencjq
do celow edukacyjnych lub tez oferujq znizki dla start-upow. Do wyboru tego narzgdzia
sklania m.in jego dobra integraclaz narzqdziem Jira.
Mozna jednak skorzystac z innych srodowisk Wiele z nich jest jak WebStorm ko-
mercyjnych, ich producenci udostqpniajq jednak darmowe wersje z nieco ograniczo-
- -
nq {unkcjonalnoSciq (przy czym dla poczqtkujqcego programisty bgdzie ona zupelnie
wystarczajqca). Tak jest chocby w przypadku lntelliJ IDEA (https:llwww.jetbrains.coml
ldeal). Obok piatnejwersli Ultimate funkcjonuje darmowa, bez ograniczen czasowych,
wersja Community. Niestety ta ostatnia nie obsluguje jqzyka JavaScript, dostqpnego
w wersji platnej jeSli lednak chcesz programowac w innych jgzykach (przede wszyst-
kim w Javie), warto jq wyprobowac. Visual Studio, program Microsoftu obsiugulqcy
m.in. JavaScript, przygotowano w a2lrzech wersjach: komercyjnych Professional i En-
terprise (obie posiadajq bezplatne wersje probne) oraz darmowej Community. Wszyst-
kie mozna pobrac ze strony https. I lvisualstudio.microsoft.com I pl I.
+
19 r
Rozdziat I l Przygotowanie srodowiska pracy
lstniejq takze srodowiska zupeinie darmowe, jak chocby te dostgpne na licencji open
source (tzn 2e aplikacja jest tworzona przez progtamist6w w ramach otwartego prolek-
tu i kazdy moze pobrac kod oraz zmodyfikowai go na wlasny uzytek, moie Iezdopisai
nowe funkcje i udostgpnic je innym), takie jak visual studio code (najczgsciel uzywany
edytor kodu w przypadku jqzyk6w opartych na Javascripcie, dostqpny pod adresem
https:llgithub.comlmicrosoftlvscode), Netbeans (https.llnetbeans.orglindexgt.html)
czy Eclipse (https.llwww.eclipse.orgf). wartym polecenia srodowiskiem lest takze Atom
(https:llatom.io[.
Podczas instalacji warto zwr6ci6 uwagg naokno dotycz4ce opcji w sekcji Create Associa-
tions (rysunek 1.11) . Mamy do wyboru rozszerzeniaplik6w, kt6re maj4 by6 skojarzone
z programem to znaczy, 2e bgd4 domySlnie otwierane przez WebStorm. Zalecamy
-
wybranie plik6w z rozszerzetiami .is oraz .html.
C{ed.e fusmidlions
cilGl
420
i..)
1 .2. Narzqdzia wykorzysguane w wytwarzaniu oprogramowan a
tTt?:l .
rf"
qW&
We bstorm
't ,: .,::'.;:l',:.',,:1.,.': ,:
& 6di!ii!!'.leac6niror X
f3 n"pa{ryrm f?riici.,r.ac! cl .
( , cnHub .q.
t.(_,
:r.:,. a.rral
Je6li do tej pory nie zainstalowali6my Gita, to wySwietlony zostanie link pozwalaj4cy
na doinstalowanie brakuj4rych aplikacji (Download and Install na rysunku 1.14). Po
poprawnym zainstalowaniu pojawi siE okno podobne do tego z rysunku 1.15:
Ui.doryr ar\Urs*\w€.snIdiseb*cmp.o]ed5!lidF.ojsd
Adres URL okreSla, w jakiej zdalnej lokalizacji mamy nasz projekt (czyli w polu URL
trzeba wklei6 link do projektu utworzonego ta repozytorium zdhlnym). Dynamicznie
dodal siq r6wnie2 katalog na podstawie wybranego projektu. Po kliknigciu przycisku
Clone w tle bgdzie siq wykon1,.wa6 komenda:
git clone https : / / g L-ih,ab . com/ nazw a-uzytkowni kalfirs tPro j ect . qit
Po otwarciu pustego projektu w WebStorm moLna zobaczy(w lewym dolnym rogu op-
cjg wyboru repozytorium Gita (rysunek 1.16). Mo2emy j4v,rywola1zapomoc4skr6tu
klawiszowego Alt+9.
I
t
22
--17
1 .2. Narzqdzia wykorzystywane w wytwarzaniu oprogramowania
Kiedy uruchomimy to okno, zobaczymy, ze obecnie nie mamy 2adnych zmian (czyli nic
nie stworzyliSmy l{o changes committed), ale w lewej czgSci okna wida6, ze iesteSmy
-
na lokalnej galgzi master (rysunek 1 .1 7).
{1
Teraz dodamy nowy plik, aby zostat umieszczot:ry w repozytorium. W tym celu kliknij
na nazwie projektu pralq/m przyciskiem myszy i wybierz opcje zgodnie z rysunkiem
1.18. Po uzupelnieniu nazwy pliku i u,ybraniu dowolnej wersji HTML pojawi sig okno
dialogowe (rysunek 1.19).
Rysunek 1.18. Widok IA !!. !;i !p, !rag:& ic;. !d:c, Rli tr., r.! Iidi,, !.Lr ..1 .... ... .
nepla.eitrF.ii,'.1-rit.i 1i Tt$dirlpiii'
l.!!t.ril.!.... t{cnt! rlliis
'
!si:dD. t Fa'k'9'lt!nFl'
L Era.f.ffi! F{
!adr. l:?.nr..
'"
r - Ct1! iear*.
l'.. ""
Cprmr,i trt.rr!
5h.t;;r [iFI.r.,
llr
1, i.i5,d Ldh P6i
'' i.r.ar.!rnt..
&1ilt !{:{ic., ii
O are. cn 6 ttsrb
JeSli sig zgodzimy, to zobaczymy nasz plik w oknie lokalnych zmian (.Locsl Changes
Commit\. -
23,
Sozdzial 1. I Przygotowanie Srodowiska pracy
I g"l:"r ,
JeSli domySlnie siq nie otworzylo, mamy mo2liwoS6 jego wyboru (zakladka Commit
z lewej strony na rysunku 1,.20; ten sam efekt uzyskamy, wciskaj4c skr6t Alt+Fl).
tirstProject t::,firs't.html
P,o,ect _ . ri
Y *{ firstprcrect -l!}ebslorepreieelsfiir5l
rl
g!n.!dil!i.w!:l6{9at.go,.l.,,.tql!nJook!c:l!]ndcs!!!lp
, r.. ','
lklPtordt ;li:t!.tarl
&!s.6jftt rJ r (..f qu,s'cl..
Aclcrnflgtr,dcn.. 6.
6i )
., a I- {lal
& 1. F$jedr@
* 4 Fll.'illcsE
8,w.bBe* i
q.ftrnb**il' I
("-)24
'-T::;
1 .2. Narzqdzia wykorzystywane w wytwarzaniu oprogramowanta
251
Rozdzial 1. I PrzygotowanieSrodowiskapracy
lm doktadniejsze sq opisy zatwierdzanych zmian, tym latwiel jest p6zniej nimi za-
rzqdzac.
XamIffiin .ar pl
repozytorium zdalnego
Fassword:
fil! Remenber
*.
1 .2. Narzedzia wykorzysVwane w wytwarzaniu oprogramowania
Je6li nie wybraliSmy Commit and Push, to po wybraniu widoku Gir (dostgpnego
r6wnie2 pod skr6tem klawiaturowym Alt+9) i po wskazaniu galEzi master w menu
kontekstou'ym mo2na wybra6 Push i postgpowae zgodnie z wczeSniej opisanymi
krokami (rysunek 1.28).
cr ,--::9:.a1...
,..!r:Ali; iri. All ::,i,. Al: $ a{ }:
H-
K
',28
1 .2. Narzedzia wykorzys\,r,vane w wMwarzaniu oprogramowanta
aco
-Ix
, BE*]li:@
8887
4].
Sozdzial 1. I Przygotowanie srodowiska pracy
W opcji Choose folder naleLy wskaza6 folder, gdzie jest zlokalizowana aplikacja (czyli
folder nadrzgdny dla pliku index.html).
Po kliknigciu URL ttjrzymy uruchomion4 aplikacjg.
(-lu
V,t1.3.
r--T-- Podsumowanie
Rozpoczynaj4c prac7 w zespole projektowym, na instalac jg narzgdzi oraz zapoznatie
sig z nimi mamy od kilku godzin do kilku dni, w zaleLnoici od liczby narugdzi i iloSci
czasu, jaki zostal oszacowany przezprzeloZonego. Zapoznaj sig dobrze z opisanymi tu
programami, bo w dalszej czESci ksi42ki wszystkie bgd4 wielokrotnie'u2)-wane. Opr6cz
przedstawionych tutaj wybranych opcji warto przyswoi6 sobie dokumentacjg udostqp-
nion4 dla wy2ej wymienionych aplikacji. Czas po6wiEcony na poznawanie narzEdzi
zwr6ci siE w dw6jnas6b podczas korzystania z nich.
Clx
t.,a
r --T_--
1.4. Zadania
Zadanie 1.1
Jaka jest r62nica pomiEdzy walidacj4 a weryfikacj4?
Zadanie 1.2
Czy GitHub to jedyna platforma do repozyforium zdalnego? JeSli uwalasz, ze rrie,
wymieri inne.
( )30
1
--tr
Elementy
programowanla
na przyktad;zie
j+z a!avaScript-
Zasadniczymetapem Wtvvarzaria oprograrrrowania jest pisanie kodu aplikacji. W tym
rozdziale om6wimy elementy skladaj4ce sig na ten etap. Poka2emy, jak programowa6
w jgzyku JavaScript, cho6 w gruncie rzeczy moglibySmy wybra6 dowolny inny jqzyk
programowania. Pokr6tce om6wimy podstawowe niezbgdne umiejgtno6ci, tak2e te
niezwi4zane bezpoSrednio z JavaScriptem, jak pisanie kodu HTML czy stosowanie ar-
kuszy C S S. Je Sli umie j g t nie p ot4czy my ze sob q w szystkie p oznan e tu e Ie ment y, b gdziemy
w stanie stworzye prost4 aplikacjg webow4.
Na pocz4tku JavaScript byt prostym jgzykiem skryptowym, maj4cym na celu dodanie
prostych interaktywnych funkcjonalnoSci do stron internetowych. Z czasem odkryto
potggq tego jEzyka i obecnie jest u2ywany w kodzie prawie kaildej strony internetowej.
Efekty, kt6re mo2na uzyska( opieraj4c sig naJavaScripcie, to np. galeriezdjgQpopularne,
cho6 nie zawsze lubiane ,,wyskakuj4ce" okienka modalne czy moLliwoS6 wysylania
wiadomo6ci e-mail zpoziomtt, strony, atakLe niekiedy bardzo rozbudowane gry sieciowe
Za wyboremJavaScriptu (w dalszej czESci tego rozdzialu bgdziemy nazywaC go skr6-
towo JS) przemawia tak2e to, 2e wiele nowych tribliotek/framework6w oparto wlaSnie
na tym jqzyku. Innym atutem moLebye to, 2e pracuj4c nad kodem, rczrtltat naszych
prac mo2emy Sledzi6 w dowolnie wybranej przegl4darce. W tym podrgczniku przyjmie-
my wlaSnie tak4 strategig, to znaczy bgdziemy tLywae prostego kodu JS bezpoSrednio
w przeglidarce.Trzebajednak mie6 Swiadomo56,2e kodJS moLebye wykorzystywany
tak2e w skomplikowanych i bardzo rozbudowanych projektach, np. webserwisach
91,+'j
Rozdziai 2. I ElemenV;programowania na przykladzie jezyka JavaScript
Kod HTML (ang. HyperText Markup Language) zawiera treSc, ktora zostaje wyswiet-
-
lona na stronie. Zbudowany jest on z tagow, ktore mogq posiadac rozne funkcje, np, sE
to naglowki (ang header), cialo strony (ang. body) i stopka (ang. footer)
CSS (ang Cascading Sfz/e Sheefs), czyli kaskadowe arkusze styl6w
- zadaniem
tego narzgdzia jest przypisanie stylow elementom HTML, definiujqcych np wyglqd
czcionki, kolory, wyglqd akapitow, rozmieszczenie elementow na stronie. Stosowanie
CSS pozwala uniknqc powielenia kodu.
Silnik JavaScript (JS) kod JS odpowiadazazachowanie dynamicznych elementow
-
strony, umozliwia tez interaktywnoSc witryn. Kod ten jest interpretowany i wykonywany
przez wbudowany w przeglqdarkq silnik JavaScript lub inny przeznaczony do tego pro-
gram tzw, interpreter.
-
Aby lepiej wyjaSni6 te r62nice, uruchomimy przegl4darkg Chrome i wySwietlimy w niej
strong internetow4. W ka2dej przegl4darce mo2emy dokladnie prze!;ledzie, jak jest
zbudowana strona. Po klikniEciu prawym przyciskiem myszki i wybraniu z menu kon-
tekstowego pozycii Zbadai(lub wciSnigciu skr6tu klawiszowego Ctrl+Shift+I) uirzymy
po prawej stronie przegl4darki nastEpuj4ry widok (rysunek 2.1):
c32
p
2.2. Skiadnia
TN
;lgov.Pl '
ryf{r
tktualroJd
e&Milf Vdvtv*xr:* bn
-
x dr{i
{kli*{r}
x trb pd*dili
wy**ryah 615
GIs, MZ i MTN
:1. in?rin*rt:riit.
Dzigki lekturze tego i kolejnych rczdzial6w tej ksi42ki bgdziesz coraz lepiej rozumie6,
jak uruchamiaj4 sig poszczeg6lne komendy oraz cala aplikacja.
r^v
r\---r
t2.2. Sktadnia
2.2.1. Tagi
Elementem, kt6ry jest nam potrzebny do zrozumienia istoty jgzykaJavaScript (a w grun-
cie rzeczy tak2e HTML), jest tag. To pewien ztacz4cy ci4g znak6w rozpoczynal4cy
sig otwierajEcym nawiasem ostrok4tnym (<). Kaidy tag musi bp ponadto zamknigty.
Slu2y do tego sekwencja znak6w uko6nika i zamykaj4cego nawiasu ostrok4tnego (/>).
L . dl{roCTYfE lltml}
ll. Externa, Libraries i :.:{html 1a*9""sa"3
,rl Scratche* and Cqnsote$ ,a r{head>
:, {rilfia r*i!r'ac1'''lllF-&":
, <titLelHBtj.on</tit:lr>
', {lhead}
. <bctiY>
r, </borly:
ql
, r: </i1tnl>
*:
TtsreimL l-*esl t *
33',4
()
Rozdziat 2. I ElemenV programowania na przykladzre iQzyka JavaScript
Nie musisz znac dokladnie wlaSciwoSci wszystkich tag6w. JeSli chcesz sig z nimi zapo-
znac, skorzystaj z ich zestawienia, ktore mozesz znale2c np. pod adresem https.llwww
w3schools. co n ltag s I tag _fitm l. as p.
Twoja znajomosc tagow bgdzie sig poglgbiai zka2dqnapisanq przez Ciebie stronq, lm
wigcej ich napiszesz, tym latwiejsze bqdzie kodowanie kolelnych
&aray,is
&bools&n.i5
ii& $tari.j$
d&string*i5
& templat€-littral6.is
;* larisbtg-eonst-leti g
* variabies.is
i-. iaar.ilrl
Kody zarowno HTML, jak i CSS, a przede wszystkim skrypt6w JS znale2c mozna
-
w serwisie G itHub, pod adresem https I I g ith u b. com I wero n i kako rtas I book,
:
-
N1
w tej chwili skupimysig wyl4czni e na start.js i index.html, pomijaj4c folder css, zawie-
raj4cy kaskadowe arkusze styl6w.
To kod HTML odpowiada za to, co znaiduje siE na stronie. w pliku HTML mozna
umie6ci6 jei tre56, np. nagl6wki, akapity tekstu, listy wypunktowane, obrazki czy
odsylacze do innych stron. JavaScript odpowi edzialny jest zawykonywanie akcji, np.
obliczeri czy zloilonych interakcji z uLytkownikiem. Aby poinstru owae przegl4darkg
internetow4,2e ma wykona6 napisany przez nas kod JavaScript, w pliku HTML trze-
ba zawrzee informacjg o tym, 2e na naszej stronie bgdziemy rLywae skrypt6w, kt6re
znajdui4 sig w pliku start.is. czynimy to, zamykaj4c Scie2kg do pliku w znacznikach
<script)</script>, jak na rysunku 2.3.
Jak juz wspomniano, phk index.html to domySlny nowy plik w formacie HTML. ge-
nerowany za pomocE srodowiska webStorm. zwroc jednak uwagg, ze stanowi on
prostq, ale kompletnq i dzialalEcq aplikacjq Wystarczy kliknqi w prawym gornym
rogu przeglqdarki by od razu zobaczyc rezultat. Mozna lez znale2c plik na dysku
i uruchomic go za pomocq chrome (zgodnie z instrukcjq zamieszczonq w pierwszym
rozdztale).
wspolpraca miqdzy kodem HTML a JavaScriptem nie ogranicza sig jedynie do po-
jnstruowania przeglqdarki internetowej znacznikiem <script> o koniecznosci
wykonania skryptow ze wskazanych plikow z poziomu skryptow JS mozliwe jest
odczytywanie tresci strony internetowel, wplywanie na je1 zawartosc i wyglqd jak
rowniez reagowanie na dzialania uzytkownika i zdarzenia np. kliknigcie przycisku
lub przewinigcie strony do okreslonego miejsca. Aby taka -wspoipraca byla mozliwa,
przeglqdarki internetowe udostqpniajq dla JavaScriptu model obiektowy dokumentu
(DON/, ang. Document Object Model) i modet obiektowy przeglqdarki (BOM, ang.
Browser object Model)
- zespoly klas i interfejsow pozwalalqcych na dostqp do
zawarto6ci strony internetowej i interakcjq zprzeglqdarkq i uzytkownikiem z poziomu
kodu skryptow.
w tym rozdziale poznasz podstawy skladni lgzyka Javascript, jak rowniez jego bar-
dziei zlozone elementy, takie jak obiekty i kolekcje, ktore utatwiq Ci zaznajomienie siq
z tymi interfejsami. Jesli chcesz siq z nimi zapoznac, zajrzyi np. pod adres https.ll
www.w3schools.comlislis htmidom.asp, gdzie znajdziesz obszerne informacje na ten
temat.
35 i-
-----r:-
Rozdzial 2. I Elementy programowania na przykladzie jqzyka JavaScript
Ss$lngs.is
*, teeplaie-literals.is
& va.iable-const-let,is
S variable.js
& irdex.html
I
t mdesign-*€ttern .P <leript $re = "jsl$tartl$tart,js"r<ls6ript>
ial s ildt*op
.i:<gouy>
i €. a &&obiect-proqnm*ing
|
(:T-
.lJo
2.2. Skladnia
Do dodania skryptu znaiduj4cego sig w katalogt is nale|y uLyc tagu script i doda6 do
niego wlasciwoS6 informu jEc4 o tym, gdzie ten skrypt sig znajduje. Musimy zatem uLyt
skladni (script src : " nazwa kataTogu/nazwa skryptu. j s,,)1/script>;
w naszym przypadku u2yliSmy jei w 8. Iinii domySlnego pliku HfHAf.
Po uruchomieniu pliku uzyskamy nastqpuj4ry efekt (rysunek2.7):
Hsll0 rcdd
---;;;
Listing 2.1
Przekierowanie komunikatu do okna konsoli
e7 i/-.-,
.J/
i
L -r'
--q-
Rozdzial 2. I Elemenhl programowania na przykladzie jQzyka JavaScript
Pruyklad.2."L
Zacznijmy teruz pisae w)'wolanie albrt (rysunek 2.10).
! a1 i r. ,.-l ,l
'".r.
:',
---il
Po wpisaniu kilku liter pojawila sig podpowiedZ sugerui4ca petn4 rrazwg funkcji. Jak
sig mozna domySli6, alert przyjmuje i wySwietla dowolny napis. Napis wJavaScrip-
cie mo2na umie6ci6 w cudzyslowie, przy czym trzeba pamigtad, aby poda6 zar6wno
cudzysl6w otwieraj4cy, jak i zamykaj4cy (rysunek 2.11).
l38
,--xr
2.2. Sktadnia
Ltczba cudzyslowow w skrypcie musi byi parzysla ka2dy cudzyslow musi mie6
zakorczenie. -
Przyklad2.2
Spr6bujmy teraz uruchomi6 skrypt napisany w taki oto spos6b (rysunek 2.13):
Kazdy nawias (czy to kwadratowy, czy p6tokrqgty, czy klamrowy) musi byi domknigty.
Podobnie jak w przypadku cudzystowow, liczba nawiasow musi byc zatem parzysta.
Ponadto nawiasy muszq byc zamykane w kolelno6ci odwrotnel do tej, w ktorel byly
otwierane: { ([
]) ].
Przyklad2.3
Spr6bujmy zapisa6 slowo alert, zaczynaj4c od wielkiej litery (rysunek 2.15).
Alert("*el-11 r*erl,d") ;
3e (_)
Rozdziai 2. I ElemenV programowania na przyktadzie jezyka JavaScrrpt
-.i\1i1rmrt. .> . .
Pruyklad2.4
Spr6bujmy teraz wypisa6 ,,Helio world" i w konsoli, i w oknie alertu. Ulyymy polecefl
z rysunku 2.77 (1eSli widzisz w nich blgdy, to dobrze; na razie jednak nie przejmujmy
sig nimi):
()40
,)
2.2 Skladnia
'; S top
' G) Derdu,r laets v
* ,Un.ruqhl R€ferena?frror: ,.lert 1s *c1 .iefj.ned start j r:1
et:il;ajt,jr:1 "
2.2.5. Komentarze
W celach edukacyjnych bgdziemy stosowali komentarze, by opisa( co w kt6rym miejscu
kodu siq dzieie Ich stosowanie jest dobr4 praktyk4 programistyczr4. Utatwiaj4 orienta-
cjE w kodzie wlasnym, kiedy wracamy do niego po dltzszej przerwie, jak
- zar6wno
i (tym bardziei) cudzym. OczywiScie nie ma sensu wyjaSnia6 w komentarzach ka2dej
linii kodu, nie powinni!;my te| tego robi6 w przypadku tych fragment6w, kt6rych
przeznaczenie jest dla os6b znaj4cych skladnig jgzyka oczywiste. Trzeba ponadto pa-
migta6, 2e w praktyce kod powinien by6 pisany tak, by komentarze byly zbqdne. Nazuy
zmiennych i metod powinny by6 na tyle jasne, by osoba czytaj4cakod nie potrzebowala
dodatkowych wyj aSnieri.
41 {-;
_ cr_-
Rozdzial 2. I Elementy.programowania na przykladzie jqzyka JavaScript
Listing 2.2
Komentarz jednolinijkowy
// Komentarz j ednolinijkowy
Listing 2.3
Komentarz skladaj4cy sig z wielu linii
/" Komentarz
wielolinijkowy
JeSli poprawnie udalo nam sig napisa6 ten element kodu, to jest on y{yszaruoty.
Warto by6 Swiadomym, 2e nic spoSr6d tego, co jest komentarzem, nie ma wptywu na
dzialanieprogramu jest to podczas jego wykonywania pomijane Ztego wzglEdu dzigki
-
komentarzom mo2emy w latwy spos6b ,,wyl4cza(" fragmenty kodu, kt6rych wykony-
wanie chcieliby3my chwilowo zatrzyma( (np.'niedokohczone lub potencjalnie blgdne).
,/---l>
JZF9. Podstawy programowan ia
Aby m6c stworzyC peln4 aplikacjg,trzebanajpierw nauczy1 sig podstaw programowania.
Pewne podstawowe informacje zwi4zane ze skladni4 jgzyka jrLzaprezentowali3my Ten
rczdzial stanowi wprowadzenie w tajniki programowania; zasady tu poznane lyyko-
rzystamy w ostatnim rczdziale.
Nie jest to petne kompendium wiedzy dotycz4cej programowania w jEzyku JavaScript. Jest
to zaledwie niezbgdne minimum, pozwalaj4ce na stworzenie prostej aplikacji webowej.
W tym i kilku innych punktach rozdzialu skupiamy siq na opisaniu deklarowania zmien-
nych i tworzenia obiektow w jqzyku JavaScript. Nalezy tutaj podkreSlii, ze w innych
jgzykach (choc nie we wszystkich) deklarowanie odbywa siq poprzez jawne oznacze-
nie, lakiego typu zmiennq chcemy utworzyc. Jqzyk dynamicznie typowany, taki jak
JavaScript, nie wymusza na programiScie deklaracli typu zmiennej, lecz pozoslawia
interpretacjg zmiennej interpreterowi na podstawie 1ej zawarto6ci,
2.3. Podstawy programowanra
Pruyklad,2.5
WyobraL sobie aplikacjE bankow4. Wiadomo, 2e musi by6 w niej przechow),wany,
wySwietlany i bardzo czgsto modyfikowany stan konta. Nie bgdzie on zatem war-
toSci4 stal4, a zarazem musi byC zawsze dostgpny W Swiecie programowania do
przechowywania stanu konta (i innych wartoSci mog4cych sig zmienia6) doskonale
nadaje sig zmienna, kt6ra jest dynamicznie modyfikowana w zaleznoici od tego, czy
co6 zostalo wplacone na konto, czy teL wykorzystano Srodki z konta nazaktpy.Przy
kaLdej operacji bankowej zawartoi( zmiennej bgdzie inna. Informacja o modyfika-
cji, podobnie jak bie24cy stan konta, nie musi byt kaLdoruzowo wySwietlana tLyt-
kownikowi; walne,by kaida zmiana byla odzwierciedlana w zawartoSci zmiennej,
dostgpnej w kodzie aplikacji.
lm mniejsza liczba zmiennych, tym czytelniejszy jest nasz kod. Przed utworzeniem ko-
lelnej zmiennel musimy sig zastanowic, czy nie istnieje juz gdzieS jakas inna, ktora
przechowuje potrzebne nam wartoSci.
Trzeba tez pamiqtac o tym, zeby jednoznacznie identyfikowai zmienne, JeSli wyobra-
zimy sobie zmiennq jako adresata listu, a program lako skrzynkq na korespondencjq,
latwo zdac sobie sprawg z tego, ze omylkowe wystanie listu do niewlasciwego adresa-
ta nie byloby najlepszym rozwi4zaniem.
43{)
Rozdzial 2. I Elementy programowania na przykladzie jqzyka JavaScript
Przyklad,2.6
Utw 6r zmy pierwsz4 zmierrr,4. W naszym kodzie bgdzie ona slu2yta do przechowl.wania
komunikatu do wySwietlenia (rysrnek2.22).
:::31
;':::l*
I yar l}lessage;
,.*:i
,arta . console,1og(nessage)
,7, I
I
NI
,t
W celu utworzenia zmiennej trzeba poda6 Slowo kluczowe var, kt6re jest skr6tem
od angielskiego vari able, oznaczaj4cego zmienn4. Nastgpnie podajemy nazwg naszej
zmiennej w tym przypadku message.
-
Warto pamiqlac, ze nazwy zmiennych powinny byc takie by jak najlepiej informowaly
o przechowywanych w nich warto6ciach powinny byc znacz4ce. Nazywanie zmien-
-
nych x (moze z wylqtkiem niektorych dzialan matematycznych) czy mojaZmienna
nie jest zatem dobrym pomyslem. Dobrym zwyczalem jest nadawanie zmiennym nazw
w jqzyku angielskim, ale nie jest to wymagane, Warto natomiast spojnie lrzymac siq raz
obranego sposobu nazywania zmiennych,
Listing 2.4
Zmieriamy w pliku index.html informacjE o skrypcie, kt6ry ma by6 wykonywany
:;++
2.3. Podstawy programowania
Listing 2-5
Pr6ba odwolania sig do zmiennej, kt6rej nie przypisano 2adnel wartosci...
var message;
console.log("zaviarto66 message " + message) ;
Efekt wida6 na rysunku 2.23. lJzyskalismy bl4d undefined, kt6ry w tym przypadku
oznacza, ze do zmiennej nie zostala przypisana Ladna wartoS6.
Listing 2.6
Przypisujemy do zmiennei wartoS6
1 var message,'
2 console.log("zawarto36 message ,, + message);
3 message = "Informac;a o uZytkowniku";
4 consoLe.log("zawarto56 message " + message);
45f':
Ll
Rozdzial 2. I Elementy.programowania na przyktadzie jezyka JavaScript
Ul,uAGA
Przy zmianie wartoSci zmiennej nie uzywa siq juz siowa kluczowego var, ktore sluzy
wylqcznie do tworzen ia (deklaracji) zm ien ne1.
GdybySmy je zastosowali utworzylibySmy nowq zmiennq, a WebStorm (lDE) podpo-
wiedziaiby nam, ze taka zmienna juz istnieje (rysunek 2 25)
..i,3lyl.5 c!5
46
2. 3. Podstawy programowania
W przypadku napisu w C++ nalelaloby uzye 1ablicy znak6w typu char, czyli przypi-
sanie do zmiennej messag'e napisu wygl4daloby tak:
Trzeba byc takze 6wiadomym, ze utworzenie zmiennej o takiej samej nazwie, jakq ma
juz inna zmienna, skutkuje przesloniqciem tej pierwszej. Oznacza to, ze od tej pory
widoczna bqdzie w kodzie tylko ta druga zmienna. Jakakolwiek proba odwoiania
sig do zmiennej poprzez jej nazwg
alert (message) bqdzie skutkowala - np wdzialaniem
celu wySwietlenia za pomocE polecenia
na tej warto6ci, ktora zostaia
-
przypisana do pozniej utworzonej zmiennej,
Nie wszystkie nazwy zmiennych sq dozwolone. Nie mozna np, uzywac do nazywania
zmiennych siow kluczowych jqzyka JavaScript, ktore zestawiono w tabeli 2,-1.
Tabela 2.1. Lista zarezerwowanych stow kluczowych
abstract boolean break byte CASE
47:
Rozdzial 2. I Elementy. programowania na przykladzie Jezyka JavaScript
Listing 2.7
Modyfikowanie warto3ci zmiennej sum poprzez dodanie 10 do iei pocz4tkowei wartoSci
i var sum : 3,'
2 sum -= 10;
3 consoie. log (sum) ;
I
I
::)48
z.J. rouslawy pr ugrar I ruwar ild
Przyklad2.T
ZaloLmy, ze utworzona wczeSniej zmienna sum przechowuje kwotq do zaplat,v za za-
kupione produkty Zwigksza sig ona o odpowiedni4 kwotg po ka2dym zakupie. w tym
przykladzie dodajemy do sumy zakup6w leszcze podatek, kt6ry jest naliczany do
kazdego kupionego produktu.
Listing 2.8
Wyliczenie i wySwietlenie kwoty do zaplaty powigkszonei o podatek
1 rrar tax : 0.3;
. . .t .ax;
3 console.ioE("slma zakupow z podatkrem " + sum);
Ostatecznie sum4 bgdzie zaS dotychczasowa suma zakup5'ar plus podatek, naliczany od
ju2 obliczonej kwoty. Podatek to inaczel suma zakup6w pomnozota ptzez wskazan4
warto66 podatku, czyli surn*tax. Po obliczeniach wypisujemy wartoS6 powigkszon4
o kwotq podatku w konsoli.
Zauwa2,Ze + ma w programowaniu jeszcze jedn4 funkcig. W wierszu 3. nie wykonuiemy
juL Zadnych obliczeh, ale za pomoc4 plusa informuiemy program, ze po komunikacie
ujgtym w cudzyslowy ma wy5wietli6 jeszcze aktualn4 rvartoSe zmiennej sum.
4ee
----
Rozdzial 2. I Elementy programowania na przyktadzie jqzyka JavaScript
Pruyklad2.8
DodaliSmy do naszego projektu nowy plik: uariable-const-let.js. W zwi4zkt z tym
w pliku index.html zmieniliSmy skrypt, do kt6rego sig odwolujemy Na rysunku poni2ej
widzimy zawartoie tego skryptu. Utworzyli6my w nim (za pomoc4 slowa kluczowego
const) zmienn1 staf a (dla nazw zmiennych lepiej jest nie:uzryae polskich znak6w)
i przypisaliSmy iej warto66 2 (rysunek 2.26).ZauwaL,2emoznazadeklarowa(zmienn4
iprzypisal do niej warto66 w jednej linijce; dotychczas robili3my to w dw6ch osobnych
poleceniach.
:,,r Prcjecl Fil{s Tests .t .,.:,',:: -r.. :.a -- ;r ,/ari0"-crisi-iei.js rr ta.iables lS :ll,: :
$workspae*.xrnl
& &&css
r S*is
e && algoritm
b &clean-code
b & csnditionals
b & des;on-lattern
& !k toOp
b & obiect-prografimiftg
'i, t,,:ii slart
,1i:,, array.ls
.:i:, baolean.ls
,:i:, start.js
,;!i, str-ings.js
,;;:variables.js
a)50
'::
2.3 Podstawy programowania
Spr6bujmy teraz powiEkszy6 warto66 tak utworzonej (za pomoc4 slowa kluczowego
const) zmienne;'. U|yjemy do tego prezentowanej iuL wczeSniej konstrukcji +: (ry-
stnek2.27).
.;lii variable-const-let.js
':. const $tal6 . 2;
._ q,l
-*^.^ --
)l*r3 ,.1
;i: islvariable-const-let.js
Jak widac zmienna zdeklarowana przez const powoduje, 2e raz przyplsanej do niej
wartosci nie mozna zmieni6. Z tego wzglqdu do takich zmiennych musimy przypisywac
wartoSci juz na etapie ich tworzenia.
Deklarowanie poprzez slowo kluczowe let jest analogiczne do :uLycia var. R62ni-
ca pomigdzy nimi jest widoczna dopiero wtedy, kiedy utworzymy w kodzie kolein4
zmtenn4, kt6ra ma inne zadanie ri| ta zadeklarowana wcze6niej, ale przypadkowo
obie nazwiemy tak samo.
51 r'-)
Rozdziai 2. I ElemenV programowania na przykladzie jqzyka JavaScript
Pruyklad2.9
oto co siE dzieje, gdy taka zmienna jest zadeklarowana za pomoc1var (listing 2.9):
Listing 2.9
Deklaracia dw6ch zmiennych o takiej samej nazwie za pomoc4 slowa kluczowego var
lv,. s-' 4;
2 let sumlnrtBylet - 10;
3 // inne fragmenty kodu
4 var sum : 10;
5 corsole . loq ( sun) ;
W linii 1. zadeklarowali6my zmienn4sum i przypisaliSmy jej wartoS6 4.P62niej,w wier-
szu 4. (w zwyktych okolicznosciach pewnie byloby to duzo dalej w kodzie, w przypadku
zmiennych deklarowanych tak blisko siebie zapewne zauwalylibysmy, Le nazywal4
sig one tak samo), utworzylismy innq zmienn4, zn6w za pomoc4 stowa kluczowego
var, i przypisali6my jej wartos6 10. co siq stanie, kiedy wykonamy skrypt? w konsoli
otrzymamy taki oto wynik (rysunek 2.29):
-n F;erpnr; Console Srurms Nrtwo:\
: . )>
;Ntoor('.) Oslault ? *
Yr,:,!r
I {.i
variabl€s,js:5
warto zwrocii uwagg na to, ze skladnia JS czy pythona nie wymaga konczenia pole-
cefl srednikiem, w innych lqzykach, jak c++ czy Java, srednik ma kluczowe znacze-
nie i lego niezastosowanie spowoduje blqd kompilacji w JS uzywanie srednikow
lest
uznawane za dobrq praktykq, choi nie jest wymagane.
Przyklad2.lO
rnaczej bqdzie w przypadku zmiennej zadeklarowanej za pomoc4 konstrukcji 1et.
PostEpujemy podobnie jak w poprzednim przykladzie. Najpierw tworzymy zmiennq
sumrnitByr,et (listing 2.10) iprzypisujemy jej warto66 10 (linia 2.),po czym dekla-
ruiemy inn4 zmienn4 o tej samej nazwie i przypisujemy jej wartos6 1 (linia 6.).
a-)52
{)
2.3. Podstawy programowania
Listing 2.10
Deklaracja dw6ch zmiennych o takiej samej nazwie za pomoc4 stowa kluczowego let
SU. ;
6 var sumlnitBylet : 1;
7 conscfe . Log ( sumlniiBy].et );
Bysunek 2.3O. lnterpreter nie pozwala na utworzenie zmiennej o takiel samej nazwie,
jakq ma zmienna zadeklarowana wczesniej za pomocq stowa kluczowego let
Tym razem skrypt nie wykonal sig poprawnie, ale zwr6cll informacjq o blgdzie, wy-
Swietlaj4c4 ostrze2enie dotycz4ce 7. wiercza kodu, 2e zmienna sumlnitByLet zostala
juz wczeSniej zadeklarowana.
Jesli piszemy skrypiy, ktore zawierajq wiele linijek i nie chcemy sami dbac o to, by przy
deklarowaniu zmiennych nie nastqpowala nieoczekiwana zmiana wartosci, uzywajmy
let. Stosowanie tej konstrukcji pozwala nam uniknqc du2ejliczby btqdow w programie,
trQ
Rozdzial 2. I Elementy programowania na przykladzie jqzyka JavaScript
Do zdefiniowania zmiennej typu Str j-n q nalely uLye podwbjnego lub pojedynczego
cudzyslowu na pocz4tku i na kofcu slowa.
Przyktad.2.11
Na listingu 2.11 wida6 kilka przyklad6w polecefl deklaruj4cych zmienne typu laicu-
chowego. Jak wida6, mo2na u2ywa( zar6wno cudzyslowu podw6jnego (1inia 1.), jak
i poiedynczego (linia 2.). Gdyby3my jednak w samym taicuchu znakowym chcieli u2y6
apostrofu (linia 3.), musielibySmy poprzedziC go ler,r,1zm uko3nikiem (ang,. backslash, \), by
unikn46 zinterpretowania go jako znaku zamykaiqcego lafrcuch. Nie musimy tego robi6,
ieSIi ci4g r,rldzielamy cudzyslowem podw6jnym (linia 4.). Ostatnie polecenie tworzy napis,
kt6ry np. ze wzglgdu na iego dlugoS6 chcemy podzieli6 na dwa (lub wigcej) wiersze.
- -
Listing 2.11
Zmienne typu String mozemy tworzy(. za pomoc4 cudzysiowu podw6jnego i cudzy-
slowu pojedynczego
I const nameDoubLeQuote : "Marek",'
2 const nameSiagleQucte = 'Nlarek';
3 const senl-erceSingieQuot,e : 'I\'m programmer';
4 const sentenceDoubLeQuote programmer";
5 const mull-iLine : 'Dziei dobry! \
5 niech ten dzlen bedzie sloneczny';
Warto doda6, 2e molna takLe tworzyc napisy zlolone z samych liczb. Na przyklad
zmienna utworzona w tym fragmencie kodu: ciagLiczb - "L23', nie jest liczb4,
lecz laflcuchem znakowym.Ztego wzglgdu nie da sig wykonywa6 na niej obliczeri ma-
tematycznych, a pr6ba dodania dw6ch w ten spos6b utworzonych zmiennych (listing
Z.7Z) przyniesie z pewnoSci4 nieoczekiwane wyniki (rysunek 2.31)!
Listing 2.12
Pot4czenie dw6ch zmienn,vch typu tekstowego
''i54
(_)
2. 3. Podstawy programowania
Na tym etapie umiesz jtL rozr62niae ci4gi znak6w (napisy) i liczby. Potrafisz definio-
wa6 zmienne, kt6re pozwalaj4 na rLywanie ich w interakcji z rtLytkownikiem lub
programem. To bardzo walne, podczas programowania bgdzies z z tych umiejgtnoSci
korzysta6 wielokrotnie.
Listing 2.13
Deklarowanie zmiennych typu boolean
,Let correct = true;
,Let notccrrect = false;
55 ('-,)
(j,
Rozdzial 2. I Elementy.programowania na przykladzie jgzyka JavaScript
Przyklad,2.l2
Oto wywolanie metody (listing 2.14).Warto zauwazye,2e zwr6corty przezt|ytkowni-
ka tekst przypisujemy od rant do zmiennej choice, dziEki czemu bgdziemy mogli jE
p62ilej wykorzystaC do odwolania sig do treSci przekazanego komunikatu.
Listing 2.14
Skladnia metody prompt
1et choice: prompt('Co s4dzisz o nauce programowania?');
Wynik wykonania tej instrukcji jest
widoczny na rysunku 2.32. Komuntkat z bie2qcei strony
Cc $Edzisz o nalce prcA,amcwada?
I tak oto nawi4zalilmy pierwszy interak-
tywny kontakt z t|ytkownikiem.
w
,. -........ -.-...'...:
Listing 2.15
Za pomoc4 tych polecefl wySwietlamy w konsoli pobrany od uzytkownika tekst
1 const statement : 'Xlauka programo\{ania jest ';
2 lel- choice = prompr-('Cc sacizisz o nl.t-e LrJgranoHfnia?');
3 consoie. lcg (statemenr + ch.ice) ;
Listing 2.16
t aiicuch szablonowy uptaszcza lqczenie napis6w ze zmiennymi JS
57 {,,_)
()
Rozdzial 2. I Elementy programowania na przykladzie jqzyka JavaScript
2.3.7, Tablice
Do tej pory przechowywaliSmy w zmiennych pojedyncze wartoSci. Czy istnieje spos6b
na to, by w jednej zmiennej zawrzeC wiele warto6ci tego samego typu, np. w zmiennej
labels przechowa6 ceny produkt6w zapisane na etykietach sklepowych? CoS takiego
umo2liwiajE tablice Poni2ej zadeklarowali6my zmienn4 tablicow4 f abels (listing 2.17).
Przyklad.2.1.3
Listing 2.17
Deklarowanie i wySwietlanie zmiennej tablicowej
lel labels : 112.0, 8, 41, 9.321;
consofe. fog (fabels) ;
Listing 2.18
WySwietlenie w konsoli elementu tablicy o indeksie 3
I tutaj czeka nas niespodzianka. Ot62 w konsoli otrzymamy taki wynik (rysunek 2.35):
w wyniku 47, musielibySmy zatem uzy6 odwolania labels t2l; 1,2 zobaczymy po
wpisaniu labels t0I itd. (rysunek 2.36).
Listing 2.19
Drugi element tablicy i element z indeksem 2 to nie to samo
console.icg("eiement r-abticy pod rndeksem 1 tc " + Iabelslll);
consoLe.Iog("pierwszym eLementem tablicy ;est " + labersL0l);
uzyskamy komunikaty z rysunku 2.37:
}} itt',,,,.tX,
Na pocz4tku do66 trudno sig do tego przyzwyczaiQ co iest ptzyczyn4 wielu blqd6w.
GdybySmy bowiem chcieli wySwietli6 ostatni, czwafty element naszej tabliry i :u?yli-
bySmy do tego odwolania f abef s t 4 I (listing 2.20),wyszliby6my poza gfanicQ tablicy
element z indeksem 4 nie zostat bowiem w niej zdefiniowany
-
Listing 2.20
Takie polecenie spowoduje wykroczenie poza zakres tablicy
console.log("ei=ment --ablrcy " ' LabeIs l4l ) ;
tro\
tl*
Rozdzial 2. I ElemenV programowania na przykiadzre jezyka JavaScript
Listing 2.21
Pobieramy informacjg o dlugoSci tablicy
/---tl'
l*412.4.
--r -T -
lnstrukcje warunkowe (conditionals)
W Zyciu czgsto stoimy przed wieloma wyborami. To, jak4 podejmiemy decyzjg, jest
tzaleLnione od spelnienia r62norakich warunk6w, czasami prostych (,,Je6li bqdzie
ladna pogoda, p6jdE na spacer, je6li nie, poczytamksi42kg"), innym razem doS6 skom-
plikowanych (,Je6li uda mi siE zda6 egzamin maturalny z wysokim wynikiem, p6jdq na
dobre studia, o kt6rych marzq Dodatkowo, jeSli rodzicom uda sig zaoszczgdzi6 trochg
pieniqdzy, wybiorg lepsz4 uczelniq poza moim miejscem zamieszkania").
( )oo
-- 7--
W programowaniu jest podobnie. Bardzo czqsto dzialanie programu bEdzie uzale2nione
od danych dostarczonych np. pruezuZytkownika. Najprostszymprzykladem jest okno
dialogowe, w kt6rym pytamy, czy chce on subskrybowa6 ofertg wybranego sklepu. Jesli
kliknie Tak, powinni6my umo2liwi6 mu przejscie do formular za slu24cego do wprowa-
dzania danych. JeSli wybierze odpowiedLNie, powinien pozosta6 nabie24cej stronie.
Do obslugiwania takich sytuacji slu24 instrukcje warunkowe
Przyklad2.l4
Gdy podczas planowania naszej aplikacji pojawi4 sig siowa jeili lub kiedy, to z,nak,
2epowinni6my uLyt bloku kodu w takiej postaci (listing 2.22):
Listing 2.22
Instrukcja vu,arunkowa if
if (4 > 3) |
or [-r
--d-
Rozdzial 2. I Elementy.programowania na przykladzie jezyka JavaScript
Bardzo wazne jest tutaj prawidiowe uzycie nawiasow klamrowych. Tak jak w przypadku
nawiasow okrqglych musimy pamiqtac, by zamykac kazdy oiwarty nawias. Je6li po
warunku otworzymy nawias klamrowy i nie zamkniemy go na koicu bloku instrukcji do
wykonania, zostanie zwrocony blqd.
Przyl<lad,2.l5
Teraz skupmy sig na dw6ch ostatnich operatorach (listing 2.23 przyklad dostgpny
w skrypcie s imple-conditionals.i s).
-
Listing 2.23
R62nica w dzialanirt operator6w == i ===
-)62
(*$-
2.4 Instrukcje warunkowe (conditionals)
if ('l' == r) {
if ('lt ==: 7) {
Listing 2.24
Instrukcja if wykorzystuj4ca zmienne typu boolean
1 const dayOfBrr]-hda.l: L4;
2 ccnst guess : prompt("Zgadnil dzieri moich urodzin");
3
63
t),
il
Rozdzial 2. I ElemenV:programowania na przyktadzie jezyka JavaScript
7 corr--ct = true;
8l
9
13 ]
14
Znak dodawania (+) w tej linijce to tak zwany jednoargumentowy plus (ang. unary plus),
realizu)Ecy zamianq typow W tym przypadku zmienna taficuchowa guess (trzeba pa-
miqtai, ze kazda warto6i wpisana VZez u)ytkownika jest ciEgiem znakow, czyli napi-
sem) zostaje zamieniona na liczbq, by mozna bylo por6wnac obie wartosci,
Zamiast tego mozna by bylo w tym miejscu uzyc operatora :=, ale warto poznawac
nowe funkcjonalnosci.
ar64
w konsoli inny napis, informuj4cy o nieudanej pr6bie.
Kod jest oczywi3cie dostgpny w przygotowanych materialach; wystarczy odpowiednio
zmieniC w pliku index.html odwolanie do skryptu.
Listing 2.25
Zadeklarowanie stalych
const shoesSize = 39;
const price = 23A;
Zapewnienie interakcji z u2ytkownikiem tak2e nie powinno przysporzyC problem6w
(listing 2.26).
Listing 2.26
Pobieranie danych
Listing 2.27
Zmienna logiczna canBuy bgdzie przyjmowa6 tylko warto36 prawda/fatsz (true/false)
ie1- cantsuy;
Teraz tworzymy warunek okreSlaj4cy, czy \^r sklepie dostqpne s4 buty w rozmiarze 39;
jeSli tak, to ustawiamy zmienn4 canBuy na true (listing 2.28):
Listing 2.28
Warunek dotycz4cy rozmiaru but6w
if (+answerslze ::: 39) {
uo!rDu y
Listing 2.29
Dodajemy drugi warunek do spelnienia
af (+answer$i 29 ::: 39 l& +answerPri.e <: 23C) {
cantsuy = arue;
doo
a
2.4. lnstrukcje warunkowe (conditionals)
Po modyfikacji zmienna canBuy przyjmie wartoS6 true tylko wtedy, kiedy zostan4
spelnione oba warunki rozmiar buta r6wny 39 i cena nie wigksza ni2 230 zl. Nie
-
potrzebujemy przecieL but6w za malych ari za du|ych, nie kupimy teZ but6w w odpo-
wiednim rozmiarze, jeSli nie bgdziemy mieli wrystarczai4co du2o pienigdzy
Przyklad 2.18
Standardowo tworzymy stale, do kt6rych przypiszemy wskazane przez r,as wartoSci
(listing 2.30):
Listing 2.30
Deklarowanie statych przechowui4cych informacig o kolorze
consr- preferreciColorWhite :'brale' ;
Listing 2.31
St ala sellerAnswer p rzechwytu j e odpowie d 2 tdzielon4 pr zez sp r ze daw cg
Listing 2.32
Zmienna przechowuj4ca stan decyzii
let' canBuyi
Rozdziai 2. I ElemenV programowania na przykladzie jQzyka JavaScript -
Zapis warunku bgdzie podobny do zapisu warunku logicznego AND. Zmieniamy tylko
operator logiczny; zamiast e e odpowiadaj4cego sp6jnikowi I wpisuiemy dwa pipeline'y
czyli I l. Znaki te odpowiadaj4 sp6lnikowi /zD (OR).
-
Listing 2.j3
Instrukcja warunkowa z operatorem OR
if (selferAnswer =:: preferredColorwhite
seLlerAnswe. ==: preferredColorBfack) {
canBuy : true;
]
Wynik takiego warunku bgdzie speiniony (instrukcja zwr6ci true), jeSli w sklepie znaid4
sig buty w kolorze biatym lub czarnym. Ocz).wiScie prawdg uzyskamy tak2e w przypadku,
kiedy jakaS parabgdziebiala, a inna czarna. Zmienna canBuy przyjmie wartoS6 f alse
tylko wtedy, gdy w sklepie nie bgd4 mieli but6w w zadnym z tych kolor6w.
Nastgpnie wy6wietlamy w konsoli odpowiedni4 informacjg,w zale|Lolci od wartoSci
zmiennej canBuy (listing 2.34):
Listing 2.j4
Wy6lvietlenie w konsoli jednego z alternat)-wnych komunikat6w
if (canBuy) {
UWAGA
Polecenie rf (canBuy) to skrocony zapis af (canBuy ::= true) .
C68
--T
2.5. Instrukcje sterujqce i pqtle
/l
V12.5. lnstrukcje sterujqce i peile
w Zyciu codziennym bardzo czgsto poslugujemy sig zdaniamizloLonymialbo powta-
rzamy czynnoSci. WlaSnie do obslugi takich przypadk6w w programowaniu potrzebne
nam s4 instrukcje steruj4ce.
- w zaleLno6ci
wania instrukcji steruj4cej od spelnienia jednego z wielu warunk6w
przenosi ona kod do odpowiedniego wiersza, kt6ry jest wykonywany Tak sig dzieje,
kiedy sprawdzamy rvynik uzyskany na sprawdzianie w celu ustalenia oceny
Przyklad2.l9
Podczas sprawdzianu molna uzyska6 maksymalnie 100 punkt6w. Aby dosta6 pi4tkg,
naleLy zdoby( powy2ej 90 punkt6w , czw6rka to wartos6 migdzy 80 a 90, tr6jka miqdzy
70 a 79, a dw6jkg dostajemy wtedy, gdy punkty mieszcz4 sig migdzy 60 a 69. oczy-
wiscie, jesli nie spelnili6my 2adnego ztychwymagai,to wtedy otrzymujemy jedynkg.
Nie bgdziemy inicjowa6 tej zmiennei, gdyLna pocz4tku nie wiemy jeszcze,jak4 oceng
otrzymal nasz u2ytkownik.
Teruz napiszmy podane w opisie warunki uzyskania poszczeg6lnych ocen. Aby tzyt-
kownik dostal pi4tkg, musi mie6 povryilej 90 punkt6w (listing 2.37).
Rozdzial 2. I Elementy programowanta na przykladzie jqzyka JavaScrlpt
Listing 2.37
Warunek uzyskania pi4tki
rf (score > 90) {
grade : 5,'
,}
Teraz czas na sprawdzenie, czy uzytkownikowi nie rlale|y siE czw6rka (listing 2.38).
Oczywi6cie bgdzie ono urykonywane tylko wtedy, kiedy bgdzie ju2 wiadomo,2e uzyskane
punkty nie pozwalal4 na otrzymanie oceny l:ardzo dobre j. Trxaj z pomoc4 przychodzi
nam instrukcja else if. Podobnie jak eIse, kt6rej ju2 uZywali6my, nie wystgpuje
ona nigdy sama, moze by6 jedynie uzupelnieniem wczeSniejszej instrukcji rf. Je2eli
wanrnek okreSlony w rf nie jest spelniony, else if informuj e,2e nalezy wejS6 do
kolejnego wamnku.
Listing 2.38
Warunek uzyskania czw6rki
if (score > 90) {
grade = 5;
] else if (score >: 80) {
grade : 4;
l
Listing 2.39
Pozostale warunki
grade = 5;
] else if (score >: 80) {
grade - 4;
] else if (score >= 70) {
grade : 3;
} else if (score >: 60) {
grade = 2;
,} else {
grade : 1;
)
dro
c
2.5. Instrukcje sterujqce i petle
zauwaZ,2e ci4g instrukcji rf ... else rf koriczy polecenie erse; zawiera ono
kod do wykonania w ostatecznoSci, jeSli 2aden z poprzednich warunk6w nie zostal
spelniony.
Na koicu wypiszmy uzyskan4 oceng w konsoli, wykorzystujac znane juznamiaflcuchy
szablonowe (listing 2.40).
Listing 2.40
Wypisanie oceny
ccnscle.log('Twc_ta ocena to 5{qraCe}') ;
71 {._))
i.).
Rozdzial 2. I Elementy programowania na przykiadzie jqzyka JavaScript
Listing 2.41
WySwietlenie w pgtli co pi4tej liczby z zakresu od 0 do 100
for (i:0; i<:100; r+=5) i
Pruyklad,2.2O
Aby to wyja6ni6 jeszczelepiej, przejdLmy do innego przykladu. Stw6rzmy tablica ulic obie-
gaj4cych budynek,zavtreraj4c4 ulice: Wita Stwosza, Ba2yriskiego, Grunwaldzk4 i Abrahama.
Tworzymy zmienn4 statyczn4 (gdy2 ulice wok6l budynk6w nie ulegn4 zmianie)
listing2.42.
-
Listing 2.42
Utworzenie tablicy ulic i przypisanie jej do stalej streets
const streets - [ttBazynskiego", "Grunwaldzka", "Abrahama", "Wita Stwosza"];
Teraz piszemy kod pqtli (listing 2.43).
Listing 2.4j
Pgtla for wy6wietlaj4ca jedn4 po drugiej ulice. przechow)'wane w statej streets
Przyklad2.2l
W programowaniu tablice dwuwyrniarowe mog4 sig przyda6 np. podczas zapisywariarcz-
grywki szachowej. Doskonale nadaj4sig tak2e do zaprogramowania quizu. Kaildy quiz ma
przecieLpytania i odpowiedzi. Mo2emy zatem utvvorzyc tablicg dwuwymiarow4zavneraj4cq
zar6wno pytania, jak i odpowiedzinanie Oto kod tworz4cy tak4 tablicg fiisting 2.44):
c72
o
2.5. Instrukcje sterujqce i petle
Listing 2.44
Deklaracja tablicy dwuwymiarowel
consl questicnAndAnswer = |
l'Gdziekoiwiekr,'Edwarci Stachura' l,
I
riiysDar /'Jcnasz Kofi,a' l,
| '2ycre' , 'Jan Twardowskir l
1;
TablicA dwuwymiarow4 deklarujemy jak zwyk+4 tablicg (za pomoc4 nawias6w kwa-
dratowych), jednak zamiast rozdzielonych przecinkami pojedynczych wartoSci (liczb,
napis6w itp.) tutaj mamy u,gte w nawiasy kwadratowe i rozdzielone przecinkami pary
warto6ci. W przypadku naszego quizu ka2d4 takE parg tworzy tytul utworu literackiego
i nazwisko iego autora.
':':':'::':'
,0
:r2
:,: .
rcr)
I
()
Rozdzial 2. I Elementy programowania na przykladzie jqzyka JavaScript
Teraz wykorzystamy zrrar.1 ju2 nam pgtlg for do wySwietlenia zawartoSci tablicy
que s tlonAndAnswer (listing 2.45):
Listing 2.45
Iteracja po dwuwymiarowej tablicy za pomocE pgtli for
// kod do wykonania
]
74
2.5. lnstrukcie steruiace i petle
Przyklad2.22
zal6zmy,2e chcemy sig dowiedzied, jaka jest wartos6 sumy kolejnych liczb od 1 do 10
zapisanych w tablicy
Listing 2.46
Obliczanie sumy liczb za pomoc4 pgtli for
L i^o 0;
2 let liczby : [1, 2, 3, 4, 5, 6, ,-, 8, 9, LA);
3 for (let i : 0; i < liczby.length; i-+) {
4 suma +: liczbylil;
5i
6 console.log (suna) ,.
Pqtlg for ... of mozna zastosowac tylko wtedy, kiedy chcemy przeprowadzic operacje
na kazdym elemencie obiektu iterowalnego GdybySmy chcieli w naszym poprzednim
przykladzie zsumowac tylko co drugq (2 4, 6, B, 10) lub co trzeciq (3 6, 9) liczbqztablicy
liczby, pgtla f or ... of w niczym by nam nie pomogia, Doskonale natomiast spraw-
dzilaby siq odpowiednio zaimplementowana pgtla f or Pokazuje to kod z listingu 2 48
Listing 2.48
Sumowanie co drugiego elementu tablicy za pomocE pgtli for
let suma = 0;
let liczby = 1L,2,3,4,5,6,7, B,9,1Al;
for (let t = 1; i < liczby.length; i +: 2) {
suma +- liczbvlil;
)
Przyklad2.23
Jak wcze6niej wspomniano, pgtli for ... of mozna uLywae na dowolnym obiekcie
iterowalnym, np. na ci4gu znak6w. Zal62my, ze chcielibySmy wySwietli6 u, nowym
wierszu kaLdy znak (wl4cznie ze spacjami) zdania,,Witaj w Swiecie programowania".
Umozliwi nam to kod z listingu2.49.
Listing 2.49
Pgtla for ... of umozliwia wypisanie kolejnych znak6u, dowolnego napisu
// kod do wykonanid
I
/o
,,:.:
2.5. lnstrukcje sterujqce i petle
Przyklad.2.24
Zal6zmy, ze chcemy napisa6 program odliczaj4cy w d61 od 10 do 0, na koflcu za6 wy-
swietlid komunikat ,,Koniec odliczania". Mo2emy do tego u2y6 kodu z listingu 2.50.
Listing 2.50
Odliczanie od 10 do 0
Let licz = 10;
whrle (Iicz >: 0) i
console.loq(Lrcz);
ttcz--;
]
Konieczne jest zadbanie o to, by w pewnym momencie warunek wykonania pgtli stal
siq falszywy W przeciwnym wypadku utworzymy tzw. pqtlq nieskonczonq ktora bq-
dzie siq wykonywac w nieskoriczonosc, chyba ze zostanie przerwana, np, poprzez
wymuszenie zamkniqcia programu,
Przyklad,2.25
zal6Lmy,2e w programie z listingu 2.50 zapomnielismy wpisa6 polecenie L].cz--,
kt6re pomniejsza w kaildei iteracji zmiennq 1icz, sprawiaj4c, Le po odliczeniu do 0
i kolejnym pomniejszeniu warunek staje sig falszyvnry: Kod wygl4dalby zatem tak, jak
pokazano na listingu 2.51.
UO
1
,,)
Bozdzial 2. I ElemenV programowania na przykladzie jezyka JavaScnpt
Listing 2.51
Pgtla nieskoiczona
iet licz:10;
whrle (Lrcz >: 0) i
console.log(Lrcz);
l
W takim przypadku wamnek nigdy nie zostalby sfalsyfikowany, pqtla wykonywalaby siq
wigc raz za razem) wySwietlaj4c kolejne dziesiEtki, a komunikatu ,,Koniec odliczania"
nie zob aczylibySmy nigdy
time.sleep(1)
print ( lrcz )
Licz -: 7
prinl- ( "Koniec odllczania" )
,78
2.5 lnstrukcje sterujqce i pqtle
while ( rarunek)
Pruyklad2.26
Na listingu 2.52 przedstawiono zmodyfikowany program do odliczania. Tym tazem
ma on wyswietla6 w pgtli komunikat ,pdliczam". Dla por6wnania w programie uzyto
zar6wno pgtli do ... whlle, jak i whr1e. w obu przypadkach wamnek pocz4tkowy
jest falszywy w obu pqtlach wpisano tak2e komunikat, kt6ry pomoze w identyfikacji
wykonanego kodu.
Listing 2.52
R6znica migdzl, do ... whiie i while
// pgtla while
while (licz <: g.
) {
.cnsole.:og (',Odliczam" );
Ltcz--:
I
7s {)
t,)
Rozdzial 2. I Elementy programowania na przykladzie jezyka JavaScript
Jak wida6, kod pEtli while nie zostal wykonany, poniewa2 najpierw interpreter spraw-
dzit warunek i po okreSleniu, 2e jest on falszywy, w og6le nie wchodzil do ciala pEtli.
Inaczel bylo w przypadku pqtli do ... whl1e, kt6ra wykonala sig raz, poniewai., jakto
zostalo wczeSniej wyja6nione, w tej pEtli kod wykonywany jest raz,fla samym pocz4tku,
dopiero po tym sprawdzany jest warunek, a kolejne wykonania poleceri uzaleznione
s4 od jego wartoSci.
a.-..|,
V12.6. Wprowadzenie do programowania
T--T I
obiektowego
W programowaniu da sig uyr62ni6 kilka tak zwanych paradygmat6w, czyli sposob6w
organizacji i tworzenia kodu. Do szczeg6lnie czgsto stosowanych nalez4l.
. programowanie proceduralne,
o programowanie strukturalne,
o programowanie funkryjne,
. programowanieobiektowe
Wszystkie te paradygm aty mog4 by6 stosowa ne lqcznie.
Zgodnie z parudygmatem proceduralnym nalezy dzieliC kod na procedury fragmenty
wykonuj4ce SciSle okreSlone operacje
-
Wedlug zalozei programowania strukturalnego kod powinien byd organizowany
w hierarchicznie ulo2one bloki, z jednym punktem wejScia i jednym lub wieloma punk-
tami wyjScia iak jest np. w przypadku bloku instrukcji lf ... ef se if ... else.
-
W programowaniu funkcylnym kladzie siq nacisk na funkcje rozumiane na wz6r
funkcji matematycznych
- ka2da taka funkcja dla danych warto6ci argument6w zwraca
zawsze tg sam4 wartoS6, np.2+2 zawsze bgdzie r6wne 4,bez wzglEdu na jakiekolwiek
warunki wstEpne.
Ogromne mo2liwo6ci daje stosowane dzi6 niemal powszechnie programowanie obiek-
towe, oparte na obiektach bgd4cych abstrakcyjnym odwzorowaniem element6w Swiata
rzeczywistego. KaLdarzeczmoLe by6 opisana jak klasa, bgd4ca swoistym schematem czy
,,przepisem" na przedmiot, kt6ry mabyeutworzony na jej podstawie Klasa to po prostu
byt z wlaSciwoSciami i zachowaniami (dzialaniami), coS, o czym mo2emy powiedzieC,
jak wygl4da oraz jak siq zachowrrje Na podstawie tego schematu molna tworzy6 wiele
konkretnych obiekt,6w, kt6re mog4 62nie siE konkretn4 wtaSciwoSci4, jednak kaLdy
musi posiada6 wszystkie wlaSciwo6ci zawarte w definicji klasy. Samoch6d mo2e np.
mie6 silnik benzynowy albo na olej napEdowy, ale nie mo2e nie miee silnika. Zwierug
w schronisku mo2e by6 psem albo kotem, ale musi by6 jakimS rodzajemzwierugcia.
alB0
0
2.6. Wprowadzenie do programowania obiektowego
KaLdaklasa moze mie6 ponadto, jak juz wspomniano, zdefiniowane pewne zachowania
lub czynnoSci. Pies szczeka, kot miauczy, papuga lata. O ile trzecie dzialanie nie ma nic
wsp6lnego z pierwszymi dwoma, to szczekanie i miauczenie mog4 by6 opisane iako
r62ne rodzaje (zalezne od konkretnego egzemplarza klasy zwierug) iednej czynnoSci:
wydawania glosu.
Po utworzeniu konkretnego obiektu na podstawie jego definicji moLna odwotywa6 sig
do kaZdei z jego wla6ciwoSci czy dowolnego zachowania wlaSnie poprzez ten obiekt.
Przyklad.2.27
Spr6bujmy opisa6 obiektowo telefon kom6rkowy
Najpierw tworzymy pust4 definicjg klasy (listing 2.53).
Listing 2.53
Pocz4tek tworzenia pustej definicii klasy Phone
ciass Phone I
Listing 2.54
Dodanie wla6ciwo6ci do klasy
class Phone {
brand - "Samsung";
color = 'black';
]
81
'
i'
d,:*'!:
Rozdzial 2. I Elementy programowania na przykladzie jqzyka JavaScript
Listing 2.55
Dodanie kolejnych wlasnoSci klasy
class Phone {
brand : ',Samsung";
coior = 'black';
prrce = 723.21;
usbC : f alse,'
w wielu przypadkach naipierw definiuje sig szkielet klasy, nie podaj4c konkretnych
wtaSciwoSci (takich jak samsung czyblack z powylszego listingu). Wla6ciwo6ci te
mog4 zosta6 okreSlone poiniej, podczas tworzenia obiektu. W tym przypadku ustawili-
6my Samsung i black jako warto6ci domySlne. Oczywi6cie podczas tworzenia nowych
obiekt6w wlasnoSci te mog4 by6 modyfikowane.
Je6li chcemy wypisa6 obecn4 warto6d klasy (lub odwola6 siq do niej w dowolny inny
spos6b), najpierw musimy zainicjowa6 zmiennq nowo utworzonym obiektem typu
Phone. zmienn4 obiektow4 inicjujemy, wpisujqc jej nazwg, znak r6wnosci, a po nim
slowo kluczowe new i nazwg klasy, kt6rej instancjg chcemy utworzy6.
W celu uzyskania wlaSciwo6ci obiektu, kt6ry jest przypisany do zmiennej phone, naleLy
wpisa6 nazwg zmiennej, a po niej, oddzielon4 kropk4, nazwg wlasnosci (listing 2.55).
Listing 2.56
Wypisanie wartoSci wlasnoSci obiektu
va-r&b,lc5-i r r,q
:l82
2.6. Wprowadzenie do programowania obiektowego
Wiele funkcli, by vrykonae jakqS czynno56, musi pobra6 parametr (ieden lub wiele).
Telefon nie wySle np. wiadomoSci, jeSli nie napiszemy jej tre6ci i nie okre6limy odbior-
cy Pobierzmy zatem tre56 SMS-a (zal62my,2e odbiorca iest ju2 zdefiniowany), prosz4c
u2ytkownika o jei podanie
Na pocz4tku skupmy sig na napisaniu metody sendSms (definiujemy i4wewn4trz
definicji obiektu).
Oto przykladowa, pusta funkcja (listing 2.57):
Listing 2.57
Pusta funkcja
funclion ( ) {
Co ,,robi" tak zdefiniowana funkcia? Nic Nie ma ciala (to czES6 wpisywana pomiq-
dzy rrawiasami klamrowymi), kt6re okreSlaloby wykonywane w niej czynnoSci. Nie
ma nawet nazry, dzigki kt6rej mogliby6my j4 wywota6. W tei chwili nie iest zatem
specjalnie przydatna.
Metodg dodajemy do klasy tak samo jak wla6ciwoS6, co pokazano na listingu 2.58.
Listing 2.58
Dodanie do obiektu definicii metody
class Phone {
brand = "Samsung";
colcr = 'black';
price = I23.2L;
usbC = false;
sendsms : function(text) {
OczywiScie ta metoda, cho6 ma juLnazwg (sendSms), takze nie robi nic. Krok po
kroku temu zaradzimy. Teraz dodamy do niej kod, kt6ry przypisze parametr text do
wlasciwoSci sms (listing 2.59).
Listing 2.59
Przekazanie parametm do funkcii
1 class Phone {
2 brand : "Samsung";
3 color : 'black';
Rozdzial 2. I prog ramowani a na przykl adzie JavaScript
4 price = 123.21;
5 usbc : false;
6 sendSms = function(text) l.
Listing 2.61
Klasa z uzupelnion4 metod4 sendSms i dodanym atrybutem user
class Phone {
brand : "Samsung',;
coLor = 'black';
price : 123.21;
')84
C
2.7. Kolekcje
usbC : false;
user = "Marcin";
sendsms : function (text) {
this.sms : this.user + " wyslat sms: " + text;
i
Ten podrozdzial nie lest prosty. Jego zrozumienie wymaga sporego skupienia i doklad-
nego przemy6lenia jego treSci. Najlepiej przeczylac go co najmniej dwa razy,
,/-\-
v 2.7. Kolekcje
Po zglqbieniu tematu tablic oraz programowania obiektowego warto zaznajomi( sig
z kolekcjami. Mo2na powiedzie( kolekcja to,,opakowana" w funkcjonalne metody
2e
tablica. Moze natomiast mie6 wlasne metody, poniewa2 w rzeczywisto6ci jest obiektem.
2.7.1. Set
Set to zbi6r element6w niepoukladanych. Jest bardzo podobny do tablicy, jednak2e
wszystkie jego elementy s4 unikatowe (nie mog4 siq powt6rzyt), co czgsto bardzo sig
przydaje. Pr6ba dodania do setu elementu, kt6ry jest ju2 w nim zawarq\ nie spowoduje
btgdu. Po prostu nowy element nie zostanie dodany, jeSli mialby zdublowa6 ju2 istniej4cy
Listing 2.62
Deklaracja kolekcji typu Set
Listing 2.6j
Dodawanie element6w do zbioru
clothes. add ( I sweter' ) ;
cLothes.add(' jeans' );
Teraz czas pokaza6 potggg kolekcji. w celu sprawdzenia , czy dany element wystgpuje
w tablicy, trzeba przeiterowa6 po niej (przej6(. po wszystkich lei elementach). W kolek-
cjach oczywiScie dzieje siq to samo. Niemniej w przypadku tablic musimy sami pisa6
implementacjg iteracji (np. z wykorzystaniem pgtli f or), tym razem zas molemy uLyt
gotowej metody has, kt6ra zwraca wartoS6 true, jeSli szukany element znajduje siE
w kolekcji, f alse w przeciwnym wypadku . Zatem wywolanie zlistingu 2.64:
Listing 2.64
Sprawdzenie, czy zbi6r zawiera okre6lony element
Listing 2.65
Usuwanie elementu zbioru
Listing 2.66
Pobranie informacji o wielko6ci zbioru
clothes .stze; // z
To oczywiscie tylko przyklady metod zwi4zanych z typem Ser. Aby zapozna( sig z in-
nymi, warto zajrzee do oficjalnej dokumentacji tego typu.
a )86
----7:-
2.7. Kolekcje
2.7.2. List
Innym rodzajem kolekcji, ale tLywanym wtedy, gdy zalezy nam na tym, by elementy
mogty sig powtarza6, jest lista.
Lista to poukladana kolekcja tworzona w ten spos6b, 2e do elementu pocz4tkowego
mo2na siq odnie56, dodaj4c kolejny element.
W przeciwieristwie do zbioru, w jgzykuJavaScript nie ma wbudowanego typu dla tego
rcdzaju kolekcji. Lista jest dostgpna jako czqS6 wielu zewngtrznych bibliotek.
Pruyklad2.28
Dzialanie listy najpro6ciej sobie wyobrazi( na przykladzie poci4gu z wagonami. Na
pocz4tku jest lokomotywa, po niej 4 wagony Gdy chcemy doda6 wagon restauraryjny
pomigdzy wagonami 2. i3.,to naleLy odpi4e wagon 2. od3., nastEpnie dopi46 wagon
restauraryjny do wagonu 2., apotem do 3. Miejsce dopinania nazywane jest wgzlem.
W przypadku gdy chcemy usun46 jakiS wagon, procedura jest analogiczna. MoLemy
przejS( po wszystkich elementach kolekcji z v',rykorzystaniem wiedzy o zale2noSciach
migdzy wagonami (wiemy, kt6ry wagon jest po wagonie 1. i 2e wagon 1. jest doczepiony
do lokomotywy).
Skoro potrzebujemy ai tyht operacji, to do czego jest nam potrzebna lista?
Czgsto chcemy mie6 kontrolg nad tym, gdzie dokladnie wstawiamy nowy element
dodanie go na koflcu tabliry czy zbiorunas nie zadowaTa. WlaSnie w takich przypadkach
-
nieoceniona jest lista, pozwalaj4ca umieszczaC nowe elementy w wybranym mieiscu
kolekcji na podstawie indeks6w element6w.
Podstawowe kolekcje zostaty przez fias om6wione, jednak2e w przypadku bardziei
zloilonych problem6w warto zaznajomie sig z pozostatymi, np. map4 (uap).
Listing 2.67
Wykorzystanie obiektu iterator do iterowania po tablicy
consl bfocks : ["Lego',r "Cobi,'];
const iterator : blocks ISymbol. iterator] O;
87 i:
{J
Rozdzial 2. I Elementy programowania na przykladzie jqzyka JavaScript
Zadanie 2.1
Utw6rzwlasn4listg zakup6w zawieraj4c4 ceny produkt6w potrzebnych do ugotowania
obiadu. Niech w koszyku zakupowym zrajd4sig warzy-wa oraz miqso. Po dodaniu kilku
produkt6w oblicz ich ceng uwzglgdniaj4c4 podatek.
Zadanie 2.2
Policz l4czny wzrost czlonk6w Twojej najblilszej rodziny Utw6rz tyle zmiennych, ilu
masz najbliilszy ch, p r zy pisz do zmi ennych wzro st p oszczeg6lnych o s 6b w centym etrach.
Na koniec zsumuj wartoSci przypisane do zmiennych.
Zadanie 2.3
Zdeklaruj zrr;rienn4 piosenka i przypisz do niej tekst zwrotki ulubionej piosenki,
a nastEpnie wy6wietl go za pomoc4 tej zmiennej w konsoli.
Zadanie 2.4
Zdeklaruj kilka zmiennych, pr zypisz do nich tylko po j edyncze wersy piosenki z p oprzed-
niego zadania, a nastEpnieprzy :u|yciu tych zmiennych rvy6wietl w konsoli cal4 piosenkg
Zadanie 2.5
Napisz aplikacjg, w kt6rej pobierzesz od u2ytkownika jego imiq oraz informacjg o jego
ulubionym kolorze. Nastgpnie wySwietl w konsoli komunikat: ,plubiony kolor u2yt-
kownika (...) to (...)".W miejscu wielokropk6w powinny zostae wySwietlone wpro-
wadzone wczeSniej dane.
(-JBB
i:)
2.8. Zadania
Zadanie 2.6
Napisz aplikacjg, w kt6rej u2ytkownik poda kwotg brutto, a w konsoli zwr6cona zo-
stanie kwota netto.
Zadanie 2.7
Uw6rz tablicE z popularnymi markami obuwia i wypisz rozmiar tej tablicy oraz jej
przedostatni element.
Zadanie 2.8
Utw6rz kolekcjg marek laptop6w zawieraj4c4wigcej niz szel(. marek, po czym wypisz
elementy drugi i czwafiy.
Zadanie 2.9
PoproS u2ytkownika o wpisanie dowolnej liczby parzystei.JeSli wpisze on liczbq niepa-
rzy st4, wy5wietl alefi z komunikatem :,)Mpisan a liczba j est nieparzysta".
Zadanie 2.1O
U2ytkownik proszony jest o wskazanie numeru budynku na ulicy Kolskiej. Z bazy
pocztowej wiemy, 2e na ulicy Kolskiej znajdui4 siq budynki wyl4cznie z numerami
pomigdzy 10 a 15. Aplikacja powinna wySwietli6 alert w przypadku podania numeru
budynku spoza tego zakresu.
Zadanie 2.11
Utw6rz tablicg zawteraj4c4nazry produkt6w. U2ytkownik powinien m6c wpisad numer
i uzyska6 informacjE o produkcie zapisanymw tablicy pod indeksem odpowiadaj4cym
wpisanemu numerowi. Je6li poda numer wykraczaj4cy pozazakres tablicy, to powinien
zostae wySwietlony odpowiedni komunikat.
Zadanie 2.12
Wszyscy znamy kolejno66 planet w Ukiadzie Stonecznym. Napisz aplikacjq, kt6ra po
wpisaniu przez tLytkownika numeru planety r,vySwietli jej nazwg. JeSli u2ytkownik
wpisze liczbg wiEksz4ni? B, powinien uySwietli6 siE alert zinformacj4,2e Uklad Slo-
neczny ma tylko 8 planet.
Zadanie 2.13
W ogrodzie botanicznym jest cennik bilet6w:
o normalny-3zl
o ulgowy 1.,5 zl
-
Napisz aplikacjq, w kt6rej u2ytkownik podale liczbE bilet6w normalnych orazulgor,tych,
po czym uzyskuje informacjg o kwocie do zaplaty.
Rozdzial 2. I ElemenV programowania na przyktadzte jezyka JavaScript
Zadanie 2.14
Zat62my,2e dziehrczpoczyta sig wschodem sloirca o 6, a koflczy zachodem o 21. Napisz
aplikacjq, kt6ra po wpisaniu przez uLytkownika pelnej godziny wySwietli informacig
o porze dnia. Przyjmijmy,2e ranek tnva do 11, godzina 12 to poludnie, od 13 do 18
mamy popoludnie, od 18 do 27 wiecz6r, a migdzy godzinami 27 i 6 noc.
Zadanie 2.15
Stw6rz prost4 aplikacjg pogodow4, kt6ra, w zale2noici od wySwietlonych ponizej wa-
runk6w, bgdzie wy6wietlata odpowiadaj4ce im komunikaty:
. Warrnek: ,,Jest slonecznie i pochmurnie"; komunikat: ,,Idg pobiega6".
o Wamnek: ,,Jest slonecznie i powy2ej 25 stopni"; komunikat: ,,Idg sig opala6".
o Warunek: ,,Pada"; komunikat: ,,Zostajg w domu i czytam ksi4zkg".
Zadanie 2.16
Napisz aplikacjg typu quiz. Opracuj trzy pytania i odpowiedzi na nie. Pytania powinny
wy6wietla6 sig kolejno u2ytkownikowi, a on powinien wprowadza6 odpowiedzi. Na
kofrcu, zaleLnie od liczby trafiefl, powinien otrzyma( informacjg o uzyskanej randze:
o Czarnoksig2nik gdy odpowiedzial na wszystkie pytania;
-
o Mistrz gdy odpowiedzial na dwa pytania;
-
o Adept gdy odpowiedzial na jedno pytanie.
-
Zadanie 2.17
W sklepie zoologicznym sprzedawca potrzebuje programu, kt6ry poda klientowi, ile
karmy nalezy odmierzy6 dla kota na podstawie jego wagi, zgodnie z przelicznikiem
podanym na opakowaniu.
cat(kg) t 2 3 4 5 6
Napisz taki kalkulator, kt6ry obliczy potrzebnq ilo66 karmy oraz wySwietli odpowiedni4
informacjE w konsoli.
Zadanie 2.18
Napisz kalkulator do obliczenia, czy z g6ry znane wagi kilku element6w nieprzekraczaj4
wskazane j przez u|ytkownika ladownoSci cigzar6wki.
Zadanie 219
Stw6rz quiz (podobny do tego z zadania 2.76) przy uzyciu tablicy dwuwymiarowej.
Quiz ma zawierae 10 pytafl z odpowiedziami. Po udzieleniu odpowiedzi u2ytkownik
powinien uzyska6 informacjg rankingow4:
2.8. Zadania
Zadanie 2.21
U2yj pgtli f or do zsumowania co trzeciego elementu tablicy liczby = 17, 2, 3,
4, 5, 6,'7, 8, 9, 10].
Zadanie 2.22
Stw6rz aplikacjE, kt6ra pozwoli uzupelni6 dane klienta (znamy ju2 imig i nazwisko)
o wiek i ple6.
Zadanie 2.23
Napisz aplikacjg do obsiugi stoiska warz)'wnego, dziEki kt6rej wlaSciciel podaje infor-
macje o cenach swoich towar6w (zal6Lmy,2e znamy juL nazwE firmy).
Zadanie 2.24
Utw6rz klasg opisuj4c4 windE w bloku. Utw6rz parametry okre6laj4ce, ile os6b mo2e
wejS6 do windy oraz jei wymiary Dodaj metodg do wskazania, na kt6re pigtro winda
ma wjecha6 (u2ytkownik podaje numer pigtra).
Zadanie 2.25
Stw6rz aplikacjg wySwietlaj4c4 informacje na temat Lublina: liczbg mieszkaic6w,
wsp6lrzgdne geograficzne otaz powierzchnig. Wykorzystaj konstrukcjE laricuch6w
szablonowych.
Rozdziai 2. I ElemenV programor,tanra na przykladzie jqzyka JavaScript
r :OO
"*-tt-
Sama umie;'gtno56 poprawnego napisania kodu podczas tworzenia aplikacji nie jest
Wstarczai4ca. Dzisiaj wymagane jest, by programy byty wydajne, testowalne i proste
w utrzymaniu.
Projektowanie aplikacji to proces, kt6ry na o96l trwa wiele miesiEcy i kt6rego celem jest
uproszczenie pracy wszystkich czlonk6w zespolu. Dobrze zaprojektowana aplikacja to
taka, kt6ra jest latwa w Lttrzymaniu i rozbudowie.
Rozwijanie aplikacji od strony wizualnej jest bardzo waLne, ale w tym rozdziale skr6-
towo om6wiony zostanie spos6b wykonania wydajnej i prostej w utrzymaniu aplikacji
w kontekScie programisty.
Rozdziat 3. I Pr:ojektbwanie aplikacji
/-l
[l3-1. Dobre praktyki zwiqzane
z programowan iem obiektowym
walne jest, by kod byl iaknajbardziej sp6jny. Spelnienie tego urymogu ulatwia uyko-
rzystywanie wspomnianych w poprzednim rozdziale obiekt6w wraz z jego metodami
oraz funkcji.
Dla przypomnienia: funkcje s4 to luzne, wydzielone instrukcje zamknigte w ramach
bloku. Dzigki temu ten sam ci4g instrukcji moLebyt wykonany wielokrotnie,bez
potrzeby powielania (kopiowania) tego samego kodu. Metody, podobnie jak funkcje,
s4 to wydzielone kawalki kodu opakowanego w blok, jednak umieszczone w ramach
danej klasy Pomaga to w powiEzaniu danego zestawu wlaSciwoSci klasy oraz operacji,
jakie taka klasa mo2e wykona6.
Poni2ej zaprezentowane zostanie u|ycie funkcji (przyklady 3.1i3.2) oraz metod (przy-
ktad 3.3).
Przyklad 3.1
Na listingu 3.1 zdefiniowali6my funkcjE maximum, kt6ra przyjmuje jako argument
tablicg liczb i zwraca najwiEkszy spoSr6d jej element6w. Najpierw zadeklarowaliSmy
zmienne tablicowe, na kt6rych bgdzie dziala( metoda. Nastgpnie podaliSmy definicjg
metody. Jej wy,wolanie powinno wyst4pi6 na koricu.
Listing 3.1
Definicja i wywolanie metody do wyznaczenia najwigkszego elementu tablicy
// de kl aracj a zm ie nny ch ta bl ic owych
t' 94
l.)
3.1 Dobre prakVk zwiAzane z programowaniem obiektowym
return nax;
I
Listing 3.2
Wynik wywolania metody mozna przypisa6 do zmiennej
// wywolanie metody mdrim.um na tablicy numbers
const saore : maximum(numbers);
console.log (score) ;
Przyklad.3.2
Przeprowad2my teraz sumowanie maksymalnych element6w pobranych z dw6ch tablic,
przy zalo2eniu,2e jedna tablica sklada sigzliczb catkowitych, a druga ze zmiennoprze-
cinkow-vch (listing 3.3).
Listing 3.3
Sumowanie najwigkszych element6w tablic
iunclion sumofMaxEromArrays(arlay, ar.ray2) {
q6
Rozdzial 3. I Projektowanie aplikacji
Przyklad 3.3
Utw6rzmy uproszczonA klasE odwzorowuj4c4 pok6j z jego wybranymi wtaSciwoSciami
(dlugoSci4 i szerokoSci{, w6r6d kt6rych wymienione zostan4 tak2e niekt6re znajdn-
j4ce siE w nim elementy (w naszym przykladzie okre6limy, czy w pokoju znajduje siq
biurko). Zdeflniujemy tak2e dla obiektu metodE, kt6ra wySwietli informacje o pokoju
(listing 3.4).
Listing 3.4
Przykladowa implementacja klasy Room
class Room {
- 2AO;
vrtdt-ln
lenqth = 220;
desk = fafse;
space:function O {
return this . width * this . length;
}
display:function O {
console.log('szerokoS6 ${this.width}, d}ugo56 ${this.Length},
powierzchnia ${this.space O }, czy ma biurko ${1-his.desk}') ;
]
Poprzez slowo kluczowe this mozemy odwolai siq zar6wno do wia6ciwosci obiektu,
jak i metody w nim utworzonej.
' I
ion
tli
3.2. Clean code, czylr czysty kod
Gtownq zasadq dla wigkszo6ci jest zasada KISS (akronim od ang. Keep tt Simpte,
Sfupid nie komplikuj, giupcze), mowiqca o tym, w jaki sposob Iworzyc kod, tak zeby
-
nawet osoba postronna byla w stanie zrozumiec go w maksymalnie okreSlonym skonczo-
nym czasie, najlepiej na podstawie samego kodu, bez potrzeby czylaniadokumentacji
i zawartych w komentarzach opis6w, Utatwiajq to dobrze nazwane zmienne i metody,
jak rowniez utrzymywanie porzqdku w kodzie.
Uzupetnieniem KISS jest zasada DRY (akronim od ang Don't Repeat yourself nie
powtarzaj sig) mowiqca o tym, ze kod praktycznie nigdy nie powinien byc powielany -
Dlaczego? w sytuacji, gdy ten sam kod zostanie powielony dziesiqc razy w kilkunastu
plikach po czym okaze siq, 2ezawieraon blgdy, nalezy odnalezc i poprawic wszystkie te
miejsca, w ktorych wystqpil. Sprawia to, ze szybkosc z arzqdzania kodem (jego modyf ikacji
czy poprawiania) jest odwrotnie proporcjonalna do szybkosci z jakq zostalwytworzony.
Jak nalproSciej uzyskac zgodnosc z DRY? Nalwygodniej jest wydzielac logikg progra-
mu (zadania, jakie ma wykonywac) do odpowiednich funkcji, ktore de{iniu)emy raz,
ale mozemy ich uzywac w wielu miejscach. Warto tez dbac o to by nie byly one zbyt
dlugie. Przylmuje siq, ze ledna funkcja to tyle kodu, ile jestesmy w stanie zobaczyc na
polowie ekranu.
W tym miejscu nale2y wspomniec o YAGNI (akronim od ang, You Aren't Gonna Need
/t nie bqdziesz tego potrzebowal), Ta zasada nakazuje, by pisac tylko wymagane ptzez
-
klienta funkcjonalnoSci, co oznacza,2e nie naleiy tworzyc zbqdnego kodu.
Zanim upowszechnila siq filozofia KISS mozna byto spotkac tak nazywane zmienne
(listing 3 5):
Listing 3.5
Przyklad Zle dobranych nazw dla zmiennych
1 let_:3;
I r ^r
' .eL = a;
-
Rozdziai 3. I Projektowanie aplikac.ii
4 let 6;
5
-=
5 function number ( ) {
7 if ( === _) {
I console.log("Por5wnanie liczb 3 i 4");
9l
I0 [ r ) r
13 ]
14 numberO;
O ile porownanre liczb w linijce 7. lest jeszcze doSc proste do zrozumienia, o tyle linijka 10
jest juz bardzo maio czytelna, w gruncie rzeczy nie wiadomo, ktore liczby porownujemy,
trzeba siq skupii, by to poprawnie zinterpretowac, A sytuacja zracznie by siq pogor-
szyla, gdyby zmienne zostaly utworzone nieco dalej od miejsca, w ktorym ich uzywamy,
/l
l;7B.3.
T --r-
Dokumentowanie kodu
Jeden z najpopularniejszych sposob6w dokumentowania kodu w przypadku
jgzyka
JavaScript wi42e sig zurLyciem formatu JSDoc. NarzEdzia do pracy z nim s4 dostgpne
w WebStorm od raztt, wigc nie trzeba niczego instalowa6.
-,98
i
!l
C
3.3. Dokumentowanie kodu
Przyklad3.4
Utworzono (z zachowaniem zasad czystego kodu, np. z dbalosci4 o odpowiednie na-
zwy) plik sum.js, kt6ry zawiera kod funkcji sumuj4cej dwa elementy. oto podstawowa
implementacja tej metody:
function sum(first, second)
JeSli w wy,wolaniu tej metody:
consol-e . 1og ( sum (2 , 3) )
postawimy kursor przy slowie sum i wci6niemy klawisz F1 (lub skr6t klawiszowy
Ctrl+Q), w tym przypadku odpowiedzialny za uzyskanie informacji z dokumentacji
tej metody, zobaczymy jedynie definicjg funkcji, bez jakiejkolwiek dodatkowej podpo-
wiedzi, jak pokazano na rysunku 3.1.
I ;l:: sum is
-
r' consote.log(sum(2,3))
to*$.1*, 1rg (
message?: any.
., .opti.onalParams: any[]): void
The tersale nethod logO outputs a
message lo the web console.
By Mrziiit aoniribrtrfs ;,, lC ;Y-$A ?.5.,
llr; built-in, dom
:.Jr:(\,'.. .ij{::-
"\ {llro.,
cn Cerelcper.mrziili.at!,.
ee r)
----(r
Rozdzial 3. I Projektowanie aplikacjt
Listing 3.6
Tworzenie dokumentacii funkcii sum
/^ ^
,-*r-100
-
3.4. AtgoMmy
101
r*,
3.4.2.1. Zasada ,dziel i zwyciq2aj"
NajczEsciej wykorzystywan4 metod4 projektowania algorytm6w iest zasada ,dziel
i zwycigLai". Zgodnie z iej nazw4 pierwsz4 rzecz4, iak4 trzeba zrobie, iest podzielenie
problemu na mniejsze, por6wnywalne pod wzglgdem skomplikowania, czE6ci
za ich pomoc4 zostanie najpierw przedstawione rczwi4zanie. Dopiero na koticowym
- to
etapie nastqpuje scalenie tych matych krok6w w jeden, gotowy algorytm.
Dlaczego ta zasada jest najbardziej popularna? Dlatego 2e algorytmy zbudowane z iei
uzyciem czgsto ma j 4 na j mn ieisz4 zlo2oroS6 obliczeniow4.
Zasada ta zostanie wykorzystana w sortowaniu i wyszukiwaniu element6w.
W tym przypadkts.nie ma dobrej odpowiedzi na pytanie o to, kiedy lista iest komplet-
na. Dlaczego? Dlatego 2e niemal zawsze, kiedy ktoS inny spojrzy na tg listg, podpowie
krok, kt6ry pomingliSmy.
Przyklad 3.5
Oto przykladowa lista krok6w procesu maj4cego na celu wyci4gniEcie mleka z lod6wki:
1, Rozpocznij proces.
2. Zlokalizttj 1od6wk9.
3. Otw6rz lod6wkE.
4. Wyci4gnij mleko.
5. Zamknii lod6wkE.
6. Postaw mleko na stole.
7. Zakohczproces.
3.4.2.3. Pseudokod
Rozwi4zanie problemu znalezieniamleka (atakLe dowolnego problemu programistycz-
nego) mozna r6wnie2 przedstawi6 zapomoc1konstrukcii poSredniej pomiqdzy jgzykiem
naturalnym a kodem komputerowym. Tak opisan4 strukturg nazryamy pseudokodem.
Przyklad.3.6
Oto przyklad pseudokodu ilustruj4cego rozwi4zanie problemu wyjmowania mleka
z lod6wki.
l-raa i n
znaldzLodowke ()
otworzLodowke ()
-r
r-l 1 02
3.4. Algorytmy
wyclagnijMleko ( )
zamknij Lodowke ( )
postawMleko ( )
end
Przyklad,3.7
Proces zrtalezienia mleka moLnar6wnieL przedstawi6 zapomoc1drzewa deryzyjnego
(rysunek 3.4).
Jak jfi
wspomniano, drzewko jest odwrotnoSci4rzeczywistego drzewa, czyli na samej
g6rze jest korzen, od kt6rego przechodzimy wzdluL galEziprzez kolejne decyzje.
103r)
Foz.lzial3 r Prolektowane ap kacli
DEFII{ICJA
Schemat blokowy to graficzne pzedstawien e sekwencji czynnosc , zazwyczaiuwzg qd-
n ajqce war anty, ktorych wykonanie jest uzalezn one od speln en a ro2norakch warunk6w
Pzyklad 3.8
Oto sekwencja czynnosci koniecznychdo wyci4gni€cia mleka z lod6wki zaprezentowana
za pomocE schematu blokowego (rysunek 3.5).
104
3.4. Algorytmy
Na rysunku 3.5 posluzono siQ symbolami ktorych znaczenie wyla6niono w tabeli 3.2
Tabela 3.2. Znaczenie symboli uzytych w schemacie blokowym
Symbol Znaczenie
r-
(np. wySwietlenie informacji)
Blok wejScia
- miejsce, w kt6rym u2ytkownik musi poda6
jak45 informacjg
Jak wida6, schemat blokowy r62ni siE od listy krok6w, gdyZ jest od niego znacznie czy-
telniejszy dla klienta, kt6ry mo2e mie6 problemy zezrozumietiem algorytmu zapisanego
za pomoc4listy krok6w Dodatkouym plusem takiego zapisu jest to, Le w lary spos6b
moLna zobaczyC caly przeptytv algorytmu i dzigki temu uylapa6 potencjalne blgdy
W projekcie w rczdziale 7. vtykorzystamy schemat blokowy do opisania algorytmu.
,oq]i-)
Rozdzial 3. I Projektowanie aplikacji
Przyklad 3.9
W celu rozjaSnienia tematu odwolajmy sig do kolejnego przykladt. Wykorzystuj4c
wiedzE z poprzedniego rczdzialu, napiszmy kod zliczai4cy sumg element6w w tablicy.
Nastgpnie spr6bujemy poLiczy{ ile operacji jest wykonywanych podczas liczenia sumy
(listing 3.7).
Listing 3.7
Kod zliczaj4cy sumg element6w tablicy
1 function sumElements (arr) {
2 1et sum : 0;
3 for (1et i:0;1 ( arr.length;1 += 1) {
4 sum +: arrli];
5 )
6 return sum;
'1 \
Znasz juL (zrozdzialt 2.) spos6b tworzenia funkcji, wigc ten kod powinien by6 znajomy.
Niemniej przeanalizttjmy jego kolejne wiersze. Ich zestawienie zawarto w tabeli 3.3.
Dla ka2dej linii podano tak2e liczbq wykony.wanych operacji.
Tabela 3.3. Analiza wierszy kodu funkcji sum
Zwracamy sumg. 1
*ou
3.4. Algorytmy
3.4.3. Rekurencja
W celu zrozumieniaistoty algorytm6w najpierw trzeba zrozumieC,czym jest rekurencja.
Od czasu do czasu spotykamy sig ze sformulowaniami typu: ,,Bgdg gral w tg grg tak
dtugo, aL zdobgdg wszystkie trofea". M6wi4cy to ma na mySli, Lebgdzie wykonywal
caly czas tg sam4 czynno66, a2 do spelnienia pewnego warunku.
Przyklad 3.10
Codziennie wstajesz rano do szkoty. Nastawiasz budzik, kt6rego oprogramowanie za-
wiera funkcjg drzemki. Kiedy drzemka zostaje w,.wolana izakoficzona, wl,woluje alarm
budzenia na kolejny dziefi rzecz jasna, tak2e moZe w),wota6 funkcjg drzemki.
-kt6ry,
Przyklad 3.11
Niekt6re wie2e audio maj4 w sobie zmieniarkg ptyt CD. Mozna w nich zmieni6losowo
plytg i po odtworzeniu z niej losowej piosenki nastgpuje kolejne losowe wybranie ptyty.
Odtwarzanie zostanie zakoficzone, gdy skofrcz4 sig wszystkie piosenki na wszystkich
ptytach.
Rekurencja poSrednia najczgSciej znajd$e zastosowanie w matematyce. W dalszej czE6ci
tego podrozdzialu skupimy sig na rekurencji bezpoSredniej.
Ptzyklad3.l2
Spr6bujemy wyjaSnid rekurencjg bezpoSredniqta dobrze znaflym przykladzie Wzfia-
czania najwigkszego wsp6lnego dzielnika (NWD).
107i-
' i i-'
Rozdzial 3. I Projektowanie aplikacji
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
Ci]0B
L)
3.4.4.1. Sortowanie metodq bqbelkowq
Kolejny schemat blokowy, kt6ry zostanie tu zaprezentowany, przedstawia sortowanie
metod4 b4belkow4.
Oto schemat blokowy ilustruj4cy kolejne kroki wykonywane podczas sortowania b4-
belkowego (rysunek 3.7):
Rysunek 3.7.
Przyktadowy schemat
blokowy sortowania
bqbelkowego
tljl>tlj+11
tl
l
swap(tljl, tlj + 1l)
1oe
Sozdzial 3. I Projektowanie aplikacji
Przyklad 3.13
Wykonajmy na jego podstawie analizg sortowania zadeklarowanei poniZej tablicy
array.
1et array : 12, -5, 3, 1l
Przebieg sortowania przedstawiono w tabeli 3.4. Na ka2dym etapie wyr62nieniem wpi-
sywane s4 te elementy tablicy wyj6ciowej, kt6re zostaty wla6nie przestawione.
Pierwsza iteracja
,.:#0
3.4. Algorytmy
Dziel w celu podzielenia tabliry musimy wybra6 element rczdzielaj4cy (pivot). WzglE-
-
dem tego elementu przeniesiemy wszystkie dane znajdul4ce sig w tablicy, tak aby
elementy, kt6re s4 od niego mniejsze lub mu r6wne, znalazly siq po jego lewej stronie,
a wszystkie pozostale wartoSci przeniesiemy na prawo od niego. Procedurg terrazryamy
partycionowaniem. Niewa2ny jest porz4dek element6w, zaleLy nam jedynie naichpozy-
cji wzglgdem elementu rozdzielaj4cego. Z reguly wybiera sig element poloLony skrajnie
w prawo, ale s1teL inne podejScia wyb6r losowy b4d2 strategia ,,Srodkowy ztrzech".
-
Zv'rycigLaj rekurencyj nie (bezpo6rednio ) sortu j emy powstale podtablice.
-
juL
Scal
- nie musimy nic robi6. Wszystkie elementy na lewo od pivotu s4 od niego
mniejsze lub mu r6wne i zostaly posortowane, tak samo jak warto6ci po jego prawej
one z kolei s4 od niego wigksze. -
Ptzyklad3.l4
Posortujmy tablicE o zawartoSci14,7,5, 10, 8, 3, 6]. Na pivot wybieramy wartoS6 6, po
partycjonowaniu tablica przyjmuje strukturE f4, 7, 5, 3, 6, L0,8], a dokladniej mamy
dwie podtablice: [4, 7,5,3,6] oraz [10, 8]. Dla pierwszej podtablicy wybieramy pivot 6
i partycjonujemy: [4, 5, 3, 5], kt6re musimy ju2 posortowaC, oraz [7]. Druga podtablica
podzieli sig na [8] i [10]. Scalamy wszystko i mamy posortowany pierwotny zbi6r 13,4,
5r 6171 8, 10].
111
a'i
{':
l-J
Rozdzial 3. I ProjerLouranie aplikacji
(-)112
-
v;.:;
3.4. Algorytmy
t[]
left = 0
right=t.length- l
Przyklad 3.15
Rozwalmy nastgpuj4ry przyklad. chcemy znalelc nasz ulubiony utw6r zespotu Me-
tallica. Mamy w swoich zasobach 107 piosenek zespolu, alebez podzialu na albumy.
Mamy po prostu listq utwor6w posortowan4 alfabetycznie. Zal62m% 2e interesuie nas
ostatni utw6r. Przeszukui4c nasz zbi6r piosenek element po elemencie, czyli stosui4c
wyszukiwanie liniowe, musimy sprawdzi6 kazdy element naszej dyskografii. Bylobyto
doS6 klopotliwe i czasochlonne. Tymczasem wyszukiwanie binarne spiawdzi zaledwie
7 utwor6w przed zwr6ceniem wla6ciwego wyniku.
Jak?
Powiedzmy, 2e chcemy znalei,eutw6r 86. obliczamy 6redni4 wedlug wskazanego wzofir
(left + (right-left) ) /2zdanymi t-eft:O, right:107. Otrzymujemywynik
53 (po zaokr4gleniu w d6l). Nasz utw6r znajduje siE dalej; odrzucamy wszystko po-
ni2ej Sredniej i szukamy Sredniej z nowego przedziaht 54-107. wynosi ona 80. Nasz
utw6r ponownie znajduje siE powy2ej tej wartosci, rozwaLamy wigc kolejny przedzial:
81-107. Nowa Srednia to 94; tym tazem nasz utw6r znaidr\e siq wczeSniel. rot"lrry
nowy przedzial to 81-93. Srednia.z tego przedzialu wynosi g7, jestesmy wigc ju2 6l!
sko. obecny przedzial to B1-86. Srednia to 83. powstaje nastgpny przedzial, a+-se .
Ostatnia Srednia to 85, koricowy przedzial jest jednoelementowy.
Oznacza to,2e znalelliSmy utw6r.
W tym celu sprawdziliSmy 7 pozycji.
(')114
Nr--
3.4. Algory,tmy
Przyl<lad 3."1.7
EffizapisEffi Odczyt
Kolejka
115 (-l
a
Rozdziat 3. I Projektowanie aplikacji
"":" 'lEl.""':::
,.:,rr:.6it*aL:.: ll-ll:ui,t'.ffil,riri:t,lll
I
-====
E
ffiffiffi
r = :
,,r,r,r istas -: i :r"S6i l "lir'l'rr rii -
'l r' :i5t95il'ii'r"ri
-
'
Rysunek 3.11. Odwzorowanie kolejnoSci dziatan przy zapisie
i odczycie danych stos
-
Przyklad 3.18
StrukturE stosu om6wimy na podstawie notacji zwanej ONp,
czyli odwrotna notacia polska (ang. RPN polish no-
- reuersearytmetycz-
tation). Jest to jeden ze sposob6w zapisuwyraLefi
nych. Charakteryzuje sig brakiem konieczno6ci stosowania
nawias6w. W klasycznym zapisie operatory stawiamy pomigdzy
argumentami, np.2 . Z. Dlabardziej zloilonych obliczei, np.
2 + 2 . 2, je2eli chcemy okreSli6 irrn4ni2 domySlna (wynikaj4ca
z priorytetu operator6w) kolejnoS6 wykony,wania dzialafi, mu-
simy u2y6 nawias6w, np. (2 + 2) . 2.W przypadku stosowania
ONP nie mamy tego problemu, gdyL operator zapisujemy po
argumentach, na kt6rych zostanie ,uyty, np.2 2 .,2 2 2 . +,
2 2 . 2 +. Do utworzenia algorytmu wykonuj4cego obliczenia
zapomoc4oNP zastosujemy stos. WyraZenie czytamy od lewej
do prawej; je2eli pobran4 wartoSci4 jest liczba, l4duje na stosie.
W przypadku natrafienia na operator pobieramy ze stosu dwie
liczby,wykonujemy obliczenie zgodnie z operatorem, a wynik
odkladamy na stos. W momencie, w kt6rym obsluZymy wszyst-
kie dane wejsciowe, ostateczny wynik bgdzie sig znajdowa6 na
szczycie stosu.
Rysunek 3.1 2.
Przyktadowy schemat
)
blokowy algorytmu ONP
()116
---a ---
3.4. AlgoMmy
Przyklad3.l9
Zobaczmy, jak wygl4da wyszukiwanie elementu w kolejce na przykladzie dodawania
nowego elementu do kolejki priorytetowej. Najpierw ttw6rzmy schemat blokowy
takiego dzialania (rysunek 3.13).
Odszukaj pierwszy
element z mniejszym
priorytetem
Dodaj dane
z przodu kolejki
Listing 3.8
Implementacj a kolejki priorytetowej
class Element {
constructor (value, priorrty) |
this.value : value;
this.priority : priorrty,'
]
117 i-)
----ar
Rozdzial 3. I Projektowanie aplikacji
class PriorityQueue {
constructor ( ) {
l:hrs. elements : l] ;
pushonQueue(element) {
if (lcontarn) {
dispray ( ) {
priorityQueue.display ( );
()1
---{t-1B
3.4. Algorytmy
Rozwiqzanie tego problemu jest o wiele prostsze w jgzyku C + + , jednak jego prezentacja
wykracza poza ramy tego podrgcznika.
Jak wida6, samo dodanie elementu oparte jest na przeszukaniu tablicy w celu odnale-
zienia element6w o tym samym priorytecie. Dopiero po ich odnalezieniu mozna doda6
element. Priorytet 1 jest najwyLszy,natomiast 3 jest najnilszy.
Zasada jego dzialania opiera sig na zamianie ka2dego kolejnego znaku na symbol
wystgpuj4cy 13 pozycji po nim. Dla klasycznego alfabetu lacifrskiego (26 znak6w)
jest on funkcj4 odwrotn4, co oznacza,2e jestw stanie nie tylko zaszyfrowae,aleteL
odszyfrowa6 wiadomoS6.
decryptedMessage =
'13
messageIi]
11er)
-'r.t""-
Rozdziat 3. I Projektowanie aplikacji
Listing j.9
Funkcja szyfrui4ca
1 function rot13 (rnessage) {
2 leL decryptedMessage = r"r'
3 for(let i : 0; i < message.length; i +: 1) {
11 )
72 re.urn decryptedMessage,.
13 ]
L4
120
3.5. Projektowanie klas (UML)
Pruyklad,3.2O
Podstawowe rozwi4zanie problemu komiwoja2era pochodzi z gnTpy algorytm6w heu-
rystycznych.
Na czym polega problem komiwoja2era?
WyobraZmy sobie sprzedawc1podr6iuj4cego przezr62ne miasta. Codziennie wyrusza
on z miasta, w kt6rym mieszka, i dociera do wszystkich oSrodk6w na swojej drodze,
odwiedzajEcka2dy znich dokladnie jedenraz. Na koniec wraca do domu. Oczywistym
jest, 2e chce, aby jego podr62 byla jak najkr6tsza, i to wla6nie stanowi nasz problem,
kt6ry musimy rczwi4zae . Mozemy zastosowa6 prosty algorytm, kt6ry sprawdzi wszyst-
kie drogi i zwr6ci tg optymaln4. Niestety, rozwi4zanie to obarczone jest wlzkladnicz4
zloilonoici4 obliczeniow4, co ogranicza nas do analizy prostych modeli.
Temat algorytm6w jest zglgbiany od stuleci przez najwigkszych filozof6w i matema-
tyk6w. Efekty ich pracy wida6 chociaLby przy budowie linii warszawskiego metra czy
w skr6ceniu czavt jazdy poci4gu relacji Krak6w - Kolobrzeg. W obu przypadkach pro-
wadzono niejednokrotnie rozwaLania podobne do tych, kt6re umo2liwiaj4 rozwi4zanie
wspomnianego wczeSniej problemu komiwoja2era. Warto te| dobrze rozwaLyf u1rb6r
jqzyka, w kt6rym chcemy zaimplementowa6 algorytm; nie zawsze ten, kt6ry jest nam
najbliLszy i kt6ry najczg6ciej wykorzystujemy, najlepiej sig do tego nadaje.
/-l
["'3.5.
- 1--r- Projektowanie klas (UML)
Do tej pory, gdy byla mowa o tym, 2e trzeba ttworzye klasg <i wskazanych wlaSciwoS-
ciach, u2y.waliSmy jej opisu slownego.
W programowaniu rzadko stosuje sig takie rozwi4zanie. Ten zapis zostalzast4piony przez
UML (Unified Modeling Language). M6wi4c najpro6ciej, zast4piono tekst diagramem.
W tym zapisie stosuje sig pewne stale i powszechnie przyigte zasady.
1211 ;
ai '
Rozdzial 3. I Projektowanie aplikacji
Przyldad3.2l
Na rysunku 3.L5 zaprezentowano zapis za pomoc4 diagramu UML klasy student.
Ka2dego reprezentanta tej klasy charakteryzuj4 wlaSciwoSci: PESEL, imig (name) i na-
zwisko (surname). Zdefiniowano dlari takLe trzy metody, pozwalajEce na pobranie
numeru PESEL, imienia i tablicy z ocenami.
<<StereoType>>
ClassName
Przyl<Lad,3.22
GdybySmy chcieli zleci6 utworzenie klasy z przykladt 3.9, posluguj4c siq jgzykiem
naturalnym, moglibySmy napisa6:
Utw6rz klasg Student o wla6ciwoSciach name (imig) i surname (nazwisko). Obydwie
wlaSciwoSci powinny by6 typu tekstowego. Identyfikatorem oblekt6w w klasie niech
bgdzie numer PESEL. Utw6rztak2e metodgprryatn4pobieraj4c4 ten numer oraz dwie
metody publiczne, odpowiedzi alne za:
o pobranib imienia studenta,
. zwr6cenie jego ocen.
a'\,122
1
()
3.6. Wzorce projektowe
Prawda, 2e widaf r62nic7? Kiedy tylko przyzwyczaimy sig do zapisu UML, jego sto-
sowanie bgdzie naturalnym wyborem, poniewa2 jest on prostszy ibardziej czytelny.
Przyklad.3.23
Przenie6my tasze tozwalania o wzorcach projektowych do sfer znanych nam nieco
lepiej. Zwr6emy uwagg na wznoszone dzisiaj budowle. KaLdy budynek jest inny, ale
wigkszoS6 z nich korzysta z tych samych schemat6w i norm dotycz4cych np. ilo6ci
Swiatla w pomieszczeniu czy te2 dopuszczalnego poziomu halasu w mieszkaniu. Bgd4c
w du2ym mie6cie, latwo zauwaLymy,2e kiedy obejdziemy niemal dowolny budynek
stoi4cy przy ruchliwej ulicy, natrafimy na miejsca, gdzie halas jest bardzo mocno od-
czuwalny, podczas gdy inna czE56 budynku bEdzie idealnie wyciszona iprzygotowana
w ten spos6b pod czg56 sypialnian4. Jest to spowodowane tym, Lewsp6lczesne budynki
s4 oparte na dobrze znanych architektom wzorcach projektowych.
W programowaniu teZ m6wi siE o funkcji architekta. Rola takiej osoby sprowadza sig
wlaSnie do projektowania aplikacii na podstawie z g6ry znanychwzorc6w projektowych.
Wzorce stosowane w projektowaniu zostaty bardzo dobrze opisane w ksi42ce Wzorce
proiektowe. Elementy oprogramowania obiektowego wielokrotnego u?ytku autorstvva tzw.
Gangu Czworga.
Ksi42ka tazostalar.rydana ponad dwie dekady temu i do dziS rozwi4zania powszechnych
problem6w programistycznych opafte sa na jednym z 23 zawartych w niej wzorc6w.
Warto o tym pamigta6 i napotykaj4c jak45 trudnoS6, kt6ra wydaje siE nie do przej6cia,
nie pr6bowa6 wymySlad kola na nowo, lecz zairzet do tej klasycznej publikacji w celu
sprawdzenia, czy nie ma ju| gotowego rczwi4zania.
DoS6 dlugo m6wimy ju2 w tym rozdziale o wzorcach projektowych, nie podaj4c ich
definicji. Czas to zatem uczynie. Oto definicia autorstwa czlonk6w Gangu:
Wzorzec to rozwiqzanie problemu w ramach peurytego kontekstu.
Spr6bujmy j4 wyjaSni6 na przykladzie.
123'{ -t
---ri-
Rozdzial 3. I Projektowanie aplikacji
Przyklad.3.24
Sytuacja: na wakacjach w Wielkiej Brytanii zaistniala potrzeba naladowania telefonu.
Kontekst: wtyczka kontaktowa i ladowarka do telefonu.
Problem: nie moZna wlo2ye ladowarki do kontaktu zewzglgdtt na to,2e na Wyspach
stosowany jest inny uklad bolc6w we wtyczce.
Rozwi4zanie: prze j Sci6wka/adapter.
Adapter zastosowany do rozwi4zania tego problemu przyda sigzreszt4nie tylko w Wiel-
kiej Brytanii, ale takLew Chinach czy USA orazwewszystkich krajach, w kt6rych stosuje
siq inny standard wtyczek. Dlatego wlaSnie moznattznat go zarczwiqzanie wzorcowe.
Aby stosowa6 roznego rodzalu przejsciowki, wcale nie trzeba wyjezdiac poza kontynent.
Trzebapodlqczyc stary monitor z gniazdem VGA (D-SUB) do nowego laptopa ktory ma
juz tylko nowe, cyfrowe wej6cia (HDMI lub DisplayPort) Chcesz podlqczy6 sluchawki
do telefonu, ktory nie ma wejScia typu minilack, a ledynie port micro USB? W obu tych
przypadkach trzeba skorzystai z adaptera.
W ksi42ce GoF (ang. Gang of Four Gang Czworga) kaildy wzorzec projektowy ma:
-
1. Odpowiednio dobran4 nazw1 wzorca (sugeruj4c4, laki charakter bgdzie mialo
rozwi1zanie, rrp. nazwa adapter dla wzorca adaptuiqcego niepasuj4ce do siebie
elementy).
2. Opis problemu kontekst oraz warunek (warunki) tzasadniaj4ce uZycie wzorca.
-
3. Rozwi4zanie element6w, kt6re wchodz4 w sklad rozwi4zaria, zaleLnoilci
- opis
pomigdzy nimi, ich odpowiedzialnoSci oraz interakcji.
4.
- opis ewentualnych problem6w zwi4zanych z zastosowaniem
Konsekwencje
wzorca. NajczgSciej jest to zmniejszenie wydajno6ci w okreSlonych sytuacjach.
Ta sekcja pozwoli nam zdecydowae, czy niepol4dane skutki uiyciawzorca nie s4
wigksze ni2korzy(ci, jakie wzorzec daje.
tc 124
3.6. Wzorce proiektowe
Trzeba zdawac sobie sprawq z tego, 2ewzorzec projektowy nie jest gotowym, bqdqcym
rozwiEzaniem problemu kodem, ktory mozemy skopiowac i wkleic do swojego projektu
To tak, jakbySmy oczekiwali, ze ubranie, ktore Swietnie prezentuje siq na koledze, bgdzie
rownie doskonale pasowad nam. OczywiScie tak nie jest, nie powielajmy wigc wzorcow,
nie zastanawialqc sig nawet, jak je dostosowai do naszego problemu. Wzorzec jest tym,
o czym mowi jego nazwa-wzorcm rozwiEzania, anie rozwiqzaniem.
lstniejq takze gotowe implementacje wzorc6w. W ich przypadku liczba zmian jakich
bgdziemy musieli dokonac, jest zapewne mniejsza. OczywiScie takich implementacjijest
bardzo duzo. Zanim wykorzystamy ktorq6 z nich, zastan6wmy siq, dlaczego uwazamy
lqzalepszqod innych. Trzebalakze pamigtac ze najlepiej korzystad ze2rodelz jaknay
wiqkszq liczbq komentarzy, Nawet korzystalqc ze 2rodel sprawdzonych i wiarygodnych
nie powinni6my jednak po prostu przekopiowywac kodu bez proby jego zrozumienial
Pruyklad3.25
Zat6Lmy,2emamy kod Zr6dtowy do definiowania cen gier komputerowych. Od sprze-
dawcy wiemy, 2e istniej4 dwa rodzaje cen gier komputerowych:
o cena sugerowana dla gier ze Sredniego segmentu (midPrice),
. cena sugerowana dla gier z segmentu wysokobud2etowego (AAAPrice).
t;25 l. .
Rozdzial 3. I Projektowanie aplikacji
MidPrice AAAPrice
Listing 3.10
Kod klas dla sklepu z grami
class MrciPrice {
name = 'mid' ;
pr . ' ;
brandManager :'Mactej Nowak';
display = funct:onO i
ret_1trn console. log ('osoba odpowiedzialna za segment g{ thrs .
class AAAPrice {
name:'aaa price';
price:250;
brandManager :'Marianna Srebrnar;
company : ['Ua', 'Microsofi-'];
drsplay: functionO {
ret_1trn console.log('csoba odpowredzialna za segment g{this.
name] to g{thrs.brandManager.} (cena sugerowana to: g{thrs.prrce})') ;
Listing 3.11
Kod funkcji do dodawania cen
1 function games O {
2 1et games = ll;
:'ltza
"-r.,
3.6. Wzorce projektowe
Przyklad.3.26
Analizgproblemu rrale|y rozpocz4C od odpowiedzina pytanie, z kt6rego rodzajttwzorca
powinni6my skorzysta6.
127 (')
Rozdzial 3. I Projektowanie aplikacji
Jest to opis wzorca metoda wytworcza (ang. Factory Metho$. Po uwaznym, kilkakrot-
nym przeczytaniu zacytowanego zdania nasuwa siq wniosek, 2e moznawygenerowac
osobnq klasq z metodq decydujqcq na podstawie zadanego parametru, ktory typ
instancji nalezy utworzyc.
lnna nazwa wzorca metoda wytworcza to ,,konstruktor wirtualny" (ang. Viftuat Constructor),
W przypadku zrodel dostgpnych w internecie nalezy kierowac sig zasadq, ze nie wszystko
zloto, co sig swieci. Nie zawsze atrakcyjny i prze)rzysty interfejs idzie w parze zwysokq
jakosciq przekazywanej wiedzy Jeszcze raz podkreslamy,2e warto siggac tylko po
sprawdzone i wiarygodne zrodia informacji.
W praktyce na pocz4tku nale|y ttworzye klasg, kt6ra formalnie bgdzie nazywana fa-
bryka. Zadania tej klasy to:
. wygenerowanie odpowiedniej instancji klasy wedlug wskazanego typu,
o wySwietlenie danych dotycz4cych ceny (to ta czgsf kodu jest zduplikowana).
Utw6rzmy zatem klasE wedlug schematu (rysunek 3.18). Na razi.e jednak nie bgdziemy
pisac implementacji tworzenia instancji klas. Skupmy sig na tym, by dobrze rczpisac
klasE, implementacj4 zajmiemy sig p6zniej (w kodzie brakuj4ce elementy zast4pimy
komentarzem).
(')128
*a
3.6. Wzorce projektowe
PriceGameTypeFactory
+ createPriceType(type): PriceType
+ display0: String
Listing 3.12
Definicja klasy PriceGameTypeFactory z pustymi metodami
1 class PriceGameTypeFactory {
3 createcamePrrceType : functron(type) {
4 let prrceType;
5 if (type ::: "baseprice") 1
l2
13 praceType. dispLay : function ( ) {
L6
L] return priceType;
18 ]
19 I
12e | -
q
Rozdzial 3. I Projektowanie aplikacji
Co zatem wpisa6 w 15. linijce iistingu 3.12? Metodg, kt6r4 usuwali6my z poszczeg6lnych
klas. Cialo tej metody to:
Tylko jedna rzeczwygl4da inaczej ni2 poprzednio: w fabryce nie ma slowa kluczowego
thrs, gdy2 teraz za ka2dym tazem tworzymy now4 instancjg innej klas1,. Tym razem
skorzystamy ze zmiennej, do kt6rej przypisywaliSmy nowo utworzone instancje, czyli
pri ceType (listing 3.13).
Listing j.13
Zmodyfikowany kod klas1, PriceGameTypeFactory (uzupelniono metodg createGame-
PriceType oraz dodano metodq display)
class PricecameTypeFactory {
let priceType;
if (type ::: 'rbaseprice") {
4t130
-7
3.6. Wzorce projektowe
return priceType;
Teraz zmienimy definicjg funkcji gamesEactory, tak jak pokazano na listingu 3.14.
Listing 3.14
Modyfikacja definicji funkcji gamesFactory
1 funcl_ion gamesEactory ( ) i
2 ieL games : [];
3 1et gameEactory : new PriceGameTypeEactory O ;
4 Let aaaPrice : gameEactory. crea-_ecamepricelype ( 'aaaprrce' ) ;
5
6 games.push (aaaPrice) ;
7 games.push(gameEactory.createGameprrceType('baseprice'));
8 games.push (gameEactoIy. createcamepriceType ('midprice') );
9 games . push (gameEactory. createGamepriceType ( 'baseprrce, ));
10
15 ]
)
l
131
(L
t-l
Sozdztal 3. I Projektowanie aplikacji
('-))
1r"3.7. Podsumowanie
----T----T_---
Tworzenie wydajnej aplikacji o wysokiej jakoSci nie jest proste. Je(;li zapytamy archi-
tekta oprogramowania, ile czasu zajglo mu zdobycie niezbEdnej wiedzy, zazwyczai
odpowie, Le wci42 i4 zdobywa. Dlaczego? Bo 6wiat programowania to 6wiat ci4glego
ksztalcenia siE. Bardzo czgsto sig okazuje, Le rozwi4zania stosowane w jednej firmie nie
sprawdzaj4 siE w innej. Co wigcej, technologia nie stoi w miejscu. Wci42 pojawiaj4 sig
nowe frameworki, biblioteki, a nawet cale jgzyki programowania. Musimy wigc by6
ptzygotowani na nieustanne poszerzanie swoje j wiedzy.
Niemniej zawsze trzeba zaczynae od opanowania podstaw. Bez tego po prostu nie uda
siE ruszy6 z miejsca.
/-l
3.8. Zadania
-
Zadanie 3.1
Stw6rz listg krok6w potrzebnych do wyslania SMS-a.
Zadanie 3.2
Zaprezenttj za pomoc4 schematu blokowego listE krok6w z zadania 3.1.
Zadante 3.3
Zaprezenttj za pomoc4 schematu blokowego listg krok6w potrzebnych do okre6lenia,
czy po dana p r zez tLy tkownika liczb a je st liczb 4 pierw sz4.
Zadanie 3.4
Na podstawie istniej4cego schematu blokowego (rysunek 3.6) napisz funkcjg, kt6ra dla
podanych przezuLytkownika dw6ch liczbvryznaczy ich najwigkszy wsp6lny dzielnik.
Zadanie 3.5
Na podstawie przedstawionego schematu blokowego (rysunek 3.8) napisz funkcjg re-
alizuj4c4 sortowanie b4belkowe.
Zadanie 3.6
Napisz aplikacjE wyszukuj4c4 wskazany element w tablicy.
Zadanie 3.7
Zaprojekttj za pomoc4diagramu UML rozwi4zanie problemt sprzedaLy warzyw w wa-
rzywniaku.
l";132
i.:,
3.8. Zadania
Zadanie 3.8
Zaprojektui za pomoc4 diagramu UML rozwi4zanie problemu sprzedaLy komputera
skladanego ze wskazanych podzespol6w
Zadanie 3.9
lJtw6rz sw6j schemat blokowy opisui4ry wyci4ganie mleka z lod6wki. Jaka jest zlo2o-
no56 obliczeniowa tego schematu?
Zadanie 3.1O
Zaimplementuj (na podstawie samodzielnie stworzonego schematu blokowego) metodg
sprawdzai4c4, czy wskazana przez tLytkownika liczba jest liczb4 pierwsz4. Jaka jest
zloilonoit obliczeniowa tego algorytmu?
133o
1.-r1
Rozdzial 3. I Projektowante aplikacjt
| ;134
oprogr_amowanl
Wsp6tczesny Swiat opiera sig na technologii komputerowej. Nie ma bran2y, kt6ra by
funkc j onow ala bez system6w informatycznych.
Zapewne wiEkszoS6 z nas miala stycznoS6 z oprogramowaniem, kt6re nie dzialalo tak,
jak powinno. Systemy sq tworzone przezludzi, a jak wiadomo, ludzie popelniaj4 blqdy.
4^-
rJc
Rozdzial 4. I Testowanie oprogramowania
Zwroc uwagg na to, ile kosztuje naprawa blgdu na samym poczqtku projektu (analiza),
a ile juz po lego wdrozeniu (tabela 4.1)
Tabela 4.1. Symulacja kosztu naprawy btqdu na poszczegolnych etapach wy-
tw arzania oprogramowan ia
Programowanie 0,5 MD
Testy modulowe 1 MD
Testy systemowe 3 MD
Po wdro2eniu 10 MD
* MD (pracochlonnoSc) to iloSc ciqgiej nieprzerwanej pracy. jakq powinna
wykonac jedna osoba, by
skoitczyc zadanie. JeSIi zadanie musi wykonywac kilka osdb, to sumuje siq czas ich pracy, by uzyskac
leden wynik, tak lakby zadanie wykonywala jedna osoba. PracochlonnoSi mrerzymy w dniach robo-
czych (ang. man-day).
':136
4.1. Siedem zasad testowania oprogramowania
Przyklad.4.l
Wyobral sobie, 2e piszesz program dla powa2nej instytucji finansowej, np. du2ego
banku. Po ukoriczeniu pisania kodu nie wystarczyto Ci jtt| czaso na rzetelne przete-
stowanie aplikacji, dlatego zamiast poprosi6 zleceniodawcg o zmiang terminu rcalizacji
zlecenia, decydujesz sig zaryzykowa6 i przesla6 program w obecnej postaci. Niestety
zaraz po wdro2eniu produktu okazuje siq, 2e niepoprawnie wylicza on raty kredyt6w.
Kierownictwo banku jest
- m6wi4c oglgdnie -bardzo zdenerwowane. Kredytobiorry
dzwoni4 z reklamacjami. Spraw4 zainteresowaty siE media. Zeby uniemo2liwi6 zawie-
ranie nowych um6w z blgdami w harmonogramach splat kredytu, zdecydowano sig
zawiesi6 dzialanie systemu ratalnego. To ocz),wiScie oznaczawymierne straty finansowe
dla banku, nie wspominaj4c nawet o utracie wizerunku instytucji. Poniewa2 to Tw6j
kod spowodowal to zamieszanie, musisz go poprawiC, tym razem jednak bgdziesz
dziabe pod ogromn4 presj4
- kierownictwo banku 24da iak najszybszego usuniEcia
usterek, groz4c jednocze6nie odst4pieniem od umovry i ztoLeniem pozwu s4dowego.
Ten przyklad powinien uSwiadomi6 Ci, jak walne jest testowanie produktu przed jego
p r zekazaniem zamaw iaj4c emu.
Pruyklad,4.2
Podczas testowania nowej strony internetowej dla firmy rbezpieczeniowej tester wy-
liczal skladki tbezpieczenia OC, posluguj4c siE tylko jednym zestawem danych (tzn.
zakaLdymrazem, gdy przechodzil do kalkulatora skladki, wprowadzai te same dane).
Jego testy nie wykazywaty btgd6w. Dopiero podczas odbioru aplikacji przez klienta
okazalo sig,2e oprogramowanie zawiera takie usterki jak:
. brak walidacji p6l ,,numer telefonu" i ,,adres mailowy" (w zwi4zku z czymmoLna
bylo np. wpisa6 mail bez znakt @ lub numer telefonu skladaj4cy sig z zaledwie
dw6ch cyfr);
rsz [.r
__-;i-_.
Rozdzial 4. I Testowanie oprogramowania
o liter6wki w nazwach marek aut (przez kt6re czgsd u2ytkownik6w nie znajd,owala
na liScie marek swoich samochod6w);
. mo2liwoSe ubezpieczenia auta z dat4 startu z przeszloSci (co jest niezgodne z obo-
wi4ztti4cym prawem).
Gdyby testy odbywaty sig na zr6ilnicowanych danych, powyLsze blEdy zostatyby r,rry-
kryte na pocz4tkowym etapie test6w.
6. Testowanie zaleLy od kontekstu
W zupelnie inny spos6b bgdzie testowany sklep internetowy ni2 system rezerwacji
bilet6w czy aplikacja do zamawiania taks6wki.
7. Przekonanie o braku btqd6w jest blgdem
w Swietle tego, co m6wi4 zasady1.. iL.,nie naleZy oczekiwa6, 2e jesli oprogramowanie
zostalo gruntownie przetestowane i wyeliminowano znalezione dziEki temu blgdy, na
pewno iest ju2 poprawne i bqdzie :uzyteczrre dla korzystajqcych z niego os6b. Przede
wszystkim wci42 moLe zawieru( usterki, kt6rych nie udalo sig wykry6. Nale2y jednak
tak2e pamigta1, ze nawet znalezienie i usunigcie wszystkich blgd6w na nic siE nie zda,
je2eli system bgdzie nieintuicyjny i trudny w obsludze albo nie bgdzie spelnial potrzeb
oraz o czekiwari u2ytkownika.
Oczywi3cie nie znaczy to, Le
2e bgdzie
- skoro testowanie
ono bezblgdne i :u?yteczne
oprogramowania nie gwarantuje tego,
nie naleLy go przeprowadzae! czas poswig-
-
cony na dobrze przemy6lane i zaplanowane testowanie na pewno nie bgdzie czasem
straconym.
r--L
l<'14.2. Proces testowy wedtug ISTQB
Znasz ju2 og6lne zasady dotycz4ce testowania. Przejdimy zatem do bardziej szczeg6-
lowych regulacji. WigkszoS6 jest ustalanych przez ISTeB.
ISTQB (ang. International software Testing Qualifications Board) jest instytuciqwy-
znaczai4c| podstawowe standardy w dziedzinie testowania na skalg Swiatow4. Ta
organizacja oferuje Scie2kg certyf,kacyjn 4, kt6ra umo2liwia zdobl,wanie certyfi kat6w
potwierdzai4cych uprawnienia dla tester6w, analityk6w i test mened 2er6w.Jest uzna-
wana na calym 6wiecie w bran2y IT.
Ulo2enie procesu, wedlug kt6rego bgdzie molrLa testowa6 oprogramowanie, jest klu-
czowym elementem ka2dej organizacji. Kaildy proces jest dostosowany do struktury
firmy, jej strategii, zasob6w i metodyki, wedlug kt6rej wytwarzane jest oprogramowanie.
Wedlug ISTQB proces testohy sklada sig z nastqpuj4cych czynno6ci:
1. Planowanie test6w.
2. Monitorowanie test6w itadz6r nad nimi.
3. Analiza test6w.
4. Projektowanie test6w.
5. Implementacja test6w.
6. Wykonywanie test6w.
7. Ukoiczenie test6w.
W praktyce oznacza to, Le tworz4c projekt testowy, naleLy zaplanowae kolejnoS6 prac
i wzi4e pod uwagE wszystkie czynnoSci testowe, kt6re bgd4 realizowane. ISTQB nie
flarzuca organizacjom gotowego procesu, a jedynie pokazuje, na jakie grupy czynno6ci
warto zwt6cie uwagq.
Nie wszystkie etapy bqdq mialy odzwierciedlenie w realnych projektach. Niektore czyn-
no6ci mogq wystgpowa6 r6wnoczeSnie, nachodzic na siebie bEd2 zoslac pominigte.
139 :
,'l -
Rozdzial 4. I Testowanie oprogramowania
o zdefiniowa1 ryzyka (zidentyfikowae tzw. wAskie gardla, czyli obszary, etapy lub
funkc j onalnoSci, kt6re mog4 zagro zi6 terminowemu zakof czeniu pro j ektu) ;
o wskaza6 spos6b b4d2 narzgdzie, za pomoc4 kt6rego bgd4 rejestrowane i komuni-
kowane z$aszaneblgdy.
To tylko skr6cona lista element6w planu testu. Ze wzglgdu na jego znaczenie oraz
stopieri skomplikowania bgdziemy ieszcze o nim m6wi6 w rozdziale dotycz4cym do-
kumentacji testowej.
:)140
r')
4.2. Proces testowy wediug ISTQB
Cztonkowie zespolu korzy staj4 gl6umie ze specyfikacji wymagari (ten dokument zostanie
przedstawiony w rczdziale 5.), z dokumentacji technicznej lub zaloLefi biznesowych.
Czgsto juz na etapie analtzy zostajq wychwycone bigdy. Zgodnie z tym, co glosi znana
Ci juz zasada 3. testowania (o wczesnym testowaniu), przeklada siq to na zmniejszenie
kosztow poniesionych w zwiqzku z realizaclq prolektu. Na tym etapie mozna wyelimi-
nowac wszelkiego rodzalu.
. niejednoznacznoSci,
. pominiqcia,
. niespojnosci,
. nieScislo6ci,
. sprzecznoSci,
. nadmiarowe (zbgdne) instrukcje.
Powtdrzmy raz jeszcze. im wczeSniej wykryty blqd, tym nizszy koszt lego naprawy.
U DEFINTCJA
Warunek testowy to element lub zdarzenie modulu lub systemu, kt6ry moze byc zwe-
ryfikowany przez leden lub wigcej przypadkow testowych, np. funkcja, transakcja, ce-
cha. atrybut jako6ci lub element struktury. Zatem warunek testowy mozna uznac za
artefakt nadrzqdny w odniesieniu do przypadku testowego.
Norma ISO 29119 okresla przypadek testowy jako zestaw warunkow wstqpnych, da-
nych wejsciowych akcji (w stosownych przypadkach), oczekiwanych rezultatow iwa-
runkow koncowych, opracowany na podstawie warunkow testowych.
141 (-)
-"1r
Rozdzial 4. I Testowanie oprogramowania
w praktyce taki przypadek testowy to instrukcja dla uZytkownika, kt5ra m6wi, jakie
kroki nale2y wykona6 i jakie s4 oczekiwane rezultaty wykonanych krok6w.
Szczeg6towa budowa przypadku testowego; zar6wno uysokiego, jak i niskiego poziomu,
bgdzie opisana w rozdziale 5.
Wszelkie testalia, czyli dokumentacja (przypadki testowe, historyiki u2ytkownika itp.)
i skrlpty wltworzone podczas trwania procesu testowego, powinny by6 przechowywane
w natzEdziu, kt6re zapewnia wersjonowanie (historiE edycji dokumentu) i Sledzenie
historii wykonania.
warto korzysta6 z narzgdzi wspomagaj4cych proces testowy, np. Jira czy Testlink
(pierwsze z nichbgdzie omawiane w dalszej czgsci rozdzialu).
r.412
4.3. Poziomy testow
'f^-v
W4,.3. Poziomy testow
r-----r----
Znasz juL og6lne zasady dotycz4ceprzeprowadzania test6w. W poprzednim podrozdziale
om6wiliSmy zalecane przez ISTQB etapy, z kt6rych skladad siE powinien proces testo-
wania. Na kaZdym z tych etaplw wykonuje siE pewne specyficzne dla niego czynno6ci.
Twotz4 one tzw. poziomy test6w.
143
-- (j
a)
Rozdzial 4. I Testowanie oprogramowania
ewiczenie 4.1
Spr6buj okreSli6 obszary testowania
- przedmiot, cel, podstawe, typowe defekty i pre-
ferowane Srodowisko testowe dla modul6w, kt6rymi sA wagony poci4gu.
Rysunek 4.2.
Podejscie typu top-down
()144
' :^. -- do testow modulowych
4.3. Poziomy testow
Pruyklad.4.4
Kontynuuj4c naszprzykad z poci4giem, mo2emy zaloLyt, LeprzeprowadziliSmy jui testy
pojedynczych modul6w przebiegty prawidlowo. Czy to
- wagon6w. Wszystkie testy
ozrtacz\2epoci4gmoLe ju|rusza(w drogg? OczywiScie nie. Teraz musimy sprawdziC,
czy wagoty s4 trwale ibezpiecznie ze sob4 pol4czone, w szczeg6lno6ci czy pierwszy
z nich jest poprawnie podl4czony do lokomotywy. W ten spos6b badamy
- ich integracjq.
ewiczenie 4.2
Spr6buj okre3li6 obszary testowania umoZliwiaj4ce sprawdzenie integracji modul6w
poci4gu wagon6w.
-
Przyklad 4.5
Innym dobrym przykladem testowania zintegrowanych element6w jest sprawdzanie
poprawnoSci przeprowa dzenia transakcji finansowych.
Co siE dzieje, kiedy wykonujesz przelew bankowy? Z Twoiego konta odejmowana jest
pewna kwota pienigdzy. Ale to nie wszystko.Prueciez ta suma nie moZe tak po prostu
znikn46. Musi sig pojawi6 na innym koncie tym, na kt6re dokonujesz przelewu. Aby
-
mie6 pewnoS6, 2e transakcja zostala przeprowadzona poprawnie, nie wystarczy wigc
sprawdzi6 stan konta, z kt6rego wykonany zostal przelew. Trzeba te2 siE upewni6, 2e
pieni4dze dotarty na wskazany rachunek docelowJr.
,oqJ._j
Rozdzial 4. I Testowanie oprogramowania
Przyklad 4.6
zbadalismy juL wagony, upewniliSmy sig takze, Le pol4czenia pomiEdzy nimi s4 po-
prawne, trwale i bezpieczne. To jednak wci4| za wczesnie, by wpusci6 do poci4gu
l
()146
-
'i:)
4.3. Poziomy testow
ewiczenie 4.3
Jak zdefiniowat obszary testowania pod k4tem sprawdzenia poprawno6ci dzialania
poci4gu jako caloSci?
147 ()
I
-.7
Rozdzial 4. I Testowanie oprogramowania
(';148
4 4 Typy testow
149
Rozdzial 4, I Testowanie oprogramowania
a'1150
(,)
4 4 Typy testow
151
c
.)
Sozdzial 4. I Testowanie oprogramowania
a-}
rV14,5. Dobre praktyki w zglaszaniu btgdow
---T_----
za pomoca narzQdzi
Jednym z cel6w testowania jest znajdowanie defekt6w (btEd6w). Kluczowy iest spos6b
ich zgloszenia.Je2eli mamy do dyspozycji dedykowanenarugdzie, to naszym obowi4z-
kiem jest dbanie o to, aby wszystkie zgloszenia byly rejestrowane. Dzigki pelnemu
rejestrowi btEd6w mozemy mieruye jakoS6 vqvtvraruanego oprogramowania.
Defekt (blqd) jest tez czasem nazywany usterkq i jest jednym z najczqsciej uzywanych
przez testera pojqi w codziennej pracy. Defekt to wada modulu lub systemu, kt6ra
moze spowodowac, ze modul lub system nie wykona zakladanej czynnoSci. Ta wada
najczq6ciejwynika z popelnionelprzez programistg pomylki polegajqcej np na uzyciu
niepoprawnego polecenia lub wyrazenia bqdz niewla6ciwej definicji danych. Ostatecz-
nym skutkiem jest awaria oprogramowania (rysunek 4 4)
:152
4.5. Dobre praktyki w zglaszaniu blqdow za pomocq narzqdzi
Jira
Jira jest obecnie najpopularniejszym narzgdziemwykorzystywanym komercyjnie. Swoj4
popularnoS6 zawdzigcza przede wszystkim elastycznoSci oraz molliwo6ci dostosowania
ekran6w do potrzeb projektu. Producent programu opracowuje i udostgpnia nabie24co
wiele dodatk6w, kt6re moLna w pelni integrowaC z tym narzgdziem.
Na rysunku 4.5 wida6 przyklad zadania do realizacji zaplanowanego za pomoc4 na-
rzEdzia Jira.
Opslis!* 3*se'
.@W@!@
@ryr'@
M@.*...
{M!.&'.&&*l@
r@t@'&
'.!e.:,de.@ry
,. -. ..
rss-{:-*'
L;
Rozdzial 4. I Testowanie oprogramowania
' )154
I
4.5. Dobre praktyki w zgtaszaniu bledo@
ffw
W#a;&
:!: r':a Y{ebExlension's page {toes nol iave favicol
, Cdlgrrias
.,.,i:,fi ir.![!1.nj:r::,
1i::': * le{..1
lairtaaBii {ii.r.Jil -
li.i.iii, P.l i:i:.iir: irrti:i
'iar:ai:: fTErar:'
5ir:i:r:.r.i ill !r1 rr.l
' rradrg
:.1ri!: lrii:af{lil!:l .-. t.;rklrg aLEg!
lil.:,11r-.
tlaf:la r:
!!ifir.-i.iii:
i!t;i:riir:t:!
Trello
ostatnie z prezettowanych narugdzi to Trello. Jest ,,najmlodszym" narzgdziem z tej
grupy. Mabardzo szerokie zastosowanie i co najwa2niejsze uZytkowniko-
wi calkowit4 dowolno66. Nie ma zdefiniowanych p6I. Niezbgdne - daje
informacje moZna
wprowadza6 na dodawanych w razie potrzeby kartach. Wystarczy zna( zbi6r dobrych
praktyk, aby narzgdzie w niczym nie odbiegalo od Jira.
Poni2ei zamieszczamyzrzutekranuaplikacjiTrello(rysunek4.7).Poniewa2niewymusza
ona na u2ytkowniku wypelnienia okreSlonych p6l, caly ciglar przekazartia informacji
o blgdzie spoczywa na zglaszaj4cym.
155 r^
3
Rozdztal 4. I Testowanie oprogramowania
/--\
\ l4.Ci. Zadania
-_-T-l--
Zadanie 4.1
Cz93CI (10 min)
Zadanie 4.2
Wymieri siedem zasad testowania i om6w dwie z nich bardziej szczeg6lowo.
Zadanie 4.3
Wymieri grupy czynnoici, z kt6rych sklada sig proces testowy.
Zadanie 4.4
Z czego sklada siq plan test6w?
Zadanie 4.5
Z czego sklada sig przypadek testoufr?
Zadanie 4.6
Wska2 r62nice pomigdzy testami funkcjonalnymi a niefunkcjonalnymi.
zadafle 4./
Jakie s4 podstawowe cele test6w akceptaryjnych?
Zadanie 4.8
Podaj r6Lnic9 pomigdzy testami regresji a re-testem.
Zadani,e 4.9
Jaka jest r62nica pomigdzy testami czarnoskrzynkowymi a bialoskrzynkowymi?
i)156
*"T:-
4.6. Zadania
Zadanie 4.1O
Czym r62ni4 sig testy przeci42eniowe od test6w obci42eniowych?
Zadanie 4.11
Podaj definicjg defektu.
Zadanie 4.12
Jakie informacje powinno zawierae poprawne zgloszenie btgdu?
()
i
157
c,
Rozdziat 4. I Testowanie oprogramowania
a--r 158
lai
Tworzenie:
'dokurnenta CJ
._._...,.., .!
testowej
Dokumentaciawytworzona podczas procesu testowego jest niezbgdna do ewentualnego
odtlvorzenia danego etapu test6w czy przekazaniawiedzy nowym czlonkom zespolu.
Stanowi te2 swego rodzajtt Srodek komunikacji nie zawsze caly zesp6l projektowy
przebywa w jednej siedzibie. Wszelkie ustalenia-i zmiany s4 umieszczane we wskaza-
nych lokalizacjach (takich jak miejsce na dysku firmowym lub dedykowanenarzgdzie,
do kt6rego prowadzi wskazany link). Dokumentacja powinna by6 tworzona wedtug
wzorc6w przyjgtych i obowi4zuj4cych w danej organizacji.
Przyklad 5.1
wyobrui sobie, 2e przystgpujesz do projektu w trakcie jego trwania f ako tester b4dZ
programista. Nikt nie ma czasu wprowadza6 Cig w kahdy aspekt czynnosci, kt6re bg-
dziesz wykonywa6. Twoim podstawor*ym lr6dlemwiedzy bgdzie wszelkiego rodzaju
dokumentacja. To dziqki niej bqdziesz wiedzie(' jak zglasza( blgdy oraz do jakich
narzgdzi bqdziesz potrzebowa6 dostgp6w.
W tym rozdziale poznasz przykladow4 dokumentacjg testow4 , zasady jej tworzenia,
jej budowg oraz naiwalniejsze elementy.
PIan testow
Jak juz zostalo powiedziane w rozdziale 4., plan test6w (ang. test plan) iest tworzony
na etapie planowania procesu testowego (ang. test process).
Ten dokument iest aktywny przez caly czas trwania projektu. Powinien bye kald.orazo-
wo modyfikowany i uzupelniany o nowe informacje. Wszystkie osoby zaanga2owane
w projekt musz4mie6 dostgp do dokumentu.
159 i-_,
(..:j
Rozdzial 5. I Tworzenie dokumentacji testowej
Nie nalezy siq spodziewac,2e ze wzglqdu na pewien staly szkielet plan test6w bqdzie
wyglqdal tak samo w roznych organizacjach czy nawet w roznych projektach w obrq-
bie jednej organizacji. Przeciwnie, zazwyczaj da siq wskazac istotne niejednolitoSci
w konstrukcli planu. Wynika to z odmiennego podej6cia do projekt6w, specyficznych
wymog6w prawnych dla niektorych branz, a nawet ze struktury organizacyjnel firmy
PoniZej zaprezefitowano schemat przykladowego planu test6w, kt6ry moZe by6 wyko-
ruystry any w komercyjnych projektach.
Plan test6w projektu [Nazwa]
I Cel dokumentu
W tym punkcie nale|y opisa6 cel stworzenia dokumentu, a tak2e wskaza6 projekt,
kt6rego dotyczy.
il Przedmiot i zakres
Nale2y wskaza6, co jest celem test6w, oraz wymieni6 elemenry kt6re bgd4 testowane.
W ty- punkcie mo2e siE znaLeil( np. opis informuj4cy o tym, 2e zostan4 sprawdzone
interfejsy i nowe funkcjonalno6ci, procesy biznesowe; moLnatakLe zamieSci6 informa-
cjg o tym, czy przeprcwadzone bqd4 testy regresji (je6li tak, naleLy poda6 ich zakres).
m Terminologia
Zawiera v,rykaz definicji pojgl rtlytych przy tworzeniu dokumentu, np.:
,160
5.1. Plan testow
Zwro6 uwagg, ze czgsto osoby biorqce udziat w projekcie nie majq wiedzy z zakresu
wytwarzania oprogramowania, dlatego warto tlumaczyc nawet te pojgcia ktore dla Cie-
bie sq oczywiste.
Zachowal kolelnoSc alfabetycznq dziqki temu osoba czylajqca dokumentacjq szyb-
-
ciel odnajdzie poszukiwany termin
V Opis postgpowania
1. Informacie wstgpne
a) Dokumenty powi4zane
W tabeli 5.2 naleLy wskaza6 wszystkie dokumenty, kt6re
s4 zwi4zane z projektem
(harmonogram, zestawienie wyma gafl dotycz4cych danych, zestawienie wymagari
dotycz4cych Srodowiska itp.).
161 n
(_l
Rozdzial 5. I Tworzenie'dokumentacji testowej
b)
Zalo\enia i ograniczenia
Nale2y wymieni6, jakie typy test6w bgd4 przeprowadzone, np. weryfikacji gotowoSci
kodu, konfiguracji oprogramowania, migracji danych, regresji, akceptacyjne, po wdro-
zeniu na produkcjg (sruoke testy).Trzeba tez opisa6, jak bgd4 realizowane zaleLnoSci
od innych projekt6w.
Nale2y takze wskaza6 na powi4zania z komponentami, kt6re mog4 mie6 wptyw na
testowany projekt, rlp. poprzez wsp6lne Srodowisko testowe.
o Zakres test6w
Nalezy wskaza6 zakres test6w zgodnie z dokumentacj4 projektow4 i zaloileniami pro-
jektu.
o Rodzaie przeprowadzanych test6w (przyktadowe tabela 5.3).
-
Tabela 5.3. Rodzaje przeprowadzanych testow
Rodzaj test6w Planowane Uwagi
(TAKiNIE)
o162
li'-r
5.1. PIan testow
d) Potrzeby szkoleniowe
Przykladowowa$ztaly z architektami i kierownikami projekt6w. Dotyczy to wszystkich
projekt6w w ramach Scie2ki wdro2eniowej. Opr6cztego warto przeprowadzi(warsztaty
dla pracownik6w obslugi klienta, na kt6rych to wa$ztatach zaprezerrtujemy im nowe
funkcje aplikacji, nowe ekrany itp.
e)Kryteria rczpoczEcia, zawieszenia i zakoiczenia test6w
Nale2y opisad kryteria rozpoczgcia, zawieszenia i zakoiczenia test6w.
Przyklad.5.2
Kryteria tozpoczgcia test6w: przygotowane Srodowisko testowe, zanonimizow an a baza
danych (dane osobowe s4 przeksztalcone, niemo2liwe do odczytu pierwotnej wartoSci).
Kryteria zawieszenia test6w: niedostqpnoS6 Srodowiska testowego przypadaj4ca na
okres dfu2szy ni2 jeden dziehroboczy, brak osoby do wykonania test6w akceptacyjnych.
1 63 i-r
Rozdzial 5. I Tworzenie dokumentacji testowej
-11q4
r-)
5.2. Scenariusze testowe
/l
5.2. Scenariusze testowe
V-- r---
T
W dobie ci4glego monitorowania r.tykony.wanej pracy oraz pomiaru jej jakoSci scena-
riusze testowe s4 pewnego rodzaju dowodem, ze podczas test6w system zachowal sig
w okreSlony spos6b. Tawiedza jest niezbgdna dla wielu grup:
o programist6w,
o tester6w,
. zamawiai4cych rozwi4zania systemowe.
Na pocz4tku wyja6nimy, czym iest scenariusz testouy, a nastgpnie przedstawimy rolnic1
pomigdzy scenariuszem testowym a przypadkiem testowym.
Scenariusz testowy (ang. test scenarro) zbior przypadkow testowych, czyli krokow
-
sluzqcych do sprawdzenia danel funkcjonalnosci systemu.
Przyklad 5.3
FunkcjonalnoS6: logowanie do systemu.
W tej funkcjonalno3ci naleLy utworzyt. osobne przypadki dla poprawnego i niepopraw-
nego logowania (tzn. przy :uLycitt poprawnych i blgdnych danych).
165 ,
Rozdzial 5. I Tworzenie dokumentacji teslowej
Scenariusze testowe mog4bya wykonywane pruez osoby, kt6re nie miaty stycznoSci
zprac4w dziale IT. Podczas test6w akceptaryjnych czgsto o wykonanie pewnych czyn-
no6ci testowych proszone s4 osoby pracuj4ce w dzialach operacyjnych (np. obsluga
klienta, sprzedaL),kt6re nie maj4wiedzy o projekcie ani umiejEtno6ci technicznych. Im
dokladnieiszy scenariusz, tym mniej pytafi od takich os6b. Je2eli testy bgd4 wykonylvane
przez osoby zwewn4trz organizacji, mo2emy sobie pozwoli(. na przypadki wysokiego
poziomu. Zaoszczgdzamy wtedy czasfla szczeg6lowe rozpisl..wanie ka2dego z krok6w.
Przyklad 5.4
w tabeli 5.8 prezentuiemy przypadki niskiego i wysokiego poziomu dla naszego przy-
kladu dotyc z4cego logowania.
Tabela 5.8. Przypadki niskiego iwysokiego poziomu
iJroo
r)
5.2. Scenariusze testowe
Warto zwr6cie uwage nato, ze pruypadki \ ysokiego poziomu s4bardziej og6lne iw prze-
ciwieristwie do przypadk6w niskiego poziomu nie wymieniaj4szczeg6lowo wszystkich
sytuacji, jakie mog4 nast4pi6 podczas pr6by logowania. Jest to spowodowane tym,
2e takie przypadki s4 realizowane przez osoby, kt6re posiadaj4 niezbgdn4 wiedzg i s4
Swiadome czynnoSci, jakie trzeba przeprowadzi{ aby pomySlnie zakoiczye rcsty.
167 ,
i-
Rozdzial 5. I Tworzenie dokumentacji testowej
ZaBadzani€ platfoma
TaE4dzas je plaraDri test{iw
ZaEAdzari€ spf z€ten testowlm
ZauEdknie e,?daniam;
168
5.2. Scenariusze testowe
16e i: _,'
ai"
1ozdzial 5. I Tworzenie dokumentacji testowej
;E -i
Qperacje na ?estawach I r,t
Operacje na Frzypadka6h ''w + L:1|t)I
''itl, -.
r: ,:,nrlr] l z;zr.:cz, tb! p., xali5if;i! ikllalitgg; i.:tpadliu iegtllregs, o{ E:! ltilraElr rur!,
Tytul
ael testu
itete,m
tBiu jst lprarydzeni* papramoicj drjalafia fierhanirma 1ogrwaila. I
r'/arunki fqzatkor'e
i
ekranie :ogowanla
Kliknii przycisk Utw6rz. Nastgpnie wybierz utw(trz ftrok i wprowad2 treSt przypadku.
170
5.2. Scenariusze testowe
Zastan6w sig, czy bqdziesz pisac przypadek wysokiego, czy niskiego poziomu, Pamig-
taj, ze osoba, kt6ra ma wykonywad zaprojektowany ptzez Ciebie przypadek, powinna
wiedzie6, co ma robi6, na podstawie opisanych przez Ciebie krokow.
Wli*nnaj testy
Tesiy prz,;pi:arre ir r:lrie
Rapsfty l metry.,ki te5tdw :
Statystykt cgoIne
{yTeStl i.k I d
arudzikfaomin]
.fi ..; .^ I e d I ;;: - !l ftoiddra.bqqi:,tr=er -.-
i wr&nt:01.01 (5lit.6)
:--+[--------:;=;]l o( 1 -orr .D 4.
iS 'S :* I r+: r6srye6 ni4'dme tvlt
.'l s ,
171 (.:
.------.-'
Rozdzial 5. I Tworzenie dokumentacji testowej
a-N
L. r5.3. Lista kontrolna
Lista kontrolna (ang. checklist) to narzqdzie umo2liwiaj4ce kontrolg poprawnoSci i/lub
ocenq stopnia ukoriczenia danego przedsigwzigcia. Lista sklada sig z serii pytari lub
zagadnieh dotycz4cych projektu. Skutecznos6 listy zaleLy od iej zloilonoSci. Im bardziej
szczeg6lowe s4 zagadnienia lub pytania, tym wigksza jest jej skuteczno66.
(,:ttz
-*
-[I
5.3. Lista kontrolna
M Utworzenie konta
M Walidacia obligatoryinoici p6l w kwestionariuszu
V Zgody marketingowe
d Autoryzacia 5M5
V Autoryzacia e-mail
d Odzyskiwanie hasla
M Wysytanie wiadomoici
fl Czat z Biurem Obstugi Klienta
M Wysylanie wiadomoici
M Usuwanie konta
173 f-';
Rozdzial 5, I Tworzenie dokumentacji testowej
(-r,,
- 5.4. Rejestr ryzyk
Rejestr ryzyk jest dokumentem v{ytwarzanym we wczesnym stadium projektu, zazwy-
czai dostarczaj4 go osoby odpowiedzialne za zarz4dzanie projektem, tzw. kierownicy
projektu.
Rejestr ma gl6wnie na celu zwr6cenie uwagi wszystkich zaangailowanych os6b na
czynniki, kt6re mog4 by(. zagroLeniem dla terminowej realizacji projektu, jak r6wnie2
dla jakoSci wtwarzafiego produktu. Dokument pozwalaprzy+otowac sig na potencjal-
ne ryzyka orazwczeSnie na nie reagowad. Przyklador,uy rejestr pokazano w tabeli 5.9.
Tabela 5.9. Przykladowa budowa rejestru ryzyk
T\
Raport btgdow
-K5-5.
W test6w
czasie wiele blEd6wzglaszanych jest niekt6re z nich s4 naprawiane od razt,
- wersjach programu. Raport blEd6w
inne zostaj4 przetoione do rcalizacji w kolejnych
jest narzgdziem o charakterze informacyjnym pomaga ocenid jakoS6 wytwarzanego
-
rozwi4zania i czas napra\\ry przez zesp6l programist6w.
Taki raport powinien zawierut niezbgdne informacje (tabela 5.10), kt6re dadz4zaintere-
sowanym pelny obraz aktualnej sytuacji, bez konieczno6ci logowania sig do narzEdzia
zarz4dzaj4cego btgdami, np. Jira.
lro
--Tr
5.6. Baport testow
I Cel dokumentu
W tym punkcie nale2y opisa6 kr6tko cel raportu kofrcowego z test6w. Przykladowo:
I'liniejszy raport koitcowy test6w akceptacyjnych powstal w celu pctinformowania wszystkich
zaanga2owanych w projekt o statusie wykctnanych proc, a takie ct jakoici wytworzonego
oprog'ramowania.
Dokument obejmuje:
o Podsumowanie wykonania scenariuszy testowych (tabela 5.11).
Tester 2 98 98
Tester 4 24 24
Liczba bl9d6w 0 7 t4 21
ze statusem
,Ptwarty"
395 30 44 469
o Zakres test6w.
III Terminologia
Zawierawykaz skr6t6w i definicje u2ywanych poig6.
IV Obowi4zki, odpowiedzialnoS6 i uprawnienia
Zawiera opis obowi4zkow przypisany'ch do stanowisk, ktore bior4 udzial w tworzeniu
raportu kofrcowego z test6w.
,a-)176
- -r\"
5.6. Raport testow
V Opis postgpowania
1 . Dokumenty powi4zane z Raportem koltcowynr z test6w
Przykladowo: plan test6w, dokumentacja projektowa, wymagania biznesowe
(tabela 5.14).
ID Dokument
w1':
C,*
Rozdzial 5. I Tworzenie dokumentacji testowej
o tyzyka
(nale2y wskaza6 takie ryzyka, jakie byly podane w planie tesr6w tabela 5.16).
-
Tabela 5.16. Opis rodzajow ryzyka, ktore polawity siq w planie testow
ID Opis ryzyka Wykonane dzialania Bie24cy status ryzyka
zapobiegawcze
('i178
l
'."*?:-
5.7. Zadania
/l'
1'--T 5.7. Zadania
Zadanie 5.1
Wymieri elementy, zkt6rych sklada sig plan test6w.
Zadanie 5.2
Podaj r62nic9 pomigdzy scenariuszem testowym a przypadkiem testowym.
Zadanie 5.3
Jak czEsto powinien bye akttalizowany plan test6w?
Zadanie 5.4
rJtw6rz scenariusze testowe do dowolnie wybranej przez siebie strony internetowej,
nastEpnie przekaL je innej osobie do wykonania. Po wykonanht zadania sprawdZcie
razelm wyniki test6w Upewnij sig, czy Twoje opisy krok6w zostaLy poprawnie zinter-
pretowane.
Zadanie 5.5
Wyobrai sobie, 2e otwierasz sklep internetowy. Stw6rz wlasn4 listg kontrolt4, a na-
stEpnie przeka| j4 do sprawdzenia innej osobie. Zwr6C uwagq, ile czynno6ci zostalo
pominiqtych.
Zadanie 5.6
Wykonaj testy urybran ej przez siebie strony internetowej, a nastEpni e sporz4di raport
blgd6w. Pamigtaj o zachowaniu dobrych praktyk przy tworueniu zgloszenia.
179f"t
---rf-
Rozdzial 5. I Tworzenie dokumentacji testowej
a'i180
{.)
,"Metodol og ei
prowadzen la', t.......-...''-...-.
projektu
Obecnie technologie rczwijaj1sig w bardzo dynamicznym tempie. Wiele projekt6w jest
realizowanych z powodzeniem, lecz niemal tyle samo koirczy sig pora2k4. Dlaczego
tak sig dzieie?
KaLdy z czytelnik6w potrafilby zapewne poda6 kilka powod6w, jednak gl6wne przy-
czyny s4 dwie: czynnik ludzki i pieni4dze. Odpowiednie zaru4dzanie projektem to
odpowiednie zarzEdzanie zespotem. Pieni4dze pomagaj4 w naszych dzialaniach lub
ograniczaj4 je
Dlatego bardzowalrry jest dob6r odpowiedniej metodologii prowadzenia projektu, czyli
zbioru zasad i dobrych praktyk, wedlug kt6rych zesp6l projektowy bgdzie rcalizowal
swoje zadania. Zar6wno dla testera, jak i programisty wiedza o stosowanym modelu,
w kt6rym wytwarzane jest oprogramowanie, jest niezbgdna do wlaSciwego planowania
swojej pracy
W podrEczniku zawarto og6lne wzory metodologii prowadzenia projektu. Jednak warto
wiedzie6, 2e (;wiat IT rzadko przyjmuje i wdraLa ie bez dostosowania ich pod kqtem
konkretnej organizacji. Niemniej najpierw trzebapoznae podstawy, aby opieraj4c sig
na nich, m6c p62niej wyrobi6 sobie wlasne zdanie o ka2dej metodologii.
W niniejszym rozdziale pozrtasz metodologie wykorzystywane najczqSciej w prowadze-
niu projekt6w. Zewzglgdu na obszernoS6 tematu w tym podrgczniku zostaly zamiesz-
czone na j istotnie j sze informacj e oraz przyklady.
181 i
'1-
Rozdzial 6. I Metodologie prowadzenia projektu
(-t,
lr.-6.1. Model kaskadowy
Model kaskadowy (ang. waterfal/) jest modelem sekwencyjnym, kt6ry sklada sigz eta-
p6w nastgpuj4cych kolejno po sobie Potocznie m6wi sig, 2e to model tradyryjny
czyli przewidywalny, oparty na przejrzystych zasadach. Moie by6 realizowany przez -
wiele zespol6w, kt6re dzialaj4niezaleLnie od siebie, przez co jest nara2ony na blgdy
komunikacyjne.
Sk4d sig wzigLa rtazwa,,kaskadowy"?
Chodzi o sekwencyinoSi kolejnych faz projektu. Etap pierwszy musi zosta6 formalnie
ukoriczony, aby moLnabylo przejsC do rcalizacjikolejnego. Po zakoitczeniu jednej fazy
schodzimy ,,w d6l?' do kolejnej, co doskonale wida6 na rysunku 6.1. To wlaSnie przez
ten schemat model zyskal nazw e,,kaskadowy".
Rysunek 6.1.
Schemat modelu Wymagania
kaskadowego
Projektowanie
lmplementacja
Testowanie
Wdro2enie
) 182
6.1. Model kaskadowy
Przyklad 6.L
2e w fazie implementacji wykryto wiele niezgodno6ci zistniej4cym|uL
Wyobrat sobie,
systemem gl6wnym. Zgloszono du2o blgd6w i uwag do dokumentacji. Okazalo sig, 2e
uprawnienia, kt6re mialy zostae zaimplementowane, vtykhrczai1wiele istniej qcychittz
16l w systemie Wszelkie prace wytw6rcze na tym etapie zostaly wstrzymane. Projekt
wr6cil do fazy v'rymagah, czego efektem bylo ich zmodyfikowanie Takie dzialania, kt6re
zmuszaj4 zespoty do wstrzymania prac b4di cofnigcia siE do wczeSniejszych etap6w,
wi424sig z ogromnymi kosztami dla klienta. Czy moilna bylo unikn46 takiej sytuacji?
Oczywi6cie. Nie naleZy bagatelizowa6 tworzenia, zbierania i analizy wymagah- Gdyby
dokumentac ja byla szczeg6low a, a wymagania przemy3lane i uwzglgdnia j 4ce istnie j 4ce
juL rozwi4zania systemowe, to taka sytuacja by sig nie zdarzyla.
183 r' )
Rozdzial 6. I Metodologie prowadzenia projektu
Przyklad6.2
MetodE delfick4 stosujemy w gruncie rzeczy na co dziefr, pytaj4c o poradg nauczyciela
lub udaj4c siE do lekarza w celu uzyskania diagnozy na podstawie opisanych objaw6w.
W obu tych przypadkach nie jest wskazane opieranie siE na opinii os6b, kt6re nie s4
ekspertami. Zazwyczaj takLe
- z wyj4tkiem bardziej skomplikowanych sytuacji - nie
ma potrzeby odwolywania sig do zdania wiEkszej liczby specjalist6w.
. Analiza punktow funkcyjnych (FPA, ang. Function Point Analysis) szacuje praco-
chlonnoSc prac nad r6znymi elementami programu, takimi 1ak,
()184
o
6.1. Model kaskadowy
185r l
:)
Rozdzial 6. I Metodologie prowadzenia projektu
Gt6wnym celem realizacji prototypu jest szczeg6lowe okre6lenie wymagari, tj. wykrycie
i unikniEcie:
a nieporozumieri pomiEdzy klientem a tw6rcami systemu;
a brakuj4cych funkcji;
o trudnych,wrqczniewykonalnych uslug;
o brak6w w specyfikacji wymagari.
Prototyp nie lest czgsciq przyszlego pelnego systemu. Jest raczej zapowiedziq tego,
co pelny system bgdzie zawierac. W momencie akceptacji prototypu przez klienta
zesp6ldeweloperski przystgpuje do prac nad peinym systemem,
*uu
6.2. Metodyki zwinne
Wedlug Manifestu Agile zazwyczaj docenia siE to, co wymieniono po prawej stronie
tego zestawienia, jednak bafiziei powinno sig ceni6 to, co wymieniono po lewej.
Rzadko wspomina sig o dwunastu zasadach Agile, kt6re powstaly na skutek publikacji
Manifestu. To bardzo waLnewskaz6wki dla ka2dego, kto chce wdro2yd metodyki zwinne
w swojej pracy Oto te zasady:
1. Najwy2szy priorytet ma dla nas zadowolenie klienta dzigki wczesnemu i ci4glemu
wdrazaniu warto6ciowego oprogramowania.
2. Bqd1cie gotowi nazmianywymagait nawet nap6inymetapie jego rozwoju. Procesy
zwinne wykorzystui4 zmiany dla zapewnienia klientowi konkurencyjnoSci.
3. Dostarczajcie funkcjonuj4ce oprogramowanie czgsto, w kilkutygodniowych lub
kilkumiesiEcznych odstqpach. Im czg6ciej, tym lepiej.
4, Zespolybiznesowe i deweloperskie musz4 SciSle ze sob4 wsp6tpracowa6 w codziennej
pracy przez caly czas trwania projektu.
5. Tw6rzcie projekty wok6l zmot),wowanych ludzi. Zapewnijcie im potrzebne Srodo-
wisko oraz wsparcie i zaufajcie, ze r,qrkonaj4 powierzone zadanie.
6. Najbardziej efektywnym i wydajnym sposobem przekazywania informacji zespolowi
deweloperskiemu i wewnAtrz niego jest rozmowa twaru4w twarz.
7. oprogramowanie j est podstawow 4 miar1 po stgpu.
D zialaj 4ce
8. Procesy zwinne umo2liwiaj4 zr6wnowa2ony rczw6j. Sponsorzy, deweloperzy oraz
u2ytkowniry powinni by6 w stanie utrzymytvae r6wne tempo pracy
9. Ci4gte skupi6nie na technicznej doskonalo6ci i dobrym projektowaniu zwigksza
zwinnoS6.
1O. Prostota sztuka minimalizowania ilo6ci koniecznej pracy jest kluczowa.
- -
11. Najlepsze rozwi4zania architektoniczne, wymagania i projekty pochodz4 od
samoorgani n\4qch sig zespol6w.
12. W regularnych odstgpach czasu zesp6l analiz:uje mo2liwoSci poprawy swojej
wydajno6ci, a nastgpnie dostraja i dostosowuje swoje dzialania do wyci4gnigtych
wniosk6w.
Zalety Agile:
. elastyczne podejScie do zakresu zmtan i ich akceptacji;
. koncentracja na dostarczanej wartoSci zamiast na zakresie prac;
. stosowanie krotkich iteracji oraz weryfikacji po kazdej z nich,
. wzmacnianie samodzielnoSci i odpowiedzialno6ci zespolu.
187 {_)
---"4-
Rozdziat 6. I Metodologie prowadzenia projektu .
6.2.1. Scrum
Scrum to metodyka o charakterze iteracyjnym orazpruyrostowym, zaliczana do zwin-
nych metod pracy zgodnych z Manifestem Agile Jest to taki spos6b prowadzenia pro-
jektu, kt6rego celem jest osi4gnigcie zamierzonego reztltatti panowanie nad zmianami.
Idealnie wpasowuje sig w mlode, male organizacje typu start-up (rozpoczylaj4ce swoj4
dzialalnoS6).
Na podstawie rysunku 6.2 om6wione zostanA teraz narzgdzia, pruktyki oraz spos6b
zarz4dzania projektem realizowanym w Scrumie.
Codzienny Scrum
r@
i,#
lii
GT
-
Rysunek 6.2.Zarzqdzanie projektem w Scrumie
.I1BB
'..1:
{)
6.2. Metodyki zwinne
DlugoSd iteracji nie ulega zmianie Jezeli przyjgto, ze sprint trwa 4 tygodnie, to ten za-
kres czasu jest ostateczny.
Jezeli zadanie nie moze by6 ukonczone w czasie sprintu, odpowiednie cechy produktu
sq dzielone i zadanie wraca do backlogu produktu, Technika ta nazywa sig ogranicza-
niem czasowym (ang timeboxing)
Przyrost produktu
Wynikiem kaZdego sprintu jest produkt, kt6ry potenc,alnie moLnawdrozye (nazywany
przyrostem).
Reiestr (ang. backlog) produktu
Wla6ciciel produktu zarz4dza spriorytetyzowanq list4 planowanych pozycji do zreali-
zowania (nazywan4backlogiem produktu). Zadania produktu zmieniaj4sig od sprintu
do sprintu (nazywamy to udoskonalaniem backlogu produktu).
Reiestr (ang backlog) sprintu
Na pocz4tku ka2dego sprintu zesp6l scrumowy wybiera z backlogu produktu zbi6r
pozycji o najvryLszym priorytecie (nazwa tego zbioru to backlog sprintu). Poniewa2
to zesp6l scrumowy, a nie wlaSciciel produktu wybiera pozycje do realizacji podczas
sprintu, wyb6r nawi4zuje raczej do zasady pobierania (wedlug kt6rej czlonek zespolu
przydziela sobie zadania sam) ni2 do zasady wpychania pracy (zadaniaprzydzielane s4
odg6rnie i realizowane wedlug nadanego priorytetu).
Definicja ukoficzenia (ang. Definition of Done)
By siE upewnie,2e na koricu sprintu uzyskany zostanie produkt nadaj4cy siE do wdro-
zenia (sprawny ,,kawalek" produktu), zesp6l scrumowy przedyskutowuje i okreSla
odpowiednie kryteria ukoficzenia sprintu. Dyskusja poglgbia zrozumienie przez zesp6l
poszczeg6lnych pozycji z backlogu i wymagari dotycz4cychproduktu.
1Bg i--
Rozdzial 6. I Metodologie prowadzenia projektu
Raportowanie
Status sprintu jest raportowany i uaktualniany codziennie w czasie spotkali nazywanych
codziennym Scrumem, dzigki czemu zawartoSe i postgp biez1cego sprintu
wyniki test6w - a takLe
s4 dostgpne dla zespolu scrumowego, os6b zarz4dzajqcych i innych
-
zainteresowanych. Na przyklad status sprintu mo2e by6 pokazywany na bialej tablicy
suchoScieralnej.
Scrum Master nie jest liderem zespotu, a trenerem (ang coach) Daje tylko wskazowki
i doradza zespolowi, aby wybralwlaSciwq drogg technologig czy zastosowalwlasciwq
metodq, Nie deleguje pracy, nie planuje projektu, araczel dba o to, aby zespoi spelniat
wszystkie kryteria, by osiqgnq6 okreSlone przez siebie cele
o (i1e0
6.2. Metodyki zwinne
Historyiki u2ytkownika (ang. User Stories) maj4na celu skupienie sig na realnymuzyt-
kowniku systemu i na zaspokojeniu jego potrzeb. Zmtszaj4 autora do zastanowienia
sig nad tym, jakie rozwi4zaniebgdzie najlepsze dla u2ytkownika.
';
191 :'
Rozdzial 6. I Metodologie prowadzenia projektu
Koncepcja 3C (autorstwa Rona Jeffriesa) mowi, z jakich czg6ci powinna skiadac sig
historyjka. Sq to:
. Karta (ang. Card) lub fiszka, na ktorej zapisano historyjkq. Stanowiq one fizyczny
odnosnik do wymagania,
. Dyskusja (ang. Conversation) natemat szczegot6w.
. Potwierdzenie (ang Conft rmation) dzigki testom akceptacylnym, kt6re potwierdzajq
implementacjg z punktu widzenia biznesu.
Przyklad,6.3
WtaSciciel produktu zdefiniowat wymagania dotycz4ce aplikacji sklepu internetowego.
Poni2ej przyklad jednej z historyjek uzytkownika.
)192
6.2. Metodykr zwinne
6.2.2. Kanban
Kanban jest metodykE wywodzqcE sig z Toyota Production System (metody zarzqdzania
produkcjq stosowanej przez wiele firm w Japonii oraz na calym swiecie). Nazwa ,,kan-
ban" w jqzyku japohskim oznacza tablicq informacyjnq. Jej celem jest wizualizacja i op-
tymalizacja przepiywu pracy w lancuchu wartosci dodanej (ang. a value-added chain).
Kanban sktada sig z pigciu zasad:
. Zobrazuj przeptyrru pracy,
. Ogranicz WIP (ang. Work in Progress)
. Zarzqdzaj p rze p'lywe m.
. Ustal wyra2ne zasady.
. Wspolnie ulepszaj.
Przyklad.6.4
Zal62my,2e pracujemy nad aplikacj4 sklepu internetowego. Tablica kanbanowa pro-
jektu moglaby wygl4da6 tak jak tapokazana na rysunku 6.3. Jak wida( zesp6l pracuje
obecnie nad modulami odpowiedzialnymi zarejestracjgoraz konto klienta. Zadania ju2
wykonane to opracowanie konfiguracji konta klienta i czESci aplikacji przechowuj4ce;',
aktualizuj4cej i udostgpniaj4cej informacje o liczbie dostgpnych produkt6w. Wci42
pozostalo calkiem sporo do zrobienia.
2. Limit pracy w toku (ang. Work in Progress). Liczba r6wnolegle wykonywanych
zadafi jest SciSle ograniczona. Jest to kontrolowane przez ustalenie maksymalnej
dozwolonej liczby kartek na danym etapie lub globalnie na tabliry Gdy na danym
etapie na tablicy pojawia sig wolne miejsce, pracownik przesuwa kartkg z wczel-
niejszego etapu.
3. Czas realizacii (ang. Lead Time). Metodyki Kanban uLywa sig do optymalizacji
ci4glego przep\'wu zadafiprzezminimalizacjg (Sredniego) czasurealizacji dla calego
laricucha warto6ci. Kanban wykantje pewne podobieristwo do Scruma. W obu
podejSciach wizualizacja aktywnych zadafi (np. na dostgpnej dla wszystkich tab-
licy sucho6cieralnej) zapewnia przejrzystoS( zawartoilci i postgpu zadafl. Zadania
193 :
RozdZal 6. I Metodologie prowadzenia projektu
194
6.3. Zestawienie metodyk pod kAtem roznic
6.2.3. Scrumban
Scrumban jest hybryd4 lzyskan4zpol4czenia struktury Scrum z metodami Kanbana.
Jest rekomendowan4 metodyk4 dla zespol6w, kt6re chc4przejit od formy pracy wlaS-
ciwej dla Scruma do Kanbana. Obecnie jest to najpopularniejsza metodyka zwinna.
Wiqcej informacji o niej znajdzieszw rozdziale 7.
195 r
Rozdzral 6. I Metodologie prowadzen a projektu
(--r-
v. 16.4. Zadania
Zadanie 6.1
Jakie s4 wady testowania w modelu kaskadowym?
Zadante 6.2
W jakich projektach sprawdzi siE dobrze model kaskadowy?
Zadanie 6.3
Jakie role urystEpuj4 w zespole scrumowym?
Zadanie 6.4
Kto jest liderem zespolu scrumowego?
zaoante ei.5
Wyrniei czq6ci, z jakich powinna siE skladaC historyjka u2ytkownika (wedfug koncepcji 3C).
.)1e6
'*r)
6.4. Zadania
Zadanie 6.6
Wymiefi wartoSci, o kt6rych m6wi Manifest Agile
Zadanie 6.7
Przygotuj wlasn4listg Kanban w rrarzgdzirt Trello. Zaplanaj w niej wszystkie zadania
zwi4zane ze szkol4nanajbliilsze 30 dni.
Zadanie 6.8
Jakie elementy Kanbana znajdziesz w metodyce Scrumban?
197i-
' a,'*"
Rozdzial 6. I Metodologie prowadzenia projektu
aleB
(.-)
'od pomys IU,
_po.wdr ozenre
,zretosowa
zd)bytqfwt;edry
Realizacja projektu od pocz4tku do korica to praca dtuga i wymagaj4cazaangazowania.
Niezale2nie od czasu trwania projektu liczbaprzypisanych do niego pracownik6w mo2e
przekraczae nawet sto os6b! Dlatego wa2ne jest, aby ka2dy czlonek zespolu projektowego
znal swoj4rolE, sw6j zakres obowi4zk6w i odpowiedzialnoSci. Du2y nacisk kladzie sig
na komunikacjg i przestrzeganie dobrych praktyk. Ze wzglgdu na dynamiczne tempo
pracy zaklada sig, 2e czlonkowie zespolu znaj4 podstawowe zasady rcalizacji zadaft
w ramach swoich kompetencji. wprowadzenie nowych czlonk6w do zespolu polega
na kr6tkim zapoznaniu ich ze wsp6tpracownikami i pokazaniu, na kt6rym etapie
projektu jesteSmy. Bardzo waLne jest jak naiszybsze wdro2enie nowych pracownik6w.
W zwiqzktr z tym nie naleLy lekcewa2y6 wcze6niejszego zapozlania sig z teori4 jest
ona niezbgdna do plynnego przejscia do praktyki. -
Celem niniejszego rozdzialujest wyjaSnienie 16l poszczeg6lnych os6b i symulacja przej-
Scia procesu tworzenia oprogramowania, tak by jak najlepiej oddawala rzeczywisty
przypadek.
199
"-- -
.)
(:\-*
Rozdzial 7. I Od pomySlu po wdrozenie
-
praktyczne zastosowanie zdobytej wiedzy
(-1,
VF,1. Etap pierwszy pomysl i zapytanie
ofertowe
-
Pani Ania, pracrtj4ca w prlnvatnym przedszkolu ,,Skrzat",badaLa za pomoc4 ankiet,
jakich zajg(brak$e w plac6wce (ankietg ul,pelniali rodzice). Ankietowani wskazali na
zaigcia jgzykowe, pojawily sig teZ sugestie, 2e dzieci powinny zdobywaC tak4 umiejqt-
no66 jak orientacja w terenie. Pani Ania pomySlala, 2e Swietnym rozwi4zaniem byloby
wprowadzenie lekcji jqzykowych w formie zajqt interuktywnych.
Wychowawcrymi zglosila dyrekcji przedszkola zapotrzebowanie na zakup ustugi w firmie
informatycznej. Dyrekcja poprosila o sprecyzowanie, co dokladnie takie oprogramo-
wanie mialoby robi6 i na jakich uz4dzeniach dzialae, po czym zadeklarowala,2e na
podstawie uzyskanych informacji vrryi;le zapytania ofertowe do firm. Dodatkowo pomysl
zostalprzedstawiony na zebraniu rady rodzic6w. OczywiScie pojawily sig glosy, 2ebtdhet
molna przeznaczye na inne aktywno6ci, np. na dodatkowe zajgcia z integracji senso-
rycznej,lekcje tarica czy vnyiScia do kina jednak dyrekcja mocno bronila pomyslu.
-
Jak my6lisz, dlaczego?
, 200
w trakcie zajg(. przedszkolnych. Celem edukaryjnym opr6cz nauki jgzyka ma
-
by6 r6wnie2 orientacja w terenie. Proszg mie6 na uwadze, 2e dzieci nie potrafi4 jeszcze -
dobrze czytae, dlatego walne jest, aby sl6wka byty nie tylko wySwietlane na ekranie,
ale takZe odczytywane przyjaznym, spokojnym glosem".
Dlaczego to nie pani Ania wyslala e-mail do firm, choc pomysl byl 1ej i sama wiedzia-
la najlepiej co chce uzyskac, miala tez zgodq przelozonego na realizacjq projektu?
E-maile od przelozonego wyglqdajq bardziej profesjonalnie, a firmy chqtniej anga2u14
siq w przygotowanie oferty w odpowiedzi na zapytanie ofertowe skierowane pzez pra-
cownika wysokiej rangi
Na tym etapie projektu podstawowym zadaniem jest ustalenie szczeg6l6w takich jak
bud2et, technologie czy rczdysponowanie zadai w zespole.
Sp6jrzmy terazr,a problem z perspektywy pracownik6w firmy, kt6ra otrzymala e-mail
od dyrektora przedszkola.
Jak latwo sig domySli6, uznano, 2e opis z e-mailanie jest wystarczajqcy, aby przygotowaC
nawet wstqpnA \ ryceng. Zesp6l przygotowal wigc listg pytari:
1. Dla jakich ttz4dzeh przeznaczotTa jest aplikacja?
2. Ifu maksymalnie u2ytkownik6w bEdzie z niejkorzysta6 w tym samym czasie?
3. Ile ma trwae jedna lekcja?
4. Jaki jest poziom trudnoSci?
5. Czy aplikacja ma dzialae w trybie offline?
6. Czy u2ytkownicy bgd4 siE logowa6 do platformy?
Czqsto klrenci nie sq Swiadomi, jakzrealizowac to, czego potrzebujq, dlatego w odpowie-
dzi nazapylanie ofertowe poza pytaniami o szczegoly warto zamiescic kilka sposobow
rozwi4zania problemu najlepiej popartych przykladami wczesniej zrealizowanych
projektow -
1. Czy dostqp do stron mozna uzyskai tylko po zalogowaniu? JeSli tak, to czy do
wszystkich, czy tylko niektorych?
2u r.-)
ei_*
Rozdzial 7. r Od pomyślu po wdrozenie
-
praktyczne zastosowanie zdobytej wiedzy
UWAGA cd.
+ 2, Czy planowany system zabezpieczeń jest na tyle dobry, ze jego zlamanie nie jest pro-
ste? [Warto w tym miejscu dodaó, ze praktycznie nie ma systemow ktore nie moglyby
byc zlamane ,rrzeba stosować lakie zabezpieczenia, by naklad sil i środków do ich
zlamania byl zbyt duzy, zeby się to oplacaio potenclalnym hakerom, Lista nalpopu-
larniejszych atakow jest co roku uaktualniana przezorganizację OWASP (Open Web
Application Security Project)]
3. Czy login i haslo w bazle danych są zapisane w postaci zaszyfrowanej? Jeślitak to
jakich algorytmow szyfrujących uzyto?
4. Czy dostęp do bazy danych mają wszyscy zalogowani uzytkownicy, czy tylko ci, dla
ktorych ustawiono określone role?
UWAGA
Na tym klientowiwstępny, ale
prac kosztorys, często rozp isu;e się zadania na poszczególne
dla poszczegoInych osob w projekcie wyznaczone
dopiero po podpisaniu umowy lub iu przetargu,
202
7,2- Etap drugi oferta
DEFlNlcJA
klient-serwer (ang clientlsenter) to architektura systemu komputerowego, w szcze-
golnościoprogramowania, umoz|iwiająca podzial zadań. Serwer zapewnia uslugi dla
k|ientow (zazwyczal aplikacjizainstalowanych na komputerach uzytkowników; mogą byc
nimi nawet zwykle przeglądarki internetowe) zgIaszających do serwera ządaniaobslugi
(ang, servlce request), Glowną za|etą architektury k|ient-serwer jest Io, że przez siec
są udostępniane jedynie konkretne odpowiedzi na konkretne pytania a nie cale pliki
czy programy do wykonania lokalnego, jak to się odbywało w dawnych architekturach
serwerowych,
Pruykład,7.1
W tabeli 7.1, przedstawiono przykładową wycenę prac. Wspomniana w rczdziale 4.
liczba MD, określająca pracochłonność,jest nakażdym etapie mnożona przezliczbę
pracowników realizujących zadanie; na tei podstawie Wznacza się kwotę do zapłaty,
Robi się to w ten sposób, że całkowitą liczbę MD (widać ją w ostatnim wierszu tabeli)
mnoży sięprzez wynegocjowaną stawkę za dzień prary. W negocjacjach biznesowych
na wysokim poziomie nie rozdziela się stawki programisty od stawki analityka czy
testera. Zatem końcowa kwota projektu wynosiłaby 307 .wynegocjowana stawka.
Testy akceptacyjne 6 90
Testy regresji 7 6 42
Zapoznanie stę 6 30
z dokumentac j ą/aplikacj ami
J 9
-}
203
Rozdział 7, I Od pomyslu po wdrozenie
- praktyczne zastosowanie zdobytej wiedzy
+
Planowane prace Liczba MD Liczba testerów/ Suma MD zuwzględ,-
programistów nieniem liczby teste-
rówlprogramistów
Tworzenie dokumentacji _-) 1 3
(raportn podsumowania)
Testy wydajnościowe 2 2 4
Testy bezpieczeństwa 3 2 6
Prace programistyczne 30 3 90
Liczba MD 76 307
204
7,2. Etap drugi ofeńa
-
doŚwiadczenie). Wspiera ich analityk z wieloletnim doświadczeniem. Do dyspozycji
mają również zespół testerów z koorłnatorem testów.
Siedziba firmy znajduje się w innym mieście niż przedszkole.
Zdecydowano, że projektbędzie miał postać labiryntu, z którego będzie można wyjść
za pomocą komend tekstowych w języku angielskim,
Na spotkaniu z dostawcą usług zostaĘ ustalone następujące kwestie, które później
opisano w dokumentacji technicznej i merytorycznej;
1 , Celem współprary jest gotowy produkt aplikacja webowa o nazwie Labirynt,
w której przedszkolaki będą wpisywać -słowa w języku angielskim, wybierając
kierunek poruszania się.
2. Architekt zarekomendował, aby napisać aplikację webową w języku JavaScript,
zwykorzystaniem kodu HTML. Dzięki temu aplikacjabędzie mogła być urucho-
miona na tóżnych platformach.
3. Ustalono skład stałego zespołu projektowego (tabela 7.2). Oczywiściena poszcze-
gólnych etapach projektu będą się pojawiać role spoza poniższego zestawienia.
Odgrywający te role będą wykonywać swoje prace w węższymzakresie czasowym
niż ci,którzy wchodząw skład stałego zespołu.
Tabela 7.2. Zestawienie rol i czynności
Project Manager Podział zadań pomiędzy członków zespołu, organizacja czasu pracy
swojego i podwładnych, zakup produktów i usług niezbędnych do
rcalizacji projektu (np. oprogramowania, licencji, sprzętu), komu-
nikowanie się z klientami i członkami zespołu, kontrola jakości
wykonywanych zadan pro j ektowych, zat ządzanie budżetem pro j ektu,
ocena ryzyka związanego z realizacią pro|ektu.
product owner Przygotowanie wizii produktu, ptzeptow adzanie badań rynkowych
w grupie wiekowej zbliżonej do grupy docelowej, zatządzanie backlo-
giem produktu, porządkowanie elementón, backlogu.
205
Rozdział 7. I od pomysłu po wdrozenie - praktyczne zastosowanie zdobytej wiedzy
UWAGA
Liczba rol powolanych w projekcie jest zalezna nie ty|ko od wybranej metodyki, ale tez od
dostępnych zasobow ludzkich, jak rowniez od budzetu klienta (zamawiającego uslugę)
206
7.3, Harmonograrn prac
. Harmonogram prac
Ptace zaplanowano w trzech sprintach, każdy z nich ma trwać dwa tygodnie. W zesta-
wieniu (tabela 7.3) widnieje ponadto sprint 0. (jeden Ędzień) jest to czas na robo-
-
cze spotkania, przygotowanie sprzętu, przekazanie wszelkich informacji o projekcie,
zapoznanie się członków zespołu itp.
Cel sprintu: zapozna- Cel sprintu: uzyska- Cei sprintu: do- Cel: oddanie całej
nie się ze stosowanymi nie widoku z obiek- danie ścian w la- aplikacji spełnia-
tozwl,ązaniami i apli- tem oraz sterowanie biryncie i obsługa jąceI wszystkie
kacjami. nim za pomocą ściann początku warunki okreśIone
wpisanego słowa. i końca labiryntu. w wymaganiach.
Tester wydajnościo-
wy: testy wydajno-
ściaplikacji.
207
Rozdział 7, r Od po wdrozenie praktyczne zastosowanie zdobytej wledzy
-
7.4.1. Sprint O.
W ramach prac nad tzw. sprintem zerowym niezbędni będą specjaliścispoza stałego
zespołu projektowego. Po zapoznaniu się z koncepcją rozwiązania UX designer przy-
stępuje do realizacji makiet. Makiety mająza zadanie przedstawić w graficznej postaci
propono\^/ane rozwiązanie wraz z kompletną kolorystyką i nazewnictwem.
ClEKAW(,STKA
UX designer to osoba odpowiedzialna za zbadanie potrzeb potenclalnych uzytkownikow
aplikacji, dowiedzenie się, czego wlaściwie oczekują, i doprowadzenie do dostarczenia
produktu o obsludze intuicyjnej, realizowanej naturalnie, wręczbezchwiIizastanowienia.
Zajmuje się więc projektowaniem zorientowanym na czlowieka ijego potrzeby.
Realizacja kroku:
Left
Ri9 ht
Up
Down
Obraz labiryntu
20B
7.4. 1ealizacja prac projektowych
Tylko}łcie.głażedio9t.tr|,zókiu.lizoBón.
" o*
ffifi_.,
Ę
!Ź spróvdz€n]€ stcMś.i splżęi! mobibp ug l 1
§ Pl;ygctowani. lirty kontolnej lł z t
& Rs]]z..,]a o!6dżeria Png ! kdne lp,l 1
] ż!i:]:ż:l. asż..c{.i]. !
- TabltasPriŃ3 ].dll!łij,
209
\ozdziaI 7, r Od pomystu po wdrozenie
- praktyczne zastosowanie zdobytej wiedzy
7.4.2. Sprint 1.
Kolejnym etapem jest sprint pierwszy. Programiści przystępują do tworzenia oprogra-
mowania, a testerzy przygotowują scenariusze testowe
uzyskanych od analityka i Product Ownera_
- na podstawie informacji
Efektem zakończenia sprintu ma być uzyskanie widoku obiektu, który przemieszcza
się w dwu kierunkach: w lewo albo w pfawo po wpisaniu odpowiednio słowa
leftlub right. - -
Podczas prac proglamistycznych pojawił się problem
- mianowicie obiekt ,,przecho-
dziŁ" ptzez ścianylabiryntu. Programiści musieli opracować algorytm, który realizował
to zadanie.
Na tym etapie stwierdzon o, że należy zastosować schemat blokołyy do opisu problemu. Li-
der techniczny projektu zaproponował, by wykorzystać właściwości obrazu (rysunek 7.6).
UWAGA
KoIory w obrazach w postaci cyfrowej reprezentowane są przez liczby określalącestopień
nasycenia trzech (lub czterech w schemacie CN/YK) kolorow skladowych: czerwonego
(red) zielonego (green) i niebieskiego (blue) stąd nazwa RGB. Ko|or czarny reprezen-
-
towany jest w tym schemacie przez wartości zapisywane w nawiasach po ko|ejnych
przecinkach (0, 0, 0) a bialy to (255, 255,255).
-
-
210
7,4. Realizac.]a prac projektowych
start
obraz, X, y
2weryńku.j,'
czy punkt obraZu czy punkt obrazu
je5t koloru je5t koloru
WyJ scla
Tak
Kon iec
211
F'ozdzial 7, r Od pomlstu po wdrozenie
- praktyczne zastosowanie zdobytej wiedzy
Fr Ji;ićgj ĘpelEjj
: lHerńdrewdź§ińdEffid
e ć] Up {1}
F f] Leff {1}
r § Rig'lt (t]
§ §Wp.e*a&kisunek{1}
i §tsWtrif}
7.4.3. Sprint 2.
Podczas sprintu drugiego prace programistyczne są już mocno zaawansowane, Efekty
tego sprintu to:
o dodanie ściani obsługa ściany w labiryncie,
r implementacja początku i końca Iabiryntu.
Okazało się, że wytworuony w tym sprincie przez młodszych programistów kod (dostęp-
ny jako gałęzie
- branch - v/ systemie kontroli wersji) wrymagał zoptymalizowania,
dlatego \^/ezwano bardziej doświadczonego programistę, który mu się przyjrzał i za-
proponował wprowadzenie poprawek w algorytmach. Programista ten, przeglądając
kod, zwróciŁ także uwagę na kilka innych miejsc, które wymagaĘ poprawienia. Po
wprowadzeniu wszystkich zgłoszonych pr zez niego poprawek aplikacj a zaczęła działać
znacznie szybciej.
Ptzykład7.2
Oto przykładowy przegląd kodu (w nomenklŃurze programistycznej Code Review,
w skrócie CR). Programista napisał funkcję przedstawioną na listingu 7.1.
Listing 7.1
Kod funkcji zwracającej numer planety w Układzie Słonecznym
212
7.4. Realizacja prac pro;ektowych
if (numb :: 'Merkury') {
return L;
} eise if (numb -: "ń]enusl ) {
r^ . s );
} eise if (nunb
:: ' Ziemia' ) {
return 3;
}e]se if (lurnb :: 'Mars') {
return 4;
}eise if (numb := 'Jcwrsz ') {
return 5;
I
re ,rn 3;
}
Podczas przeglądu tego fragmentu kodu drugi programista zgłosił następuiące uwagi
(to zawsze są uwagi, a nie nakazy; można się do nich odnieśćpoprzez dyskusję, nie ma
obowiązku natychmiastowego poprawiania kodu):
1 . Ogólny opis; trudno powiedzieć, co metoda draw ma robić1; z kontekstu mogę
wnioskować, że zwtaca numer kolejnych planet, licząc od Słońca.
2. Brak \Ą/eryfikacji poprawności wprowadzonych danych (co zrobi pro8ram, ieśli
wprowadzi się liczbę albo ciąg znaków inny niz w kolejnych instrukcjach warun-
kowych?).
3. Dlaczego nie użyto tablicy? Byłoby prościei i szybciej.
4. Brak formatowania (wystarczy domyślne,za pomocą skrótu klawiszowego).
UWAGA
ZasIrzezenie wyrazone w punkcie drugim najprawdopodobniej zostanie sformulowane
w języku technicznym: ,,Brak walidacji wprowadzanych danych".
Jak widać, uwagi są oczywiste. Warto zadbać o to, by kod zawsze był weryfikowany
ptzez drugą osobę, bo pozwoli to znaleźć rzeczy, które nie zostały zauważorre przy
pierwszej implementacji.
213
\ozdzial 7. l Od pomysłu po wdrozenie
-
praktyczne zastosowanie zdobytej wiedzy
Uwagi zgłaszane w procesie Code Review nie mogą być nacechowane negatywnie,
powinny być formułowane spokojnie i bez emocji. Ich celem nie jest wyśmianie czy
pognębienie mniej doświadczonego kolegi,-ale doprowadzenie do udoskonalenia jego
umiejętności technicznych a często także umiejętności przeprowadzającego przeg|ąd.
-
UWAGA
UWAGA
W przypadku duzych projektów z budzetem pozwalającym na wykonanie automatyzacji
testów, warto miec na uwadze narzędzia, w ktorych można taką automatyzacjęprze-
prowadzic, Niezbędne kompetencje do wykonania testów automatycznych ma tester
automatyzujący lub programista,
Obecnie nalpopu|arniejszym narzędziem do automatyzacli jest Selenium
214
7 .4, Aeal zac)a prac prolektowych
łi-,la;,.r'1;.,-1i11-1 'i.:1:'c.,.,::'-::Je'(€'i:iF9f'P,,r,'iJl.CJJilJ]
tlejl:jjEs:ra:i,f,e:ej|:-;5s_7,;ói.:a-o.,|:
E;JC.r J_-l 6]./,iś 1 !,, ,,i 5:.] , Jz!5jlial] l€,.t tl,ói. |€r|rrlał ;c_jr,,1z:zegc pa;iollr;, rlyliłl po,1i:izr;:},a]] ż t;|li !łcZ€5|c,|i,,. jg
Z, :;i-l . .:-j:i 7;Ęl,... ., - ,,, Jl\1-J?.._j.], .,
7.4.4. Sprint 3.
W ramach plac na tym etapie odbywają się pełne testy, zarówno funkc;'onalne, jak
i niefunkcjonalne.
215i,)
Rozdział 7, r Od pomyslu po wdrozenie
- praktyczne zastosowanie zdobytej wiedzy
Zgo dnie ustalono, że wy gląd aplikac j i (d e s i gn) należy dopracować, trzeba też wprowa-
dzić kolejne kierunki (lewy skos, prawy skos).
Najwazniejsza nauka, 1aka plynie zrealizacji tego projektu, jest następuląca: projekt rzad-
ko byriva zrealizowany w stopniu w pelni satysfakcjonulącym wszystkie strony. Najczęście1
przyjęte rozwiązanie jest formą kompromisu, Rzadko kiedy udale nam się zrealizowac
początkowe zalozenia w stu procentach i czasem trzeba pojścna ustępstwa, mając na
uwadze, ze to zadowolenie kiienta jest ostatecznie najwazniejsze,
216
7.5. Diagram Gantta charakterysVka, przyklady
-
. Diagram Gantta charakterystyka,
przyklady -
Skuteczna rcalizacja projektów czy też złożonych zadań wymaga jasnej komunikacji
iptzejtzystego podziału prac. Jednym ze sposobów na stworzenie preryzyjnego harmo-
nogramu pracy jest tzw. diagram Gantta, znany już od końca XIX wieku.
Diagram Gantta to nic innego jak graficzne zobrazowanie harmonogramu prac w pro-
jekcie czy zadaniu. Konstrukcja diagramu Gantta to kaskadowe zestawienie zadań,
operacji, czynnościlub procesów z czasemich trwania. Na osi X znajduje sięzazvrrycza1
ośczasu. Jednostki czasu, jakimi się posługujemy, zależą od tego, co obrazujemy
-
mogą to być minuty, godziny, ale też dni, tygodnie, miesiące czy.lata.
Na rysunku 7.1,0 widoczny jest przykładoury diagram Gantta wykonany w Excelu. Oś
pozioma to właśnieośczasu wytażona w dniach (zadania są realizowane od 1. dnia
miesiąca itrwajądo 14. dnia miesiąca), Ośpionowa to kolejne zadania-
harrnonograT o'T
llanlwaY 9 10 11 12 ,3 14
Frale FaoE{§ffi5t!ćE*e
PrE}E§t§ffi eie rme*E tEltów
FEYgótednie instruk.ii użćkawnika
ZebBnle dokurentdji
P.redsłB*ienie klientei efekt&§ pGr
217
Rozdzial 7. r Od pomlslu po wdrozenie praktycZne zastosowanie zdobytej wiedzy
-
o Widok harmonogramu pozwala szybko namierzyćwąskie gardław procesie (jeżeli
ocz},wiściewykres dotyczy czasów trwania procesu).
o zyskuje się bardzo przejrzysty sposób. przekazania planu prac. Jego odczytanie
i zrozumienie nikomu nie powinno przysporzyć trudności.
UWAGA
czas mierzony za pomocą funkcji now () zwracany jest w milisekundach. Aby zapre-
zentowac go uzytkownikowi, musielibyśmy przekonwertowac go na jakąśformę bardziej
czytelną dla czlowieka.
namespace Std:
int- main ( )
-+
21B
7.6. Proponowane rozszerzenia aplikacji
reLurn 0;
Listing 7.2
Zapisanie r,vyniku w tablicy wielowymiarowej
Iet scores: I
['Jan', 1.2],
// ...Pozostali grdcze
IrMichaL', 3.4)
+
-,
219 r '
I
--'";.
Rozdzial 7. l Od pomysłu po wdrozenie praktyczne zastosowan ie zdobytej wiedzy
-
UWAGA cd.
+ if(plik.good()) {
return(0);
}
// clpis struktury
slrinq name,.
double score /.
i;
int main ( )
Jdll ,
7.2
};
Player michal =
"Michał",
3.4
};
-+
220
7 ,7 , Prawa autorskie
Struktura to w pewnym sensie maty obiekt. Dlaczego maly? Bo ma o wiele mniej mozli-
wości i funkcji niz tradycylny obiekt. Jednakze ma pewną istotną zaletę zuzywa mniej
pamięCi W komputerze,
-
prawa autorskie
"a /
Przygotowując się do prary programisty, warto poznać swoie prawa w zakresie pracy
wytwórczej. Jest taki rodzaj prawa, które specjalizuje się w zabezpieczaniu wytworów
naszej pracy to prawo autorskie. Podstawa prawna o prawie autorskim i prawach
-
pokrewnych to Ustawa z dnia 4 lutego 1,994 r., opublikowana w Dzienniku Ustaw nr
90,w pozycii 631.
221
RozdŻd 7. r Od po wdrozenie praktyczne Zastosowanie zdobytej wiedzy
-
o Autorskie prawa maiątkowe prawa zabezpieczające interesy twórców utworów
albo wydawców, którzy nabyli- od autora pra\^/a majątkowe do rozporządzaniatymi
utworami. Prawa te łygasają po 70latąch od śmierciautora lub po 70 latach od
rozpowszechnienia utworu, gdy autof nie jest zrrany.
o pokrewne
Pra\^/a
- prawa do arĘstycznych wykonań, fonogramów i wideogramów,
nadań programów, pierwszych rłydań oraz .vqrldań naukouych i krytycznych,
UWAGA
W jakim celu wprowadzono prawa autorskie?
Prawa autorskie wprowadzono po to, aby chronlć interesy tworcow i wydawcow.
Co nie podlega prawu autorskiemu?
ochronie nie podlegają proste informacje prasowe lub informacje pochodzące od
instytucji;
. informacje o wydatkach,
. prognozy pogody,
. kursy walut,
, programy radiowe i telewizyjne (godzinowe spisy programow zamieszczane w ga-
-^+^^L\ )
LvLóv| | ,
' UStaWy i ich prolekty, aIakże dokumenty urzędowe i materialy, znaki i symbole oraz
opub|ikowane opisy patentowe lub ochronne.
Jakie szkody może wyrządzić nanlszenie praw autorskich? Przede wszystkim są to:
. utlata przeztwórców zysków zĘtułu rozpowszechniania utworów;
3 straĘ firm zajmujących się dystrybucją i promocją utworów;
. straty państwa związane z nieodprowadzonymi podatkami.
222
7 .7 , Prawa autorskie
7.7.1. Licencja
Licencja to nic innego jak umowamiędzy producentem (autorem lub wydawcą) aużyt-
kownikiem dotycząca zasad użytkowania produktu. Wyroby objęte licencją mają in-
strukcję instalacji oraz dają prawo do bezpłatnych porad i serwisu, łącznte z aktuali,
zacjami. Legalnie zakupiony program ma numer licencyjny (ptzekazywany w formie
drukowanei lub elektronicznej) słuzący do identyfikacji. Przed rozpoczęciem korzystania
z oplogramowania może być wymagana rejestracja lub aktywacja produktu.
W tabeli 7.4 zestawiono typy licencji wraz z ich charakterystykami,
Tabela 7.4. Zeslawienie typow Iicencji
223
Ąozdział 7. l Od pomyslu po wdrozenie praktyczn e zastosowanie Zdobytej wiedzy
. zakonczenie
Ten rozdział wieńczy początek Twojej przygody z tworzeniem oprogramow ania. Znasz
juŻ PodstawY Programowania, wiesz, jak testować aplikację. Znasz też zasady organi-
zacji pracy nad projektem. Na pe,\^/no pozwoli ci to lepiej ztozumieć pracę w branży
IT i być może w ptzyszłościsprawnie się w niąwdrożyć.
- -
MamY nadzieję, udało nam się zaszczepićw Tobie ciekawośćdotyczącątechnologii,
Że
podejścia projektowego czy też doboru natzędziwspierających proces,
I Pamiętaj ani analityk, ani tester, ani programista nie powinni stać w miejscu! Są
-
to zaw o dY, które wymaga j ą nieustannego p oszetzania posiadane j,w iedzy izdobl.wania
nowej.
224
7.9, Zadania
. Zadania
Zadanie 71
Wypisz kolejne uwagi do kodu dotyczącego planet.
Zadanie 7.2
Wypisz cel sprintu 4. oraz zadania dla poszczególnych ról.
Zadanie 7.3
Dobierz drugą osobę do zespołu i podzielcie się rolami: jedno zWas niech będzie klien-
tem, drugie przedstawicielem firmy wTrkonawczej. Na podstawie Ćharakterystyki zamó-
wienia złożonego przez klienta przedstawiciel firmy powinien opracować listę zadań
dla poszczególnych ról w projekcie. Pruyjmijmy, ze klient nalega, by realizacja projektu
trwała krócej, niż wynika to z harmonogramu sporuądzone1o ptzez firmę wykonawczą.
Zadanie 7.4
Na podstawie informac i z rozdziaŁu utw ór z aplikac ę labiryntu.
j j
225
Rozdzial 7 l Od pomyslu po wdrozenie
- praktyczne zastosowanie zdobytej Wiedzy
226
€ibtio
Certyfikowany tester. Sylabus poziol,ł1ll podstawowe 8o /STQBc'. Wersja 2018
V 3.1. Prawa autorskie wersji polskiej zastrzeżone dla O Stowarzyszenie Jakości
Systemów Informatycznych (SJSI),
Certyfikowany Tester. Syląbus rozszerzenia poziomu podstawowego. Tester zwitttty.
Wersja 2011.
Akty prawne
Ustawa z dnia 4 lutego 1994 r o prawie autorskim i prawach pokrewnych,
Dz.U. 1994 Nr 24 poz. 83.
zrodła internetowe
http s : // a gil em anife st o. o r g / i s o /pl /pr in cipl e s. html
htt p s : // dev do c s. i o /j cłu a s c rip t /
http s : / /hy gge r. io / bl o g/ how - u s e rs - s e e -kd nb an /
http s : / /l e an d cti onpl an.pl /w y kre s - gd n tta /
https://miroslawzelent.pl/informatyka/licenc je-programow-prąwą-ąutorskie/
http s : //pl.w ikip e di a. o rg /
227
B b| ografia
httlls://wearecreativeląbs.com/waterfall-vs-agile-roznice-pomiedzy-tradycyjnym-
d- zw inn ym - prl de j s ci em - do - zdr za d zan i a -p roj ektem /
https://www.srupa-t€nse.pl/blog/ttx-to-nie-ui-roznice-miedzy-user-interface-
a-u.ser-experienCe/
22B
Sko Wl Z
dokumentowanie
A funkcji, 100
adres URL, 22 kodu, 98
algorytm szyfrującv ROT-13, 119 DOM, Document Obiect Model, 35
algorytmy, 100 DRl Don't Repeat Yourself, 97
heuryst},czne, ]21 drzelł.o decyzvjnc, 103
sortujące, 108
analit},k, 20.5
analiza punktów funkcyjnl.ch, 18,ł
F
aplikacje webowe, 3,ł
format
ASCII, 120 HTML,35
atttr luztlpcłnianie kodu. Jb JSDoc, 98
ftnkcje
dokumentacia, 100
B przekazanic paramctru, 83
biblioteka JSDoc, 98 lrl,wołanie, [34
błęd1,, 39, 1.52
BOM, Browser Object Model, 35
Bugzilla, 154
G
generowanie dokumcntacii, ż8
c Clt,76, 22
dodanie pliku, 24
menu kontekstowe,27
chmura, 16
Chrome, 28
konsola przeglądarki, 33 H
clean code, 97
harmono51ram prac,207
C SS. Lar.,adiIlg Stylc Shecr,. 32
crrdzysłów, 39 HP ALM, 8
cykl życia ekran 1ogowania, 8
błędu, i3 menu,9
projektu, 1B,ł moduł,9
czystv kod, 97 Defects, 10
Tcsting,10
panel
D administracyjny, 8
defekt,152 użytkownika, 9
definiorł.arrie klasy, B1 F{Tlv{L, HvperText Malkup Language, 32, 3,ł
cleklaracja zmiennej, 44, 50
diagram !
Gantta, 2l7
klas,726,127 lD[,, Integratcd Development Enl,ironment, 19
dokumentacja testołva, 159 Atom,20
lista kontrolna funkcjonalności, 173 Eclipse, 20
plan testów, 1-59 Intelli] JDE"Ą, 19
rapoIt błędÓ\Ą,, 17,+
Visual Studio, 19
raport testórłl, 1 75 WebStorm, 19
rejestr rvzyk, 174 implementacja wzorca, l 25
\(enaTiu\/e t(slo!Ą,C, l 65
229
skorowidz
instrukcje
sterujące, 69
M
Manifest Agile, 187
warunkorł,e, 60, 63,65, 67
interpreter, 43
metody
iterator,87 definicja, 94
\Ą,ywołanie, 9'1
iterorvanie, 72
metodyka
Kanban, 193
J Scrum, 188
Scrumban, 195
JavaScript,31
autouzupcłnianie kodu, 3tl metodl,ki
instrukcje warunko\Ą,e, 60, 63 Zesta\Ą.ienie,195
komentarze. 41 zwinne, 186
komunikaty; 36 model
okno dialogowe, 56 kaskadowy, 182
operatory warunkorł,e, 62 etapy,183
skrypt\,,34 prototypolt y,, 185
słorł,a kluczor,ve. 47
tab]ice,58 N
lwświetlanie *o*rrrrrPul5rł,, 3 6
zmicnne, 42, 50 narzędzia
język JavaScript, 3 1 do zarządzania projektem, 15
rłr,korzl,rtlrvane rv wvt lr arzani u
Jira, 11, 153
oprogramowania, 15
ekran logowania, 12
narzędzte
kollto uźvtkolt njka, l 4
panel uż)rtko\Ą,nika, 13
Bugzilla, 1 54
Git, 15
HP ALM, B
K Jira,11
Kanban, 193 Testlink,167
czas realizacji, 193 Trcllo, 1,ł, 155
1imit pracy w ttlku, 193 WebStorm, 1.5
tablica kanbanowa, 193, 194 rTawias, 39
kaskadowe arkusze stylórł,, 32 klamrowy, 62
klasa,80, l21
kod HTML, 32
kolejka priorytetowa, Priorit1, Queue, 115
o
kolekcja, 85 obiekt, 82
iterator, B7
List. B7
oferta projektorł,a, 203
Set, 85
operatoI
komentarze,,ł1 11
komunikat, 36
logiczny AND, 65
o błędzie, 38
logiczny OR, 67
koszt naprawy błędu, 136
operatoIv
matematyczne, 48
L warunkowe, 62
licencja, 223
LIFQ Last In, First Out, 115
lista, List,87
P
pętla
kontrolna, checklist, 172
do ... while, 78
kontrolna funkcjonalności, 173
for,71
for ... of,74
while, 76
plan testów, 159
230
skorowidz
231
skorowidz
z
U zapytanie ofertowe, 200
UML, Unified Modeling Language, 121 zar ządzanie pro j ektem, 1 5
URL 22 zasada
,,dzie\ i zwyciężaj", 102
W DRY, 97
zbiór, 85
waterfall, Pdtrz model kaskadowy, 182 zestawienie ró1, 205
WebStorm, 15, 19 zintegrowane środort isko programistyczne, IDE, 19
generowanie dokumentacji, 28 złożoność
obliczeniowa, 1 05
integracja z Gitem,22 zmienne, 42
menu kontekstowe Commit, 26 tablicowe,58
okno dialogowe Commit, 25 typu logicznego, 55, 63
struktura aplikacji webowej, 34 typu String, 53, 54
widok znacznik $,57
menu kontekstowego, ż5 znak dodawania, 64
okna Git, 23, 27
podpowiedzi, 99
232