Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

31
Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”) Süsteemianalüüs Nõuete analüüs Kavandamine Kodeerimine Testimine Hooldus Valdkonna analüüs Ülesande täpne püstitus Disain. Klassid Algoritmid Programmitekstid

description

Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”). Valdkonna analüüs Ülesande täpne püstitus Disain. Klassid Algoritmid Programmitekstid. Süsteemianalüüs. Nõuete analüüs. Kavandamine. Kodeerimine. Testimine. Hooldus. Numeroloogia tarkvara. - PowerPoint PPT Presentation

Transcript of Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Page 1: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Tarkvara arendamise etapid

Klassikaline elutsükkel (“kosk-mudel”)

Süsteemianalüüs

Nõuete analüüs

Kavandamine

Kodeerimine

Testimine

Hooldus

Valdkonna analüüs

Ülesande täpne püstitus

Disain. Klassid

Algoritmid Programmitekstid

Page 2: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Numeroloogia tarkvara

Süsteemianalüüs

• õnneliku arvu mõiste

• ülesanne: leida õnnelikke arve; kontrollida, kas arv on õnnelik • leidub inimesi, keda huvitab arvude õnnelikkust uurida

Page 3: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Numeroloogia

Täisarvu numbrite kaupa analüüsimine. Arvu märkei oma tähtsust.

Ristsumma: arvu numbrite summa.Arvu 12075 ristsumma on 15.

Ristkorrutis: arvu nullist erinevate numbrite korrutis.Arvu 12075 ristkorrutis on 70.

Õnnelik arv: nii arv ise kui ka tema ristsumma ja rist-korrutis koosnevad ainult paaritutest numbritest.Arv 12075 ei ole õnnelik. Arv 11537 ei ole õnnelik.Arv 11539 on õnnelik.

Page 4: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Nõuete analüüs: mida täpselt teha

• vaadeldakse ainult mittenegatiivseid arve• suurim arv ei ületa miljardit• ülesanne: leida ja väljastada konsoolile kõik õnnelikud arvud, mis asuvad antud lõigul• kui lõik on tühi, siis ei väljastata midagi• kasutajaliides (kasutamine): ainult väljastamine konsoolile • testiplaan: kontrollida

(1) väikeste ja (2) suurte ja (3) mõnede vahepealsete arvude korral, (4) väikese ja(5) tühja lõigu korral

Page 5: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Kavandamine

Alamülesanded• kontrollida, kas arv koosneb paaritutest numbritest• leida arvu ristsumma• leida arvu ristkorrutis• kontrollida, kas arv on õnnelik

Arhitektuurüks klass: sisaldab alamülesannete lahendamise meetodeidteine klass: meetod antud lõigul olevate õnnelike arvude leidmiseks

Page 6: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Arvud

ristsumma( ) ristkorrutis( ) onÕnnelik( ) koosnebPaaritutest( )

OnnelikeOtsing

algus lõpp

main( )

Peaklass Numeroloogia meetodite klass

Mudel

Page 7: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

OnnelikeOtsing.main( ):iga arvu korral lõigul algus...lõpp kontrollida, kas see arv on õnnelik. Kui on, siis teatada (väljastada see arv).Õnnelikkust kontrollib meetod Arvud.onÕnnelik( ), mis omakorda kasutab meetodeid Arvud.ristsumma( ), Arvud.ristkorrutis( ), Arvud.onÕnnelik( ) ja Arvud.koosnebPaaritutest( ).

OnnelikeOtsing.main( )

Arvud.onÕnnelik( )

Arvud.ristsumma( ) Arvud.ristkorrutis( )

Arvud.koosnebPaaritutest( )

Meetodite rakendamise skeem

Page 8: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Kodeerimine

Väärtused võib võtta tüüpi int (maks. > 2 miljardit).

Klass Arvud, meetodite välised spetsifikatsioonid:

static int ristsumma (n)--- Antud: täisarv n, n 0--- Tulemus: tagastatakse arvu n ristsumma

class Arvud

Page 9: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

static int ristkorrutis (n)--- Antud: täisarv n, n 0--- Tulemus: tagastatakse arvu n ristkorrutis

static boolean onÕnnelik(n)--- Antud: täisarv n--- Tulemus: tagastatakse JAH, kui arv n on õnnelik--- EI, vastasel korral

Page 10: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

static boolean koosnebPaaritutest (n)--- Antud: täisarv n--- Tulemus: tagastatakse true (JAH), kui arvu n kõik --- numbrid on paaritud, false (EI) vastasel korral

(Arvud)

Page 11: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

class OnnelikeOtsing

static int algus = 570; // otsimislõigu algus static int lõpp = 580; // otsimislõigu lõpp

public static void main(String[ ] args)

väljastada(“Õnnelikud “ + algus + “ … “ + lõpp + “:”);

* n = algus, algus+1 … lõpp

onÕnnelik(n) ?väljastada(n)

Page 12: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

class Arvud{static int ristsumma (n){// Antud: täisarv n, n >= 0// Tulemus: tagastatakse arvu n ristsumma

return 1;}//ristsummastatic int ristkorrutis (n){// Antud: täisarv n, n >= 0// Tulemus: tagastatakse arvu n ristkorrutis

return 1;}//ristkorrutisstatic boolean onÕnnelik (n){// Antud: täisarv n// Tulemus: tagastatakse true (JAH), kui arvu n on õnnelik,// false (EI) vastasel korral

return true;}//onÕnnelik

Page 13: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

static boolean koosnebPaaritutest (n){// Antud: täisarv n// Tulemus: tagastatakse true (JAH), kui arvu n kõik // numbrid on paaritud, false (EI) vastasel korral

return true;}//koosnebPaaritutest

}//Arvud

Page 14: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Õnnelikud 100 ... 999: 111 113 115 117 119 131 133 135 151 153 157 171 175 191 311 313 315 331 351 355 359 395 511 513 517 531 535 539 553 557 571 575 593 711 715 751 755 911 935 953

Kompileerimine:javac OnnelikeOtsing.java

Lahendamine:java OnnelikeOtsing

Page 15: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Nimed ehk identifikaatorid

Programmeerija poolt valitavad

klasside, meetodite, väljade, lokaalmuutujate jmt. tähised

Nõuded failinimedele on Java-välised, määratud kasutatava operatsioonisüsteemiga.

Page 16: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

• REEGLID

– võivad sisalduda tähed (ka täpitähed), numbrid, _ , $

– ei tohi alata numbriga

– pikkusel reaalsel kasutamisel häirivaid piire pole

– suured ja väikesed tähed (nt. A ja a) loetakse

erinevateks (nt. jaAk ja jAak on erinevad,

String ja string on erinevad).

– ei saa sisaldada tühikuid

– ei tohi olla võtmesõna (class, int, true, if …

... ca 60 tükki, vt. Leksikon)

Nimed (identifikaatorid)

Page 17: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Nimed (identifikaatorid)

• TAVAD

klassi nimi - suur algustäht KlassiNimi

meetodi nimi - väikesed tähed meetodiNimi

muutuja nimi - väikesed tähed muutujaNimi

alates teisest sõnast suure tähega

.java-fail võiks sisaldada ainult ühte klassi ja selle faili

nimi võiks olla sama, mis on klassi nimi (KlassiNimi)

(mõnes keskkonnas peabki olema)

.class-fail tekib siis faili KlassiNimi.java

kompileerimisel ja nimeks on KlassiNimi.classhttp://www.ut.ee/~jaanus/java/projektid/Java_koodistandard.html

Page 18: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Avaldis A Operatsioon Avaldise A väärtuseks on

x = avaldisB Arvutatakse avaldise B väärtus ja omistatakse see muutujale x

x väärtus pärast operatsiooni

x++

x--

x = x + 1

x = x - 1

x väärtus enne operatsiooni

++x

--x

x = x + 1

x = x - 1

x väärtus pärast operatsiooni

Omistamine

Page 19: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

AvaldisNäiteavaldis Väärtus

1.5 (literaal) 1,5

x Muutuja x väärtus

x + y x ja y väärtuste summa

meetod(a) Meetodi poolt tagastatav väärtus (argumentavaldise a korral)

y = avaldis Muutuja y uus väärtus

y += avaldis Sama, mis

y = y + avaldis

(avaldis) == avaldis

Page 20: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

z = Math.sqrt(2*y)/(x = x + 1)ehkz = Math.sqrt(2*y)/(++x) ;

avaldis

avaldis

avaldis

avaldis

avaldisavaldis avaldis

avaldisdirektiiv

avaldis

Page 21: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Avaldisdirektiivi erijuht (omistamistehteta):meetodi rakendus ehk meetodi väljakutse

meetodiNimi(argumentide loetelu);

Tavaline, kui meetodi tagastustüübiks on tühitüüp void.

Näide:

System.out.println();

Page 22: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Algtüübid

Page 23: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Algtüübid Vt. Leksikon, märksõna: tüüp

täisarvud int, byte, short, long

ujupunktarvud

float 32-bitilised (7 tüvekohta)

double 64-bitilised (15 tüvekohta) -1,7*10308…1,7*10308

char – 16-bitilised Unicode-sümbolid

boolean – true või false

void – tühitüüp; kasutatakse ainult tagastustüübina, juhul kui tegelikult väärtust ei tagastata

String ei ole algtüüp (on viittüüp)

Page 24: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

MEETOD

piiritlejad -- võivad puududa

tagastustüüp meetodiNimi(formaalsete parameetrite loetelu){ lokaalmuutujad, direktiivid}

Meetodi kirjeldus (lühemalt: meetod):

Meetodi rakendus ehk väljakutse:

Klassi nimi. või isendiviit. -- võib puududa

meetodiNimi(argumentide loetelu)

Page 25: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Meetodint ruutudeSumma(int a, int b){ int c; c = a*a + b*b; return c;}

int f(int a, int b, int c, int d){ int x, y; x = ruutudeSumma(a, b); y = ruutudeSumma(c, d); z = ruutudeSumma(x, y); return z;}

void test(int a){ System.out.println(“Kui a = b = c = d = “ + a); System.out.println(“ siis f = “ + f(a,a,a,a));}

Page 26: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Peameetod

piiritlejad

tagastustüüp

nimi (formaalsete parameetrite loetelu)

keha ehk sisu

public static void main(String[] args){

}form.param.nimi

form.param.tüüp

Page 27: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Programm RuutudeSummad.java

Page 28: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Arvuline meetod e. arvulist tüüpi (int, double, …) meetodstatic int m1( …){ … leida vastus - arvuline tulemus (nt. a) // tagastada tulemus: return a; // üldiselt: return arvuline avaldis;}

Loogiline meetod e. loogilist tüüpi (boolean) meetodstatic boolean m2( …){ … leida vastus – kas JAH või EI (true või false) // tagastada tulemus: return true; või return false; // üldiselt: return loogiline avaldis;}

Page 29: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Loogilise meetodi näide

boolean onÜhiklõigul(double x){// Antud: arv x// Tulemus: tagastatakse true, kui 0 x 1 if(x < 0) return false; if(x > 1) return false; return true;}

if((x < 0) || (x > 1)) return false;return true;

if((x >= 0) && (x <= 1)) return true;return false;

return (x >= 0) && (x <= 1) ;

return !((x < 0) || (x > 1)) ;

Page 30: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

MUUTUJA

väli või parameeter või lokaalmuutuja

class A{

int meetod( ){

}

}

Page 31: Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

Arvuline e. arvulist tüüpi (int, double, …) muutujaomab arvulist väärtust int z, w, i1; double x, y; i1 = 0; … z + w*2 ... Loogiline e. loogilist tüüpi (boolean) muutuja

omab ühte kahest loogilisest väärtusest: true või false boolean k, m3; boolean g; k = true; m3 = (x <= 1); g = (c != (a + 2)); k = m3 && g;