09_-_Razvoj_aplikacija_i_sustava (1)

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#