Upload
bole123456789
View
215
Download
0
Embed Size (px)
Citation preview
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
1/21
Predavanja 2015./2016.
Razvoj aplikacija u programskom jeziku C#
Razvoj aplikacija i sustava
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
2/21
Ari!ek!ure
"onoli!ni sus!avi pr. $e%eli klijen!
$is!ri%uirani sus!avi pr. &lijen! ' poslu(i!elj) peer !o peer
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
3/21
"onoli!ni sus!avi
Program sadr(i prezen!acijsku i aplikacijskulogiku *ednos!avnija izrada) ro%usnos! i pris!upa+nos!
sus!ava) %rzina izvo,enja
edos!aci Povezanos!
-igurnos! i in!egri!e! adogradnja sus!ava &on!rola korisnika i pris!upa
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
4/21
&lijen!poslu(i!elj
&lijen! sadr(i samo prezen!acijsku logiku)aplikacijska logika je na poslu(i!eljima anki klijen!
Prednos!i ake nadogradnje sus!ava) jedna aplikacijska
logika na vie klijena!a) kon!rola) sigurnos!)povezanos! ...
edos!aci &ompleksniji sus!avi) vie cijene izrade i odr(avanja
sus!ava) dos!upnos! ovisi o dos!upnos!i poslu(i!elja)odgovornos! prema klijen!skim podacima...
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
5/21
&lijen!poslu(i!elj
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
6/21
&lijen!poslu(i!elj
"ogu4i kompleksniji dis!ri%uiranisus!avi !porni na ispade komponen!e
sus!ava unkcijska i geogra7ska raspodjela
poslu(i!elja -kaliranje +vorova u mre(i u svru
skaliranja kapaci!e!a sus!ava
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
7/21
Razvoj poslu(i!eljski aplikacija
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
8/21
Razvoj poslu(i!eljski aplikacija
Ari!ek!ura programskog rjeenja pis glavni komponen!i sus!ava i njiovi su+elja
pis relacija izme,u komponen!i sus!ava&omponen!a
$o%ro de7iniran modul sus!ava udi usluge drugim modulima kroz su+elje
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
9/21
Razvoj poslu(i!eljski aplikacija
Raslojavanje aplikacije Cilj smanjivanja slo(enos!i ' aps!rakcija
-loj grupira komponen!e koje nude usluge is!evrs!e cen!ralizacija i enkapsulacija
"ani7es!acija sloja: zase%an projek!)da!o!eka s klasama) jedna klasa...
;er!ikalna ijerarija -!roga a%ava
;eza izme,u slojeva: su+elje
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
10/21
Razvoj poslu(i!eljski aplikacija
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
11/21
Razvoj poslu(i!eljski aplikacija
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
12/21
Razvoj poslu(i!eljski aplikacija
ipi+na ari!ek!ura poslu(i!eljski aplikacija
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
13/21
$R=
DRY>$on?! repea! @oursel7 -vaka jedinica znanja mora ima!i jednu reprezen!aciju unu!ar sus!ava
Al!erna!iva: jedna s!var izra(ena na vie mjes!a Promjenom jedne) moramo se sje!i!i promijeni!i druge reprezen!acije ije
sje!i!i) pi!anje je kada 4e!e za%oravi!i...
Ba!o dupliciramo ismo ni svijesni da dupliciramo ijenos! D!eda vremena u(nos!
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
14/21
$R=
2/15/16 Razvoj aplikacija u programskom jeziku C#
classRectangle{ publicdecimalSideA { get; set; } publicdecimalSideB { get; set; } publicdecimalSurface { get; set; }
}
classRectangle{ publicdecimalSideA { get; set; }
publicdecimalSideB { get; set; } publicdecimalSurface { get{ returnSideA * SideB; } }}
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
15/21
$R=
Ponekad svjesno krimo $R= B%og nedos!a!ka vremena ili lijenos!i
re%amo me!odu ili klasu sli+nu jednoj koju smo ve4 napisali ' primamljivo i napravi!i !e si!ne izmjene
"o(da 4e!e u!edi!i nekoliko sekundi sada) ali pod cijenom gu%i!ka sa!i u % Po!re%na je disciplina
Primjerice) z%og per7ormansi ' keiranje &lju+no je lokalizira!i podru+je udara ' krenje pravila mora %i!i skriveno od
"e!ode unu!ar klase >podru+ja krenja %rinu o o+uvanju konzis!en!nos!i
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
16/21
$R=
2/15/16 Razvoj aplikacija u programskom jeziku C#
privatedecimal_sideB; privatedecimal_sideA; privatebool_sideHasChanged;
publicdecimalSideA
{ get{ return_sideA; } set { _sideA value; _sideHasChanged true; } }
publicdecimalSideB { get{ return_sideB; } set { _sideB value; _sideHasChanged true; } }
&lasa rec!angle sprema vrijpriva!ni spremnik >cace uvrijednos!i s!ranice
Au!or klase %rine se za konpoda!aka
privatedecimal_surface;
publicdecimalSurface { get
{ if!_sideHasChang { _surface _s _sideHasChang } return_surface; } }
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
17/21
r!ogonalnos!
Ortogonalnost &ri!i+an koncep! kod razvoja sus!ava
r!ogonalnos! u ra+unars!vu: pojam nezavisnos!i modula / komponen!e /klase
$va ili vie modula su or!ogonalna ako promjene u jednom ne u!je+u na n Primjer or!ogonalnos!i:
Eaza poda!aka or!ogonalna je korisni+kom su+elju mogu4e je promijeni!i korisni+ko na %azu poda!aka) ali i izmjeni!i %azu poda!aka %ez promjene su+elja.
Primjer neor!ogonalnog sus!ava: Dsmjeravanjem volana u lijevo) osim pomicanja ko!a+a) pale se i %risa+i na au!omo%i
eor!ogonalne sus!ave kompliciranije je mijenja!i i njima upravlja!i z%og FpojavaG
2/15/16 Razvoj aplikacija u programskom jeziku C#
l
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
18/21
r!ogonalnos!
$izajnira!i module !ako da su neovisni o drugima !e imaju jedins!vede7iniranu ulogu u sus!avu >koezivnos!
2/15/16 Razvoj aplikacija u programskom jeziku C#
publicvoid#ar$AsCompleted!%odos$" { tas$&Completed true;
using!vardb ne'(atabase!"" { db&)pdate!tas$"; } }
"e!oda nema jedins!venu ulogu zna+ava zada!ak kao izvren -prema zada!ak u %azu poda!aka
H!o ako !re%amo samo dio !e 7un
$uplikacija dvoji 7unkcinalnos! u odgovaraju
me!ode kako %i i na ni(im slojevineovisno poziva!i
a viem sloju aps!rakcije ponudi koja enkapsulira o%je operacije po
! l !
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
19/21
r!ogonalnos!
Ba!o !e(i!i or!ogonalnos!i Produk!ivnos!
Promjene su uvijek lokalizirane: manje u!roenog vremena na razvoj i !es!iranje ake je napisa!i vie manji komponena!a nego jednu veliku >aps!rakcija pro%le *ednos!avne komponen!e mogu se dizajnira!i) implemen!ira!i) !es!ira!i) a za!im i z Ponovna iskoris!ivos! komponena!a i me,uso%na kom%inacija u svru realizacije
-manjenje rizika r!ogonalni sus!avi su u praksi %olje !es!irani) jer je lake !es!ira!i komponen!e s ako locira!i po!encijalne krivce za pro%leme u sus!avu) ispravi!i greku %ez u!jec
sus!ava) zamjeni!i module s grekom ispravnijom implemen!acijom i!d.
Rad u !imu r!ogonalni sus!av ' laka podjela posla %ez preklapanja e7ikasnos!
2/15/16 Razvoj aplikacija u programskom jeziku C#
! l !
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
20/21
r!ogonalnos!
&ako osigura!i or!ogonalnos! Iri!e -J$ code.
-J$ -ingle responsi%ili!@ principle pen/Closed principle iskov su%s!i!u!ion principle Jn!er7ace segrega!ion principle
$ependenc@ inversion principle
2/15/16 Razvoj aplikacija u programskom jeziku C#
7/24/2019 09_-_Razvoj_aplikacija_i_sustava (1)
21/21
And remem%er: KISS>&eep i! simple) s!upidK re%a !e(i!i jednos!avnos!i dizajna ari!ek!ure sus!ava
Everything should be made as simple as possible, but not simpler." This meshould simplify the design of a product and success is achieved when a de
maximum simplicity
Jz%jegava!i nepo!re%nu kompleksnos! sus!ava
2/15/16 Razvoj aplikacija u programskom jeziku C#